Fix change-password dialog, user-edit for admin
This commit is contained in:
@@ -34,7 +34,6 @@ public class User extends PanacheEntity {
|
||||
|
||||
@OneToOne
|
||||
@Getter
|
||||
@Setter
|
||||
private Room room;
|
||||
|
||||
/**
|
||||
@@ -60,4 +59,17 @@ public class User extends PanacheEntity {
|
||||
this.role = role == null ? role : role.toUpperCase();
|
||||
return this;
|
||||
}
|
||||
|
||||
public User setRoom(Room room) {
|
||||
this.room = room;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean hasRoleAdmin() {
|
||||
return "ADMIN".equals(role);
|
||||
}
|
||||
|
||||
public boolean hasRoleUser() {
|
||||
return "USER".equals(role);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
package de.mbremer.secutity;
|
||||
|
||||
import de.mbremer.room.Room;
|
||||
|
||||
import javax.ws.rs.FormParam;
|
||||
|
||||
public class UserForm {
|
||||
public @FormParam("username") String username;
|
||||
public @FormParam("password") String password;
|
||||
public @FormParam("passwordVerify") String passwordVerify;
|
||||
public @FormParam("room") String room;
|
||||
public @FormParam("role") String role;
|
||||
|
||||
public User getUser() {
|
||||
return new User().setUsername(username).setPassword(password).setRole(role);
|
||||
return new User().setUsername(username).setPassword(password).setRole(role)
|
||||
.setRoom((Room) Room.find("name", room).singleResultOptional().orElse(null));
|
||||
}
|
||||
|
||||
public boolean verifyPassword() {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package de.mbremer.secutity;
|
||||
|
||||
import de.mbremer.room.Room;
|
||||
import io.quarkus.panache.common.Sort;
|
||||
import io.quarkus.qute.Location;
|
||||
import io.quarkus.qute.Template;
|
||||
import io.quarkus.qute.TemplateInstance;
|
||||
@@ -28,6 +30,8 @@ public class UserResource {
|
||||
@Inject
|
||||
SecurityIdentity identity;
|
||||
@Inject
|
||||
UserService userService;
|
||||
@Inject
|
||||
Template userinit;
|
||||
@Inject
|
||||
@Location("user.html")
|
||||
@@ -37,10 +41,17 @@ public class UserResource {
|
||||
@Produces(MediaType.TEXT_HTML)
|
||||
@RolesAllowed({"USER", "ADMIN"})
|
||||
public TemplateInstance getUser() {
|
||||
return userTemplate
|
||||
.data("user_count", User.count())
|
||||
.data("current_username", identity.getPrincipal().getName())
|
||||
.data("is_admin", identity.hasRole("ADMIN"));
|
||||
TemplateInstance templateInstance = userTemplate
|
||||
.data("current_username", identity.getPrincipal().getName());
|
||||
|
||||
if (identity.hasRole("ADMIN")) {
|
||||
templateInstance
|
||||
.data("is_admin", true)
|
||||
.data("users", User.listAll(Sort.by("username")))
|
||||
.data("rooms", Room.listAll(Sort.by("name")));
|
||||
}
|
||||
|
||||
return templateInstance;
|
||||
}
|
||||
|
||||
@POST
|
||||
@@ -99,6 +110,38 @@ public class UserResource {
|
||||
User user = userForm.getUser();
|
||||
user.persist();
|
||||
|
||||
return getUser().data("info", "User angelegt.");
|
||||
return getUser().data("info", "User angelegt");
|
||||
}
|
||||
|
||||
@POST
|
||||
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||
@Produces(MediaType.TEXT_HTML)
|
||||
@Transactional
|
||||
@Path("/password")
|
||||
@RolesAllowed({"USER", "ADMIN"})
|
||||
public TemplateInstance changePassword(@MultipartForm UserForm userForm) {
|
||||
if (!userForm.verifyPassword()) {
|
||||
return getUser().data("error", "Das Passwort ist zu kurz oder stimmt nicht mit der Wiederholung überein.");
|
||||
}
|
||||
|
||||
userService.getCurrentUser().setPassword(userForm.password);
|
||||
|
||||
return getUser().data("info", "Passwort aktualisiert");
|
||||
}
|
||||
|
||||
@POST
|
||||
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||
@Produces(MediaType.TEXT_HTML)
|
||||
@Transactional
|
||||
@Path("/update")
|
||||
public TemplateInstance update(@MultipartForm UserForm userForm) {
|
||||
log.info("update");
|
||||
|
||||
Room room = Room.find("name", userForm.room).singleResult();
|
||||
log.info("set room " + room.getName());
|
||||
User user = User.find("username", userForm.username).singleResult();
|
||||
user.setRoom(room);
|
||||
|
||||
return getUser();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user