/** Run function <code>f</code> within the context. */ public <A> A runInContext(Supplier<A> f) { final Organization prevOrg = sec.getOrganization(); // workaround: if no organization is bound to the current thread sec.getUser() will throw a NPE final User prevUser = prevOrg != null ? sec.getUser() : null; sec.setOrganization(org); sec.setUser(user); try { return f.get(); } finally { sec.setOrganization(prevOrg); sec.setUser(prevUser); } }
/** Get a user of a certain organization by its ID. */ public static Option<User> getUserOfOrganization(SecurityService sec, OrganizationDirectoryService orgDir, String orgId, UserDirectoryService userDir, String userId) { final Organization prevOrg = sec.getOrganization(); try { final Organization org = orgDir.getOrganization(orgId); sec.setOrganization(org); return option(userDir.loadUser(userId)); } catch (NotFoundException e) { return none(); } finally { sec.setOrganization(prevOrg); } }
return; securityService.setOrganization(org); securityService.setOrganization(null); securityService.setUser(null); securityService.setUserIP(null);
/** * Run function <code>f</code> in the context described by the given organization and user. * * @param sec * Security service to use for getting data * @param org * Organization to switch to * @param user * User to switch to * @param fn * Function to execute */ public static void runAs(SecurityService sec, Organization org, User user, Runnable fn) { final Organization prevOrg = sec.getOrganization(); final User prevUser = prevOrg != null ? sec.getUser() : null; sec.setOrganization(org); sec.setUser(user); try { fn.run(); } finally { sec.setOrganization(prevOrg); sec.setUser(prevUser); } }
/** * Get a user and an organization. Only returns something if both elements can be determined. */ public static Option<Tuple<User, Organization>> getUserAndOrganization(SecurityService sec, OrganizationDirectoryService orgDir, String orgId, UserDirectoryService userDir, String userId) { final Organization prevOrg = sec.getOrganization(); try { final Organization org = orgDir.getOrganization(orgId); sec.setOrganization(org); return option(userDir.loadUser(userId)).fmap(new Function<User, Tuple<User, Organization>>() { @Override public Tuple<User, Organization> apply(User user) { return tuple(user, org); } }); } catch (NotFoundException e) { return none(); } finally { sec.setOrganization(prevOrg); } }
securityService.setOrganization(requestedOrganization); logger.trace("Switching to organization '{}' from request header {}", requestedOrganization.getId(), ORGANIZATION_HEADER); securityService.setOrganization(originalOrganization); securityService.setUser(originalUser);
Organization organization = organizationDirectoryService.getOrganization(job.getOrganization()); securityService.setUser(creator); securityService.setOrganization(organization); if (Status.QUEUED.equals(job.getStatus())) { job.setStatus(Status.DISPATCHING); securityService.setOrganization(null);
try { organization = organizationDirectoryService.getOrganization(creatorOrganization); securityService.setOrganization(organization); } catch (NotFoundException e) { logger.debug("Skipping dispatching of job for non-existing organization '{}'", creatorOrganization); } finally { securityService.setUser(null); securityService.setOrganization(null);
@Override public Void call() throws Exception { final SecurityService securityService = getSecurityService(); final ServiceRegistry serviceRegistry = getServiceRegistry(); final Job jobBeforeProcessing = serviceRegistry.getJob(jobId); if (currentJobId.isSome()) serviceRegistry.setCurrentJob(serviceRegistry.getJob(currentJobId.get())); final Organization organization = getOrganizationDirectoryService() .getOrganization(jobBeforeProcessing.getOrganization()); securityService.setOrganization(organization); final User user = getUserDirectoryService().loadUser(jobBeforeProcessing.getCreator()); securityService.setUser(user); try { final String payload = process(jobBeforeProcessing); handleSuccessfulProcessing(payload); } catch (Throwable t) { handleFailedProcessing(t); } finally { serviceRegistry.setCurrentJob(null); securityService.setUser(null); securityService.setOrganization(null); } return null; }