/** * {@link Http.Context#args} 에 저장된 사용자 객체를 가져온다. 저장된 객체가 없을 경우 {@link UserApp#initTokenUser()} 를 * 호출해서 객체를 생성, 저장한뒤 가져온다. * * @return * @see UserApp#initTokenUser() */ private static User getUserFromContext() { Object cached = Http.Context.current().args.get(TOKEN_USER); if (cached instanceof User) { return (User) cached; } initTokenUser(); return (User) Http.Context.current().args.get(TOKEN_USER); }
/** * 토큰 정보를 이용해 생성한 사용자 객체를 {@link Http.Context#args} 에 저장한다. 생성된 사용자가 {@link User#anonymous} 가 아니고 * 존재하는 세션 정보가 없다면 세션 정보를 생성한다. * * @see UserApp#getUserFromToken() */ public static void initTokenUser() { User user = getUserFromToken(); Http.Context.current().args.put(TOKEN_USER, user); if (!user.isAnonymous() && getUserFromSession().isAnonymous()) { addUserInfoToSession(user); } }
/** * 현재 사용자가 선호하는 언어를 갱신한다. * * <p>쿠키나 Accept-Language HTTP 헤더에 선호하는 언어가 설정되어 있는 경우, 그것을 현재 로그인한 사용자가 선호하는 언어로 설정한다. */ public static void updatePreferredLanguage() { Http.Request request = Http.Context.current().request(); User user = UserApp.currentUser(); if (user.isAnonymous()) { return; } if (request.acceptLanguages().isEmpty() && request.cookie(Play.langCookieName()) == null) { return; } String code = StringUtils.left(Http.Context.current().lang().code(), 255); if (!code.equals(user.lang)) { user.lang = code; user.update(); } }
public F.Promise<Result> call(Http.Context ctx) throws Throwable { try { return delegate.call(ctx); } catch (Exception e) { e.printStackTrace(); StringBuilder sb = new StringBuilder(); sb.append("Error for request at " + ctx.request().uri() + "\n"); sb.append("Headers: \n"); Map<String, String[]> headers = ctx.request().headers(); for (String key : headers.keySet()) { sb.append(" " + key + " --> "); for (String val : headers.get(key)) { sb.append(val + "|||"); } sb.append("\n"); } sb.append("Cookies: \n"); for (Http.Cookie cookie : ctx.request().cookies()) { sb.append(" " + cookie.name() + " --> " + cookie.value() + "\n"); } Http.RequestBody body = ctx.request().body(); Map<String, String[]> body_vals = body.asFormUrlEncoded(); if (body_vals != null) { sb.append("Body (as form URL encoded): \n"); for (String key : body_vals.keySet()) { sb.append(" " + key + " --> "); for (String val : body_vals.get(key)) { sb.append(val + "|||"); } sb.append("\n"); } } Logger.error(sb.toString()); throw e; } }