|
|
@@ -11,26 +11,45 @@ import org.springframework.web.bind.annotation.PutMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import org.springframework.web.server.ResponseStatusException;
|
|
|
-import fr.jaquin.bdlg.planner.persistence.CustomUser;
|
|
|
-import fr.jaquin.bdlg.planner.persistence.CustomUserRepository;
|
|
|
+import fr.jaquin.bdlg.planner.persistence.MyUser;
|
|
|
+import fr.jaquin.bdlg.planner.persistence.Role;
|
|
|
+import fr.jaquin.bdlg.planner.persistence.repositories.MyUserRepository;
|
|
|
+import fr.jaquin.bdlg.planner.persistence.repositories.RoleRepository;
|
|
|
|
|
|
@RestController
|
|
|
public class UserController {
|
|
|
|
|
|
|
|
|
- private final CustomUserRepository repositoryUser;
|
|
|
+ private final MyUserRepository repositoryUser;
|
|
|
+ private final RoleRepository roleRepository;
|
|
|
|
|
|
- public UserController(CustomUserRepository repositoryUser) {
|
|
|
+ public UserController(MyUserRepository repositoryUser, RoleRepository roleRepository) {
|
|
|
this.repositoryUser = repositoryUser;
|
|
|
+ this.roleRepository = roleRepository;
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/roles")
|
|
|
+ List<Role> getRoles() {
|
|
|
+ return (List<Role>) roleRepository.findAll();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/roles/current")
|
|
|
+ String[] getActiveRoles(Principal principal) {
|
|
|
+ MyUser u = repositoryUser.findByUsername(principal.getName());
|
|
|
+ if (u == null) {
|
|
|
+ return new String[] {};
|
|
|
+ } else {
|
|
|
+ return u.getRoles().stream().map(r -> r.getName()).toArray(String[]::new);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@GetMapping("/users")
|
|
|
- List<CustomUser> getUsers() {
|
|
|
- return (List<CustomUser>) repositoryUser.findAll();
|
|
|
+ List<MyUser> getUsers() {
|
|
|
+ return (List<MyUser>) repositoryUser.findAll();
|
|
|
}
|
|
|
|
|
|
@PostMapping("/users")
|
|
|
- CustomUser getUsers(@RequestBody CustomUser user) {
|
|
|
+ MyUser getUsers(@RequestBody MyUser user) {
|
|
|
if (repositoryUser.findByUsername(user.getUsername()) == null) {
|
|
|
return repositoryUser.save(user);
|
|
|
} else {
|
|
|
@@ -39,27 +58,35 @@ public class UserController {
|
|
|
}
|
|
|
|
|
|
@PutMapping("/users/{username}")
|
|
|
- void updateUsers(Principal principal, @RequestBody CustomUser user,
|
|
|
- @PathVariable String username) {
|
|
|
- if ((principal.getName() == username)) {
|
|
|
- CustomUser u = repositoryUser.findByUsername(username);
|
|
|
- if (u == null) {
|
|
|
- throw new ResponseStatusException(HttpStatus.NOT_FOUND, "");
|
|
|
- } else {
|
|
|
- u.setEmail(user.getEmail());
|
|
|
- System.out.println("Update pwd: " + user.getPassword());
|
|
|
- u.setPassword(user.getPassword());
|
|
|
- repositoryUser.save(u);
|
|
|
- }
|
|
|
+ MyUser updateUsers(@RequestBody MyUser user, @PathVariable String username) {
|
|
|
+
|
|
|
+ MyUser u = repositoryUser.findByUsername(username);
|
|
|
+ if (u == null) {
|
|
|
+ throw new ResponseStatusException(HttpStatus.NOT_FOUND, "");
|
|
|
+ } else {
|
|
|
+ u.setEmail(user.getEmail());
|
|
|
+ u.setRoles(user.getRoles());
|
|
|
+ return repositoryUser.save(u);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @PutMapping("/users/changePassword/{username}")
|
|
|
+ MyUser updateUsersPassword(@RequestBody MyUser user, @PathVariable String username) {
|
|
|
+
|
|
|
+ MyUser u = repositoryUser.findByUsername(username);
|
|
|
+ if (u == null) {
|
|
|
+ throw new ResponseStatusException(HttpStatus.NOT_FOUND, "");
|
|
|
} else {
|
|
|
- throw new ResponseStatusException(HttpStatus.FORBIDDEN,
|
|
|
- "You are not authorised to modify this user");
|
|
|
+ u.setEmail(user.getEmail());
|
|
|
+ u.setRawPassword(user.getPassword());
|
|
|
+ u.setRoles(user.getRoles());
|
|
|
+ return repositoryUser.save(u);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@DeleteMapping("/users/{username}")
|
|
|
void deleteUsers(@PathVariable String username) {
|
|
|
- CustomUser u = repositoryUser.findByUsername(username);
|
|
|
+ MyUser u = repositoryUser.findByUsername(username);
|
|
|
if (u == null) {
|
|
|
throw new ResponseStatusException(HttpStatus.NO_CONTENT, "The user doesn't exist.");
|
|
|
} else {
|