diff --git a/api/src/main/java/com/code4ro/nextdoor/authentication/entity/Role.java b/api/src/main/java/com/code4ro/nextdoor/authentication/entity/Role.java new file mode 100644 index 0000000..45a9708 --- /dev/null +++ b/api/src/main/java/com/code4ro/nextdoor/authentication/entity/Role.java @@ -0,0 +1,5 @@ +package com.code4ro.nextdoor.authentication.entity; + +public enum Role { + REGULAR, PUBLIC_AUTHORITY, PUBLIC_UTILITY +} diff --git a/api/src/main/java/com/code4ro/nextdoor/authentication/entity/User.java b/api/src/main/java/com/code4ro/nextdoor/authentication/entity/User.java index abd7350..8934d43 100644 --- a/api/src/main/java/com/code4ro/nextdoor/authentication/entity/User.java +++ b/api/src/main/java/com/code4ro/nextdoor/authentication/entity/User.java @@ -1,21 +1,30 @@ package com.code4ro.nextdoor.authentication.entity; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + import com.code4ro.nextdoor.core.entity.BaseEntity; -import lombok.AllArgsConstructor; + import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import javax.persistence.Column; -import javax.persistence.Entity; - @Entity @Getter @Setter @NoArgsConstructor -@AllArgsConstructor public class User extends BaseEntity { - @Column(unique = true) - private String email; - private String password; + @Column(unique = true) + private String email; + private String password; + + @Enumerated(EnumType.STRING) + private Role role; + + public User(String email, String password) { + this.email = email; + this.password = password; + } } diff --git a/api/src/main/java/com/code4ro/nextdoor/security/entity/UserPrincipal.java b/api/src/main/java/com/code4ro/nextdoor/security/entity/UserPrincipal.java index 77f566c..bb8a8de 100644 --- a/api/src/main/java/com/code4ro/nextdoor/security/entity/UserPrincipal.java +++ b/api/src/main/java/com/code4ro/nextdoor/security/entity/UserPrincipal.java @@ -1,31 +1,40 @@ package com.code4ro.nextdoor.security.entity; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.UUID; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import com.code4ro.nextdoor.authentication.entity.Role; import com.code4ro.nextdoor.authentication.entity.User; import com.fasterxml.jackson.annotation.JsonIgnore; + import lombok.AllArgsConstructor; import lombok.Getter; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.userdetails.UserDetails; - -import java.util.Collection; -import java.util.Collections; -import java.util.UUID; @Getter @AllArgsConstructor public class UserPrincipal implements UserDetails { private UUID id; - private String email; + private String email; @JsonIgnore private String password; + private Role userRole; public static UserPrincipal create(final User user) { - return new UserPrincipal(user.getId(), user.getEmail(), user.getPassword()); + return new UserPrincipal(user.getId(), user.getEmail(), user.getPassword(), user.getRole()); } @Override public Collection getAuthorities() { - return Collections.emptyList(); + if (this.getUserRole() == null) { + return Collections.emptyList(); + } + return List.of(new SimpleGrantedAuthority(this.getUserRole().toString())); } @Override