29 lines
1.0 KiB
Java
29 lines
1.0 KiB
Java
package com.cloudhandson.vpdbackoffice.web;
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
|
import org.springframework.web.bind.annotation.ModelAttribute;
|
|
|
|
@ControllerAdvice
|
|
public class SecurityModelAdvice {
|
|
|
|
@ModelAttribute("canMutate")
|
|
public boolean canMutate() {
|
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
|
if (authentication == null || !authentication.isAuthenticated()) {
|
|
return false;
|
|
}
|
|
return authentication.getAuthorities().stream()
|
|
.map(GrantedAuthority::getAuthority)
|
|
.anyMatch("ROLE_ADMIN"::equals);
|
|
}
|
|
|
|
@ModelAttribute("readOnlyMode")
|
|
public boolean readOnlyMode() {
|
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
|
return authentication != null && authentication.isAuthenticated() && !canMutate();
|
|
}
|
|
}
|