Пример #1
0
  /**
   * 사용자 가입 화면 이동
   *
   * @return
   */
  public static Result signupForm() {
    if (!UserApp.currentUser().isAnonymous()) {
      return redirect(routes.Application.index());
    }

    return ok(signup.render("title.signup", form(User.class)));
  }
Пример #2
0
  /**
   * 로그인 폼으로 이동
   *
   * @return
   */
  public static Result loginForm() {
    if (!UserApp.currentUser().isAnonymous()) {
      return redirect(routes.Application.index());
    }

    String redirectUrl = request().getQueryString("redirectUrl");
    String loginFormUrl = routes.UserApp.loginForm().url();
    String referer = request().getHeader("Referer");
    if (StringUtils.isEmpty(redirectUrl) && !StringUtils.equals(loginFormUrl, referer)) {
      redirectUrl = request().getHeader("Referer");
    }
    return ok(login.render("title.login", form(User.class), redirectUrl));
  }
Пример #3
0
 /**
  * 사용자 가입 처리 입력된 데이터 유효성 검증에 실패하면 bad request 응답 사용자 정보를 저장, 로그인 쿠기 생성 후 메인 페이지로 이동 시스템 설정에서 가입승인
  * 기능이 활성화되어 있다면 사용자의 계정 상태를 잠금으로 설정하여 저장, 로그인 쿠키 생성 안됨
  *
  * @return
  */
 @Transactional
 public static Result newUser() {
   Form<User> newUserForm = form(User.class).bindFromRequest();
   validate(newUserForm);
   if (newUserForm.hasErrors()) {
     return badRequest(signup.render("title.signup", newUserForm));
   } else {
     User user = createNewUser(newUserForm.get());
     if (user.state == UserState.LOCKED) {
       flash(Constants.INFO, "user.signup.requested");
     } else {
       addUserInfoToSession(user);
     }
     return redirect(routes.Application.index());
   }
 }
Пример #4
0
  /**
   * 로그인 처리 시스템 설정에서 가입승인 기능이 활성화 되어 있고 사용자 상태가 잠금상태(미승인?)라면 계정이 잠겼다는 메시지를 노출하고 로그인 폼으로 돌아감 시스템 설정에서
   * 가입승인 기능이 활성화 되어 있지 않다면, 사용자 상태가 잠금상태라도 로그인이 가능하다 (스펙확인 필요) 요청의 정보로 사용자 인증에 성공하면 로그인쿠키를 생성하고
   * 로그인유지하기가 선택되었다면, 로그인유지를 위한 쿠키를 별도로 생성한다 인증에 실패하면 관련된 메시지를 노출하고 로그인 폼으로 돌아간다
   *
   * @return
   */
  public static Result login() {
    Form<User> userForm = form(User.class).bindFromRequest();
    if (userForm.hasErrors()) {
      return badRequest(login.render("title.login", userForm, null));
    }
    User sourceUser = form(User.class).bindFromRequest().get();

    Map<String, String[]> params = request().body().asFormUrlEncoded();
    String redirectUrl = HttpUtil.getFirstValueFromQuery(params, "redirectUrl");

    String loginFormUrl = routes.UserApp.loginForm().absoluteURL(request());
    loginFormUrl += "?redirectUrl=" + redirectUrl;

    if (isUseSignUpConfirm()) {
      if (User.findByLoginId(sourceUser.loginId).state == UserState.LOCKED) {
        flash(Constants.WARNING, "user.locked");
        return redirect(loginFormUrl);
      }
    }

    if (User.findByLoginId(sourceUser.loginId).state == UserState.DELETED) {
      flash(Constants.WARNING, "user.deleted");
      return redirect(loginFormUrl);
    }

    User authenticate = authenticateWithPlainPassword(sourceUser.loginId, sourceUser.password);

    if (authenticate != null) {
      addUserInfoToSession(authenticate);
      if (sourceUser.rememberMe) {
        setupRememberMe(authenticate);
      }

      authenticate.lang = play.mvc.Http.Context.current().lang().code();
      authenticate.update();

      if (StringUtils.isEmpty(redirectUrl)) {
        return redirect(routes.Application.index());
      } else {
        return redirect(redirectUrl);
      }
    }

    flash(Constants.WARNING, "user.login.failed");
    return redirect(routes.UserApp.loginForm());
  }