diff --git a/src/main/java/space/kklochko/spring_rest_example/security/access/AccessPower.java b/src/main/java/space/kklochko/spring_rest_example/security/access/AccessPower.java new file mode 100644 index 0000000..2ee9b5e --- /dev/null +++ b/src/main/java/space/kklochko/spring_rest_example/security/access/AccessPower.java @@ -0,0 +1,29 @@ +package space.kklochko.spring_rest_example.security.access; + +public class AccessPower { + int ADMIN = 2; + int USER = 1; + + public int accessPower(String role) { + if(role.equals("ADMIN")) + return ADMIN | USER; + + if(role.equals("USER")) + return USER; + + return 0; + } + + public boolean isUser(String role) { + int power = accessPower(role); + + return (power & USER) != 0; + } + + public boolean isAdmin(String role) { + int power = accessPower(role); + + return (power & ADMIN) != 0; + } +} + diff --git a/src/main/java/space/kklochko/spring_rest_example/security/access/AuthorizedValidator.java b/src/main/java/space/kklochko/spring_rest_example/security/access/AuthorizedValidator.java new file mode 100644 index 0000000..d4ed8ff --- /dev/null +++ b/src/main/java/space/kklochko/spring_rest_example/security/access/AuthorizedValidator.java @@ -0,0 +1,56 @@ +package space.kklochko.spring_rest_example.security.access; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import space.kklochko.spring_rest_example.db.repositories.TokenRepository; +import space.kklochko.spring_rest_example.db.repositories.UserRepository; +import space.kklochko.spring_rest_example.models.Token; +import space.kklochko.spring_rest_example.models.User; + +@Component +public class AuthorizedValidator { + @Autowired + private UserRepository userRepository; + + @Autowired + private TokenRepository tokenRepository; + + AccessPower accessPower = new AccessPower(); + + public Boolean isUser(String token){ + Token userToken = tokenRepository.read(token); + + if(userToken == null) + return null; + + User user = userRepository.read(userToken.getUsername()); + + if(user == null) + return null; + + return accessPower.isUser(user.getRole()); + } + + public Boolean isAdmin(String token){ + Token userToken = tokenRepository.read(token); + + if(userToken == null) + return null; + + User user = userRepository.read(userToken.getUsername()); + + if(user == null) + return null; + + return accessPower.isAdmin(user.getRole()); + } + + public String noToken(){ + return "Access denied, you have invalid token or no token!!!"; + } + + public String accessDeniedNoPermission(){ + return "Access denied, you have no permission!!!"; + } +} +