@Override public boolean logout() throws LoginException { if (commited) { stack.pop(); commited = false; } return true; }
@Override public boolean abort() throws LoginException { commited = false; stack.clear(); return true; }
@Override protected LoginStack initialValue() { return new LoginStack(); } };
/** * Gets the name of the currently logged-in principal. * * @return the principal name, or {@code null} if there was no login * @since 8.4 */ protected static String getCurrentPrincipalName() { NuxeoPrincipal p = ClientLoginModule.getCurrentPrincipal(); return p == null ? null : p.getName(); }
@Override public void cleanup() { ClientLoginModule.getThreadLocalLogin().pop(); }
public CleanupCallback propagateUserIdentificationInformation(CachableUserIdentificationInfo cachableUserIdent) { ClientLoginModule.getThreadLocalLogin().push(cachableUserIdent.getPrincipal(), cachableUserIdent.getUserInfo().getPassword().toCharArray(), cachableUserIdent.getLoginContext().getSubject()); return new CleanupCallback() { @Override public void cleanup() { ClientLoginModule.getThreadLocalLogin().pop(); } }; }
/** * Returns the current logged {@link NuxeoPrincipal} from the login stack * * @since 5.6 */ public static NuxeoPrincipal getCurrentPrincipal() { LoginStack.Entry entry = getCurrentLogin(); if (entry != null) { Principal p = entry.getPrincipal(); if (p instanceof NuxeoPrincipal) { return (NuxeoPrincipal) p; } else if (LoginComponent.isSystemLogin(p)) { return new SystemPrincipal(p.getName()); } } return null; }
@Override public boolean commit() throws LoginException { Principal p = null; Object user = sharedState.get("javax.security.auth.login.name"); if (user instanceof Principal) { p = (Principal) user; } else { Set<Principal> principals = subject.getPrincipals(); if (!principals.isEmpty()) { p = principals.iterator().next(); } } if (p != null) { Object credential = sharedState.get("javax.security.auth.login.password"); stack.push(p, credential, subject); commited = true; } return true; }
@Override public CloseableCoreSession createCoreSession(String repositoryName, NuxeoPrincipal principal) { LocalSession session = new LocalSession(repositoryName, principal); sessions.put(session.getSessionId(), new CoreSessionRegistrationInfo(session)); return session; }
@Override public void beforeCompletion() { // insure the connection is closed before commit closeInThisThread(); }
@Override public synchronized void push(Principal principal, Object credential, Subject subject) { stack.add(new Entry(principal, credential, subject)); }
public static LoginStack synchronizedStack() { return new Sync(); }
@Override public boolean hasCreateFromKeyPermission() { NuxeoPrincipal principal = ClientLoginModule.getCurrentPrincipal(); if (principal == null) { return false; } String createFromKeyUsers = properties.getOrDefault(CREATE_FROM_KEY_USERS, EMPTY); String createFromKeyGroups = properties.getOrDefault(CREATE_FROM_KEY_GROUPS, EMPTY); if ("*".equals(createFromKeyUsers) || "*".equals(createFromKeyGroups)) { return true; } List<String> authorizedUsers = Arrays.asList(createFromKeyUsers.split(",")); List<String> authorizedGroups = Arrays.asList(createFromKeyGroups.split(",")); return principal.isAdministrator() || authorizedUsers.contains(principal.getName()) || authorizedGroups.stream().anyMatch(principal::isMemberOf); }
protected static NuxeoPrincipal getPrincipal(String username) { if (username != null) { return new UserPrincipal(username, new ArrayList<>(), false, false); } else { LoginStack.Entry entry = ClientLoginModule.getCurrentLogin(); if (entry != null) { Principal p = entry.getPrincipal(); if (p instanceof NuxeoPrincipal) { return (NuxeoPrincipal) p; } else if (LoginComponent.isSystemLogin(p)) { return new SystemPrincipal(p.getName()); } else { throw new RuntimeException("Unsupported principal: " + p.getClass()); } } else { if (Framework.isTestModeSet()) { return new SystemPrincipal(null); } else { throw new NuxeoException( "Cannot create a CoreSession outside a security context, " + " login() missing."); } } } }
@Override public void afterCompletion(int status) { if (status == Status.STATUS_ROLLEDBACK) { // insure the connection is closed on roll-back also closeInThisThread(); } }
public void push(Principal principal, Object credential, Subject subject) { stack.add(new Entry(principal, credential, subject)); }
protected static NuxeoPrincipal getPrincipal() { return ClientLoginModule.getCurrentPrincipal(); }
@Override public void destroy() { if (log.isDebugEnabled()) { log.debug("Destroying CoreSession: " + sessionId); } closeInThisThread(); }
/** * Returns the tenant id of the logged user if any, {@code null} otherwise. */ protected String getCurrentTenantId() { NuxeoPrincipal principal = ClientLoginModule.getCurrentPrincipal(); return principal != null ? principal.getTenantId() : null; }