Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Transactional(readOnly = true)
- public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
- return new UserDTO(
- userRepository.findByEmailAddress(email)
- .orElseThrow(() -> new UsernameNotFoundException("User '" + email + "' not found."))
- );
- }
- @Entity
- @Table(name = "USERS")
- @NoArgsConstructor
- @AllArgsConstructor
- @Getter
- @Setter
- @Builder
- public class User extends BaseEntity {
- private String firstName;
- private String lastName;
- private String emailAddress;
- private String nickname;
- private String password;
- private boolean accountNonExpired;
- private boolean accountNonLocked;
- private boolean credentialsNonExpired;
- private boolean enabled;
- @ManyToMany
- @JoinTable(
- name = "USER_ROLE",
- joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
- inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
- private Set<Role> roles;
- public Set<Role> getRoles() {
- return roles;
- }
- }
- @Getter
- @Setter
- @NoArgsConstructor
- public class UserDTO implements UserDetails {
- private Long id;
- private String firstName;
- private String lastName;
- private String username;
- private String nickname;
- private String password;
- private Set<RoleDTO> authorities;
- private boolean accountNonExpired;
- private boolean accountNonLocked;
- private boolean credentialsNonExpired;
- private boolean enabled;
- public UserDTO(User user){
- this.id = user.getId();
- this.firstName = user.getFirstName();
- this.lastName = user.getLastName();
- this.username = user.getEmailAddress();
- this.nickname = user.getNickname();
- this.password = user.getPassword();
- this.authorities = user.getRoles().stream().map(RoleDTO::new).collect(Collectors.toSet());
- this.accountNonExpired = user.isAccountNonExpired();
- this.accountNonLocked = user.isAccountNonLocked();
- this.credentialsNonExpired = user.isCredentialsNonExpired();
- this.enabled = user.isEnabled();
- }
- }
- INSERT INTO PUBLIC.ROLES(ID, VERSION, AUTHORITY) VALUES
- (1, 0, 'ROLE_USER'),
- (2, 0, 'ROLE_MODERATOR'),
- (3, 0, 'ROLE_ADMIN');
- @PostMapping
- @ResponseStatus(HttpStatus.CREATED)
- public UserSimpleDTO createUser(@RequestBody UserDTO user){
- return userService.createUser(user);
- }
- @GetMapping("/{id}")
- @ResponseStatus(HttpStatus.OK)
- public UserSimpleDTO getUserGeneralData(@PathVariable long id){
- return userService.getUserGeneralData(id);
- }
- @GetMapping("/{id}/details")
- @ResponseStatus(HttpStatus.OK)
- @RolesAllowed("ROLE_MODERATOR")
- public UserDTO getUserDetailedInfo(@PathVariable long id) {
- return userService.getUserDetailedInfo(id);
- }
- @Entity
- @Table(name = "ROLES")
- @Getter
- @NoArgsConstructor
- public class Role extends BaseEntity implements GrantedAuthority {
- private String authority;
- }
- @Getter
- @NoArgsConstructor
- public class RoleDTO implements GrantedAuthority {
- private String authority;
- public RoleDTO(Role role){
- this.authority = role.getAuthority();
- }
- }
Add Comment
Please, Sign In to add comment