Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Метод создания менеджера, принимает на вход addRequest существующего пользователя
- * проверяет наличие пользователя в базе, если пользователь не найден выкидывает
- * Exception и
- * @param addRequest payload ManagerAddRequest от пользователя приходит в виде JSON, содержит
- * user_id, Manager_FirstName, Manager_LastName.
- * @param userPrincipal авторизированный пользователь.
- * @return возвращает Response содержащий payload ApiResponse который содержит
- * статус выполнения операции с сообщением в формате JSON.
- */
- @PreAuthorize("hasRole('ADMIN')")
- @PostMapping("/add")
- public ResponseEntity<?> newManager(
- @Valid @RequestBody ManagerAddRequest addRequest,
- @CurrentUser UserPrincipal userPrincipal) {
- boolean isManager;
- Optional<User> userById = userRepo.findById(addRequest.getUserId());
- try {
- isManager = userById.get().getRoles()
- .stream()
- .map(Role::getName)
- .anyMatch(n -> n == RoleName.ROLE_MANAGER);
- } catch (NoSuchElementException e) {
- return new ResponseEntity<>(new ApiResponse(false, "User not found"),
- HttpStatus.NO_CONTENT);
- }
- if (!isManager) {
- Manager manager = new Manager(addRequest.getFirstName(),
- addRequest.getLastName(),
- userById.get(),
- userRepo.findByUsername(userPrincipal.getUsername()).get());
- try {
- managerRepo.save(manager);
- userRepo.save(roleService.addRole(
- userById.get(),
- RoleName.ROLE_MANAGER)
- );
- } catch (Exception e) {
- //todo вставить сюда логирование
- return new ResponseEntity<>(new ApiResponse(false, "Something Shit"),
- HttpStatus.INTERNAL_SERVER_ERROR);
- }
- } else {
- return new ResponseEntity<>(new ApiResponse(false, "User is manager"),
- HttpStatus.EXPECTATION_FAILED);
- }
- return ResponseEntity.ok(new ApiResponse(true, "Manager added"));
- }
Add Comment
Please, Sign In to add comment