Example #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);
 }
Example #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);
   }
 }
Example #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();
    }
  }