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(); } }