diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/FilterUtils.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/FilterUtils.java index 6ae93786379b0e9ba843a70d2002c6a34db352ff..9d2482cfa77986ea7ab7b556d175d45b619ae4c1 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/FilterUtils.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/FilterUtils.java @@ -28,11 +28,16 @@ import com.nimbusds.jose.crypto.RSASSAVerifier; import com.nimbusds.jwt.SignedJWT; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; +import net.jami.jams.common.dao.StatementElement; +import net.jami.jams.common.dao.StatementList; import net.jami.jams.common.objects.user.AccessLevel; +import net.jami.jams.common.objects.user.User; +import net.jami.jams.common.serialization.tomcat.TomcatCustomErrorHandler; import java.util.Date; -import static net.jami.jams.server.Server.userAuthenticationModule; +import static net.jami.jams.server.Server.*; +import static net.jami.jams.server.Server.certificateAuthority; import static net.jami.jams.server.servlets.api.auth.login.AuthRequestProcessor.processUsernamePasswordAuth; @Slf4j @@ -79,6 +84,14 @@ public class FilterUtils { default: return false; } + StatementList statementList = new StatementList(); + StatementElement statementElement = new StatementElement("username", "=", token.getJWTClaimsSet().getSubject(), ""); + statementList.addStatement(statementElement); + User user = dataStore.getUserDao().getObjects(statementList).get(0); + if(certificateAuthority.getLatestCRL().get() != null) { + if(!user.getAccessLevelName().equals("ADMIN") && certificateAuthority.getLatestCRL().get().getRevokedCertificate(user.getCertificate().getSerialNumber()) != null) + return false; + } JWSVerifier jwsVerifier = new RSASSAVerifier(userAuthenticationModule.getAuthModulePubKey()); if (token.verify(jwsVerifier) && verifyValidity(token)) { request.setAttribute(USERNAME_ATTR, token.getJWTClaimsSet().getSubject()); diff --git a/userguide/src/mkpdfs-mkdocs-plugin b/userguide/src/mkpdfs-mkdocs-plugin index 07c2164ab829656f1e08c7eebf4fe683011e9fa2..655bea6fd66933876e5b93bca63f430935aa6b5b 160000 --- a/userguide/src/mkpdfs-mkdocs-plugin +++ b/userguide/src/mkpdfs-mkdocs-plugin @@ -1 +1 @@ -Subproject commit 07c2164ab829656f1e08c7eebf4fe683011e9fa2 +Subproject commit 655bea6fd66933876e5b93bca63f430935aa6b5b