public static void attach(Ctx ctx) { if (!hasContext()) { if (ctx != null) { CTXS.set(ctx); } } else { throw new IllegalStateException("The context was already opened: " + required()); } }
public static Req request() { return Ctxs.required().exchange(); }
public static EntityManager currentEntityManager() { return Ctxs.required().persister(); }
public static void clearUserData(Req req) { if (Ctxs.hasContext()) { Ctxs.required().setUser(UserInfo.ANONYMOUS); } if (req.hasToken()) { Map<String, Serializable> token = req.token(); token.remove(Tokens._USER); token.remove(Tokens._SCOPE); } }
@Override public void authorize(UserInfo user) { Ctxs.required().setUser(user); req.token().put(Tokens._USER, user.username); long ttl = Conf.TOKEN.entry("ttl").or(0); long expiresOn = ttl > 0 ? U.time() + ttl : Long.MAX_VALUE; req.token().put(Tokens._EXPIRES, expiresOn); req.tokenChanged.set(true); }
@Override public Object wrap(final Req req, final HandlerInvocation invocation) throws Exception { TokenAuthData auth = HttpUtils.getAuth(req); String username = auth != null ? auth.user : null; if (U.isEmpty(username)) { HttpUtils.clearUserData(req); } Set<String> roles = userRoles(req, username); Set<String> scope = auth != null ? auth.scope : null; if (U.notEmpty(requiredRoles) && !Secure.hasAnyRole(username, roles, requiredRoles)) { throw new SecurityException("The user doesn't have the required roles!"); } Ctx ctx = Ctxs.required(); ctx.setUser(new UserInfo(username, roles, scope)); return invocation.invoke(); }
public static Req request() { return Ctxs.required().exchange(); }
public static void clearUserData(Req req) { if (Ctxs.hasContext()) { Ctxs.required().setUser(UserInfo.ANONYMOUS); } if (req.hasToken()) { Map<String, Serializable> token = req.token(); token.remove(Tokens._USER); token.remove(Tokens._SCOPE); } }
@Override public Object wrap(final Req req, final HandlerInvocation invocation) throws Exception { TokenAuthData auth = HttpUtils.getAuth(req); String username = auth != null ? auth.user : null; if (U.isEmpty(username)) { HttpUtils.clearUserData(req); } Set<String> roles = userRoles(req, username); Set<String> scope = auth != null ? auth.scope : null; if (U.notEmpty(requiredRoles) && !Secure.hasAnyRole(username, roles, requiredRoles)) { throw new SecurityException("The user doesn't have the required roles!"); } Ctx ctx = Ctxs.required(); ctx.setUser(new UserInfo(username, roles, scope)); return invocation.invoke(); }
@Override public boolean login(String username, String password) { LoginProvider loginProvider = Customization.of(req).loginProvider(); U.must(loginProvider != null, "A login provider wasn't set!"); RolesProvider rolesProvider = Customization.of(req).rolesProvider(); U.must(rolesProvider != null, "A roles provider wasn't set!"); req.tokenChanged.set(true); boolean success; try { success = loginProvider.login(req, username, password); if (success) { Set<String> roles = rolesProvider.getRolesForUser(req, username); long ttl = Conf.TOKEN.entry("ttl").or(0); long expiresOn = ttl > 0 ? U.time() + ttl : Long.MAX_VALUE; UserInfo user = new UserInfo(username, roles, null); Ctxs.required().setUser(user); request().token().put(Tokens._USER, username); request().token().put(Tokens._EXPIRES, expiresOn); } } catch (Throwable e) { throw U.rte("Login error!", e); } return success; }