Допилил админку пользователей, теперь доступны все поля
This commit is contained in:
parent
a28e35797b
commit
2365d240cb
@ -73,6 +73,11 @@ public class AdminUserController {
|
||||
userEditDTO.setId(userEntity.getId());
|
||||
userEditDTO.setUsername(userEntity.getUsername());
|
||||
userEditDTO.setRole(userEntity.getRole());
|
||||
userEditDTO.setName(userEntity.getName());
|
||||
userEditDTO.setSurname(userEntity.getSurname());
|
||||
userEditDTO.setCity(userEntity.getCity());
|
||||
userEditDTO.setBirthday(userEntity.getBirthday());
|
||||
userEditDTO.setStatus(userEntity.getStatus());
|
||||
|
||||
model.addAttribute(USER_ATTRIBUTE, userEditDTO);
|
||||
model.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
@ -91,6 +96,34 @@ public class AdminUserController {
|
||||
return USER_EDIT_VIEW;
|
||||
}
|
||||
|
||||
UserEntity userEntity;
|
||||
|
||||
if (userEditDTO.getId() == null) {
|
||||
userEntity = new UserEntity();
|
||||
} else {
|
||||
userEntity = userService.get(userEditDTO.getId());
|
||||
}
|
||||
|
||||
userEntity.setUsername(userEditDTO.getUsername());
|
||||
userEntity.setRole(userEditDTO.getRole());
|
||||
userEntity.setName(userEditDTO.getName());
|
||||
userEntity.setSurname(userEditDTO.getSurname());
|
||||
userEntity.setCity(userEditDTO.getCity());
|
||||
userEntity.setBirthday(userEditDTO.getBirthday());
|
||||
userEntity.setStatus(userEditDTO.getStatus());
|
||||
|
||||
if (userEditDTO.getPassword() != null && userEditDTO.getPassword() != "") {
|
||||
userEntity.setPassword(userEditDTO.getPassword());
|
||||
}
|
||||
|
||||
if (userService.checkUserWithSameUsernameExist(userEntity)) {
|
||||
bindingResult.rejectValue("username", "userEdit:username", "Пользователь с таким логином уже есть");
|
||||
model.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
userEditDTO.setPasswordConfirm(null);
|
||||
model.addAttribute(USER_ATTRIBUTE, userEditDTO);
|
||||
return USER_EDIT_VIEW;
|
||||
}
|
||||
|
||||
if (userEditDTO.getId() == null && (userEditDTO.getPassword() == null || userEditDTO.getPassword() == "")) {
|
||||
bindingResult.rejectValue("password", "userEdit:passwords", "Укажите пароль");
|
||||
model.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
@ -109,21 +142,6 @@ public class AdminUserController {
|
||||
|
||||
redirectAttributes.addAttribute(PAGE_ATTRIBUTE, page);
|
||||
|
||||
UserEntity userEntity;
|
||||
|
||||
if (userEditDTO.getId() == null) {
|
||||
userEntity = new UserEntity();
|
||||
} else {
|
||||
userEntity = userService.get(userEditDTO.getId());
|
||||
}
|
||||
|
||||
userEntity.setUsername(userEditDTO.getUsername());
|
||||
userEntity.setRole(userEditDTO.getRole());
|
||||
|
||||
if (userEditDTO.getPassword() != null && userEditDTO.getPassword() != "") {
|
||||
userEntity.setPassword(userEditDTO.getPassword());
|
||||
}
|
||||
|
||||
if (userEditDTO.getId() == null) {
|
||||
userService.create(userEntity);
|
||||
} else {
|
||||
|
@ -1,7 +1,12 @@
|
||||
package com.example.nekontakte.users.api;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import com.example.nekontakte.users.model.UserRole;
|
||||
|
||||
import groovyjarjarantlr4.v4.runtime.misc.NotNull;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
|
||||
@ -15,8 +20,23 @@ public class UserEditDTO {
|
||||
|
||||
private String passwordConfirm;
|
||||
|
||||
@NotNull
|
||||
@NotBlank
|
||||
private UserRole role;
|
||||
|
||||
private String name;
|
||||
|
||||
private String surname;
|
||||
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private Date birthday;
|
||||
|
||||
private String city;
|
||||
|
||||
private String avatarImg;
|
||||
|
||||
private String status;
|
||||
|
||||
public UserRole getRole() {
|
||||
return role;
|
||||
}
|
||||
@ -56,4 +76,52 @@ public class UserEditDTO {
|
||||
public void setPasswordConfirm(String passwordConfirm) {
|
||||
this.passwordConfirm = passwordConfirm;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getSurname() {
|
||||
return surname;
|
||||
}
|
||||
|
||||
public void setSurname(String surname) {
|
||||
this.surname = surname;
|
||||
}
|
||||
|
||||
public Date getBirthday() {
|
||||
return birthday;
|
||||
}
|
||||
|
||||
public void setBirthday(Date birthday) {
|
||||
this.birthday = birthday;
|
||||
}
|
||||
|
||||
public String getCity() {
|
||||
return city;
|
||||
}
|
||||
|
||||
public void setCity(String city) {
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public String getAvatarImg() {
|
||||
return avatarImg;
|
||||
}
|
||||
|
||||
public void setAvatarImg(String avatarImg) {
|
||||
this.avatarImg = avatarImg;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
}
|
||||
|
@ -21,13 +21,17 @@ import java.util.stream.StreamSupport;
|
||||
public class UserService implements UserDetailsService {
|
||||
private final UserRepository repository;
|
||||
|
||||
private boolean checkUserWithSameUsernameExist(String username) {
|
||||
public boolean checkUserWithSameUsernameExist(String username) {
|
||||
return repository.findByUsernameIgnoreCase(username).isPresent();
|
||||
}
|
||||
|
||||
private boolean checkUserWithSameUsernameExist(UserEntity user) {
|
||||
public boolean checkUserWithSameUsernameExist(UserEntity user) {
|
||||
var existUser = repository.findByUsernameIgnoreCase(user.getUsername());
|
||||
return existUser.isPresent() && (int) existUser.get().getId() != (int) user.getId();
|
||||
if (existUser.isEmpty())
|
||||
return false;
|
||||
if (user.getId() == null)
|
||||
return true;
|
||||
return (int) existUser.get().getId() != (int) user.getId();
|
||||
}
|
||||
|
||||
public UserService(UserRepository repository) {
|
||||
|
@ -10,12 +10,12 @@
|
||||
<form action="#" th:action="@{/admin/users/edit(page=${page})}" th:object="${user}" method="post">
|
||||
<input type="hidden" th:field="*{id}" id="id" class="form-control" readonly>
|
||||
<div class="mb-3">
|
||||
<label for="username" class="form-label">Имя пользователя</label>
|
||||
<label for="username" class="form-label">Логин*</label>
|
||||
<input type="text" th:field="*{username}" id="username" class="form-control">
|
||||
<div th:if="${#fields.hasErrors('username')}" th:errors="*{username}" class="invalid-feedback"></div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="userRole" class="form-label">Роль в системе</label>
|
||||
<label for="userRole" class="form-label">Роль в системе*</label>
|
||||
<select th:field="*{role}" id="userRole" class="form-control">
|
||||
<option
|
||||
th:each="userRoleOpt : ${T(com.example.nekontakte.users.model.UserRole).values()}"
|
||||
@ -34,6 +34,26 @@
|
||||
<input type="password" th:field="*{passwordConfirm}" id="passwordConfirm" class="form-control">
|
||||
<div th:if="${#fields.hasErrors('passwordConfirm')}" th:errors="*{passwordConfirm}" class="invalid-feedback"></div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="name" class="form-label">Имя</label>
|
||||
<input type="text" th:field="*{name}" id="name" class="form-control">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="surname" class="form-label">Имя пользователя</label>
|
||||
<input type="text" th:field="*{surname}" id="surname" class="form-control">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="birthday" class="form-label">Дата рождения</label>
|
||||
<input type="date" th:field="*{birthday}" id="birthday" class="form-control">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="city" class="form-label">Место проживания</label>
|
||||
<input type="text" th:field="*{city}" id="city" class="form-control">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="status" class="form-label">Статус</label>
|
||||
<input type="text" th:field="*{status}" id="status" class="form-control">
|
||||
</div>
|
||||
<button class="btn btn-success me-3" type="submit">Применить</button>
|
||||
<a th:href="@{/admin/users(page=${page})}" class="btn btn-danger" >Отмена</a>
|
||||
</form>
|
||||
|
Loading…
Reference in New Issue
Block a user