import javax.security.auth.Subject;
import javax.security.auth.x500.X500Principal;
+import org.argeo.api.acr.NamespaceUtils;
import org.argeo.api.cms.CmsConstants;
import org.argeo.api.cms.CmsSession;
import org.argeo.api.cms.CmsSessionId;
return role.implied(currentSubject(), context);
}
+ /** Implies this {@link SystemRole} in this context. */
+ public final static boolean implies(String role, String context) {
+ return SystemRole.implied(NamespaceUtils.parsePrefixedName(role), currentSubject(), context);
+ }
+
/** Executes as the current user */
public final static <T> T doAs(PrivilegedAction<T> action) {
return Subject.doAs(currentSubject(), action);
return CmsContextImpl.getCmsContext().getCmsSessionByUuid(cmsSessionId.getUuid());
}
+ public static boolean isAvailable() {
+ return CurrentSubject.current() != null;
+ }
+
/*
* HELPERS
*/
private static Subject currentSubject() {
- return CurrentSubject.current();
+ Subject subject = CurrentSubject.current();
+ if (subject == null)
+ throw new IllegalStateException("Cannot find related subject");
+ return subject;
}
private static Authorization getAuthorization(Subject subject) {