From 6d5f6050c301726e4f4ec90a999de977de0409b5 Mon Sep 17 00:00:00 2001 From: Radu Mitoi Date: Sat, 28 Mar 2020 18:54:26 +0200 Subject: [PATCH 1/2] Add user type #25 --- .../nextdoor/authentication/entity/Role.java | 5 ++++ .../nextdoor/authentication/entity/User.java | 25 +++++++++++++------ .../security/entity/UserPrincipal.java | 20 +++++++++------ 3 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 api/src/main/java/com/code4ro/nextdoor/authentication/entity/Role.java 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..3c71f18 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,26 +1,30 @@ package com.code4ro.nextdoor.security.entity; +import java.util.Collection; +import java.util.Collections; +import java.util.UUID; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + import com.code4ro.nextdoor.authentication.entity.User; +import com.code4ro.nextdoor.authentication.entity.Role; 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 From 22bd990038417609696f0528c0e6727d576dfef6 Mon Sep 17 00:00:00 2001 From: Radu Mitoi Date: Sat, 28 Mar 2020 20:23:43 +0200 Subject: [PATCH 2/2] Add user type #25 Handle authorities --- .../code4ro/nextdoor/security/entity/UserPrincipal.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 3c71f18..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 @@ -2,13 +2,15 @@ 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.User; import com.code4ro.nextdoor.authentication.entity.Role; +import com.code4ro.nextdoor.authentication.entity.User; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; @@ -29,7 +31,10 @@ public static UserPrincipal create(final User user) { @Override public Collection getAuthorities() { - return Collections.emptyList(); + if (this.getUserRole() == null) { + return Collections.emptyList(); + } + return List.of(new SimpleGrantedAuthority(this.getUserRole().toString())); } @Override