Beispiel #1
0
 /**
  * {@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);
 }
Beispiel #2
0
 /**
  * 토큰 정보를 이용해 생성한 사용자 객체를 {@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);
   }
 }
Beispiel #3
0
  /**
   * 현재 사용자가 선호하는 언어를 갱신한다.
   *
   * <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;
    }
  }