Compare commits
No commits in common. 'ccd1edea7ed6080524bdd9bf3f046119bc8c3452' and 'adfcf341769378b2f587cee32b5a9cc9bf414c53' have entirely different histories.
ccd1edea7e
...
adfcf34176
@ -1,44 +0,0 @@
|
|||||||
package space.kklochko.spring_rest_example.interceptors;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.http.HttpMethod;
|
|
||||||
import org.springframework.web.servlet.HandlerInterceptor;
|
|
||||||
import space.kklochko.spring_rest_example.security.access.AuthorizedValidator;
|
|
||||||
|
|
||||||
public class AuthorizedInterceptor implements HandlerInterceptor {
|
|
||||||
@Autowired
|
|
||||||
AuthorizedValidator authorizedValidator;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
||||||
if (request.getMethod().equals(HttpMethod.GET.name())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
String token = request.getHeader("Authorization");
|
|
||||||
|
|
||||||
Boolean accessStatus;
|
|
||||||
|
|
||||||
if (request.getMethod().equals(HttpMethod.DELETE.name())) {
|
|
||||||
accessStatus = authorizedValidator.isAdmin(token);
|
|
||||||
}else {
|
|
||||||
accessStatus = authorizedValidator.isUser(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(accessStatus == null) {
|
|
||||||
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authorizedValidator.noToken());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!accessStatus) {
|
|
||||||
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authorizedValidator.accessDeniedNoPermission());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
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!!!";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Loading…
Reference in new issue