Skip to content
Snippets Groups Projects
Commit bec0bd97 authored by Haykuhi Musheghyan's avatar Haykuhi Musheghyan
Browse files

Merge branch 'feature/ISSUE-230_rework-unhashed-admin-password-visibility' into 'main'

rework-unhashed-admin-password-visibility

Closes #230

See merge request !100
parents ed7b016b 4a07a0e0
No related branches found
No related tags found
1 merge request!100rework-unhashed-admin-password-visibility
......@@ -11,6 +11,8 @@
package edu.kit.scc.webreg.bean.admin;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.RequestScoped;
......@@ -19,6 +21,8 @@ import jakarta.inject.Named;
import edu.kit.scc.webreg.entity.AdminUserEntity;
import edu.kit.scc.webreg.service.AdminUserService;
import edu.kit.scc.webreg.service.reg.PasswordUtil;
import edu.kit.scc.webreg.util.FacesMessageGenerator;
import edu.kit.scc.webreg.util.ViewIds;
@Named("addAdminUserBean")
......@@ -32,12 +36,28 @@ public class AddAdminUserBean implements Serializable {
private AdminUserEntity entity;
@Inject
private FacesMessageGenerator messageGenerator;
@Inject
private PasswordUtil passwordUtil;
@PostConstruct
public void init() {
entity = service.createNew();
}
public String save() {
try {
String hash = passwordUtil.generatePassword("SHA-512/256", entity.getPassword());
entity.setPassword(hash);
} catch (NoSuchAlgorithmException e) {
messageGenerator.addResolvedErrorMessage("failure",
"failure_details", true);
} catch (UnsupportedEncodingException e) {
messageGenerator.addResolvedErrorMessage("failure",
"failure_details", true);
}
entity = service.save(entity);
return ViewIds.SHOW_ADMIN_USER + "?id=" + entity.getId() + "&faces-redirect=true";
}
......
......@@ -23,6 +23,8 @@ import jakarta.faces.event.ComponentSystemEvent;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import lombok.Getter;
import lombok.Setter;
import org.primefaces.event.TransferEvent;
import org.primefaces.model.DualListModel;
......@@ -53,16 +55,33 @@ public class ShowAdminUserBean implements Serializable {
@Inject
private PasswordUtil passwordUtil;
@Getter
@Setter
private AdminUserEntity entity;
@Getter
@Setter
private DualListModel<RoleEntity> roleList;
@Getter
@Setter
private Long id;
@Getter
@Setter
private String newPassword;
private Boolean hashPassword;
@Getter
@Setter
private String[] hashMethod;
@Getter
@Setter
private String selectedHashMethod;
@Getter
@Setter
private boolean selected = true;
public void preRenderView(ComponentSystemEvent ev) {
if (entity == null) {
......@@ -79,6 +98,7 @@ public class ShowAdminUserBean implements Serializable {
fillHashMethod();
selectedHashMethod = hashMethod[0];
setSelected(true);
}
}
......@@ -94,7 +114,10 @@ public class ShowAdminUserBean implements Serializable {
for (Service service : provider.getServices()) {
if (service.getType().equals("MessageDigest")) {
algoList.add(service.getAlgorithm());
if (service.getAlgorithm().equals("SHA-512/256"))
algoList.add(0, service.getAlgorithm());
else
algoList.add(service.getAlgorithm());
}
}
......@@ -123,7 +146,7 @@ public class ShowAdminUserBean implements Serializable {
if (newPassword != null) {
newPassword = newPassword.trim();
if (hashPassword) {
if (selected) {
try {
String hash = passwordUtil.generatePassword(selectedHashMethod, newPassword);
entity.setPassword(hash);
......@@ -146,60 +169,5 @@ public class ShowAdminUserBean implements Serializable {
entity = adminUserService.save(entity);
entity = adminUserService.findByIdWithAttrs(id, AdminUserEntity_.roles);
}
public AdminUserEntity getEntity() {
return entity;
}
public void setEntity(AdminUserEntity entity) {
this.entity = entity;
}
public DualListModel<RoleEntity> getRoleList() {
return roleList;
}
public void setRoleList(DualListModel<RoleEntity> roleList) {
this.roleList = roleList;
}
public String getNewPassword() {
return newPassword;
}
public void setNewPassword(String newPassword) {
this.newPassword = newPassword;
}
public Boolean getHashPassword() {
return hashPassword;
}
public void setHashPassword(Boolean hashPassword) {
this.hashPassword = hashPassword;
}
public String[] getHashMethod() {
return hashMethod;
}
public void setHashMethod(String[] hashMethod) {
this.hashMethod = hashMethod;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getSelectedHashMethod() {
return selectedHashMethod;
}
public void setSelectedHashMethod(String selectedHashMethod) {
this.selectedHashMethod = selectedHashMethod;
}
}
......@@ -67,16 +67,13 @@
<div id="panelInline" style="margin-top: 8px;">
<p:panel id="pwPanel" header="#{messages.password}" collapsed="true" toggleable="true">
<p:panelGrid id="pwBaseData" columns="2" layout="flex" columnClasses="col-12 md:col-3 xl:col-3, col-12 md:col-9 xl:col-9">
<h:outputText value="#{messages.password}:"/>
<h:outputText value="#{showAdminUserBean.entity.password}"/>
<h:outputText value="#{messages.new_password}:"/>
<p:inputText value="#{showAdminUserBean.newPassword}"/>
<h:outputText value="#{messages.hash_password}:"/>
<h:panelGroup>
<p:selectBooleanCheckbox value="#{showAdminUserBean.hashPassword}"/>
<p:selectBooleanCheckbox value="#{showAdminUserBean.selected}" />
<p:selectOneMenu value="#{showAdminUserBean.selectedHashMethod}" style="margin-left: 8px;">
<f:selectItems value="#{showAdminUserBean.hashMethod}"/>
</p:selectOneMenu>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment