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 @@ ...@@ -11,6 +11,8 @@
package edu.kit.scc.webreg.bean.admin; package edu.kit.scc.webreg.bean.admin;
import java.io.Serializable; import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.RequestScoped; import jakarta.enterprise.context.RequestScoped;
...@@ -19,6 +21,8 @@ import jakarta.inject.Named; ...@@ -19,6 +21,8 @@ import jakarta.inject.Named;
import edu.kit.scc.webreg.entity.AdminUserEntity; import edu.kit.scc.webreg.entity.AdminUserEntity;
import edu.kit.scc.webreg.service.AdminUserService; 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; import edu.kit.scc.webreg.util.ViewIds;
@Named("addAdminUserBean") @Named("addAdminUserBean")
...@@ -32,12 +36,28 @@ public class AddAdminUserBean implements Serializable { ...@@ -32,12 +36,28 @@ public class AddAdminUserBean implements Serializable {
private AdminUserEntity entity; private AdminUserEntity entity;
@Inject
private FacesMessageGenerator messageGenerator;
@Inject
private PasswordUtil passwordUtil;
@PostConstruct @PostConstruct
public void init() { public void init() {
entity = service.createNew(); entity = service.createNew();
} }
public String save() { 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); entity = service.save(entity);
return ViewIds.SHOW_ADMIN_USER + "?id=" + entity.getId() + "&faces-redirect=true"; return ViewIds.SHOW_ADMIN_USER + "?id=" + entity.getId() + "&faces-redirect=true";
} }
......
...@@ -23,6 +23,8 @@ import jakarta.faces.event.ComponentSystemEvent; ...@@ -23,6 +23,8 @@ import jakarta.faces.event.ComponentSystemEvent;
import jakarta.faces.view.ViewScoped; import jakarta.faces.view.ViewScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.inject.Named; import jakarta.inject.Named;
import lombok.Getter;
import lombok.Setter;
import org.primefaces.event.TransferEvent; import org.primefaces.event.TransferEvent;
import org.primefaces.model.DualListModel; import org.primefaces.model.DualListModel;
...@@ -53,16 +55,33 @@ public class ShowAdminUserBean implements Serializable { ...@@ -53,16 +55,33 @@ public class ShowAdminUserBean implements Serializable {
@Inject @Inject
private PasswordUtil passwordUtil; private PasswordUtil passwordUtil;
@Getter
@Setter
private AdminUserEntity entity; private AdminUserEntity entity;
@Getter
@Setter
private DualListModel<RoleEntity> roleList; private DualListModel<RoleEntity> roleList;
@Getter
@Setter
private Long id; private Long id;
@Getter
@Setter
private String newPassword; private String newPassword;
private Boolean hashPassword;
@Getter
@Setter
private String[] hashMethod; private String[] hashMethod;
@Getter
@Setter
private String selectedHashMethod; private String selectedHashMethod;
@Getter
@Setter
private boolean selected = true;
public void preRenderView(ComponentSystemEvent ev) { public void preRenderView(ComponentSystemEvent ev) {
if (entity == null) { if (entity == null) {
...@@ -79,6 +98,7 @@ public class ShowAdminUserBean implements Serializable { ...@@ -79,6 +98,7 @@ public class ShowAdminUserBean implements Serializable {
fillHashMethod(); fillHashMethod();
selectedHashMethod = hashMethod[0]; selectedHashMethod = hashMethod[0];
setSelected(true);
} }
} }
...@@ -94,7 +114,10 @@ public class ShowAdminUserBean implements Serializable { ...@@ -94,7 +114,10 @@ public class ShowAdminUserBean implements Serializable {
for (Service service : provider.getServices()) { for (Service service : provider.getServices()) {
if (service.getType().equals("MessageDigest")) { 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 { ...@@ -123,7 +146,7 @@ public class ShowAdminUserBean implements Serializable {
if (newPassword != null) { if (newPassword != null) {
newPassword = newPassword.trim(); newPassword = newPassword.trim();
if (hashPassword) { if (selected) {
try { try {
String hash = passwordUtil.generatePassword(selectedHashMethod, newPassword); String hash = passwordUtil.generatePassword(selectedHashMethod, newPassword);
entity.setPassword(hash); entity.setPassword(hash);
...@@ -146,60 +169,5 @@ public class ShowAdminUserBean implements Serializable { ...@@ -146,60 +169,5 @@ public class ShowAdminUserBean implements Serializable {
entity = adminUserService.save(entity); entity = adminUserService.save(entity);
entity = adminUserService.findByIdWithAttrs(id, AdminUserEntity_.roles); 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 @@ ...@@ -67,16 +67,13 @@
<div id="panelInline" style="margin-top: 8px;"> <div id="panelInline" style="margin-top: 8px;">
<p:panel id="pwPanel" header="#{messages.password}" collapsed="true" toggleable="true"> <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"> <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}:"/> <h:outputText value="#{messages.new_password}:"/>
<p:inputText value="#{showAdminUserBean.newPassword}"/> <p:inputText value="#{showAdminUserBean.newPassword}"/>
<h:outputText value="#{messages.hash_password}:"/> <h:outputText value="#{messages.hash_password}:"/>
<h:panelGroup> <h:panelGroup>
<p:selectBooleanCheckbox value="#{showAdminUserBean.hashPassword}"/> <p:selectBooleanCheckbox value="#{showAdminUserBean.selected}" />
<p:selectOneMenu value="#{showAdminUserBean.selectedHashMethod}" style="margin-left: 8px;"> <p:selectOneMenu value="#{showAdminUserBean.selectedHashMethod}" style="margin-left: 8px;">
<f:selectItems value="#{showAdminUserBean.hashMethod}"/> <f:selectItems value="#{showAdminUserBean.hashMethod}"/>
</p:selectOneMenu> </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