/** * 로그인 처리 시스템 설정에서 가입승인 기능이 활성화 되어 있고 사용자 상태가 잠금상태(미승인?)라면 계정이 잠겼다는 메시지를 노출하고 로그인 폼으로 돌아감 시스템 설정에서 * 가입승인 기능이 활성화 되어 있지 않다면, 사용자 상태가 잠금상태라도 로그인이 가능하다 (스펙확인 필요) 요청의 정보로 사용자 인증에 성공하면 로그인쿠키를 생성하고 * 로그인유지하기가 선택되었다면, 로그인유지를 위한 쿠키를 별도로 생성한다 인증에 실패하면 관련된 메시지를 노출하고 로그인 폼으로 돌아간다 * * @return */ public static Result login() { Form<User> userForm = form(User.class).bindFromRequest(); if (userForm.hasErrors()) { return badRequest(login.render("title.login", userForm)); } User sourceUser = form(User.class).bindFromRequest().get(); if (isUseSignUpConfirm()) { if (User.findByLoginId(sourceUser.loginId).state == UserState.LOCKED) { flash(Constants.WARNING, "user.locked"); return redirect(routes.UserApp.loginForm()); } } if (User.findByLoginId(sourceUser.loginId).state == UserState.DELETED) { flash(Constants.WARNING, "user.deleted"); return redirect(routes.UserApp.loginForm()); } User authenticate = authenticateWithPlainPassword(sourceUser.loginId, sourceUser.password); if (authenticate != null) { addUserInfoToSession(authenticate); if (sourceUser.rememberMe) { setupRememberMe(authenticate); } return redirect(routes.Application.index()); } flash(Constants.WARNING, "user.login.failed"); return redirect(routes.UserApp.loginForm()); }
/** * 사용자 가입 화면 이동 * * @return */ public static Result signupForm() { if (!UserApp.currentUser().isAnonymous()) { return redirect(routes.Application.index()); } return ok(signup.render("title.signup", form(User.class))); }
/** * 로그인 폼으로 이동 * * @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)); }
/** * Start the workflow run asynchronously. * * @param name The name of the workflow * @return json response containing id */ @Security.Authenticated(Secured.class) public Result runWorkflow(String name) { FormDefinition form = formDefinitionForWorkflow(name); // Process file upload first if present in form data Http.MultipartFormData body = request().body().asMultipartFormData(); for (Object obj : body.getFiles()) { Http.MultipartFormData.FilePart filePart = (Http.MultipartFormData.FilePart) obj; UserUpload userUpload = uploadFile(filePart); BasicField fileInputField = form.getField(filePart.getKey()); fileInputField.setValue(userUpload); } // Set the form definition field values from the request data Map<String, String[]> data = body.asFormUrlEncoded(); for (String key : data.keySet()) { BasicField field = form.getField(key); field.setValue(data.get(key)); } // Transfer form field data to workflow settings map Map<String, Object> settings = new HashMap<>(); for (BasicField field : form.fields) { settings.put(field.name, field.value()); } settings.putAll(settingsFromConfig(form)); // Update the workflow model object and persist to the db Workflow workflow = Workflow.find.where().eq("name", form.name).findUnique(); if (workflow == null) { workflow = new Workflow(); } workflow.name = form.name; workflow.title = form.title; workflow.yamlFile = form.yamlFile; workflow.save(); // Run the workflow ObjectNode response = runYamlWorkflow(form.yamlFile, workflow, settings); return redirect(routes.Application.index()); }
/** * 사용자 가입 처리 입력된 데이터 유효성 검증에 실패하면 bad request 응답 사용자 정보를 저장, 로그인 쿠기 생성 후 메인 페이지로 이동 시스템 설정에서 가입승인 * 기능이 활성화되어 있다면 사용자의 계정 상태를 잠금으로 설정하여 저장, 로그인 쿠키 생성 안됨 * * @return */ 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()); } }
/** * 로그인 처리 시스템 설정에서 가입승인 기능이 활성화 되어 있고 사용자 상태가 잠금상태(미승인?)라면 계정이 잠겼다는 메시지를 노출하고 로그인 폼으로 돌아감 시스템 설정에서 * 가입승인 기능이 활성화 되어 있지 않다면, 사용자 상태가 잠금상태라도 로그인이 가능하다 (스펙확인 필요) 요청의 정보로 사용자 인증에 성공하면 로그인쿠키를 생성하고 * 로그인유지하기가 선택되었다면, 로그인유지를 위한 쿠키를 별도로 생성한다 인증에 실패하면 관련된 메시지를 노출하고 로그인 폼으로 돌아간다 * * @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()); }
/** * 계정을 장금 / 해제한다. * * <p>when 사용자 관리 페이지의 계정 장금/해제 * * <p>세션 {@code loginId} 가 사이트 관리자이고 삭제할 {@code loginId}가 {@code anonymous}가 아니면 계정 장금 또는 해제한후 사용자 * 관리페이지로 리다이렉트한다. 세션 {@code loginId} 가 사이트 관리자이고 삭제할 {@code loginId}가 익명사용자이면 경고메세지와 함께사용자 관리페이지로 * 리다이렉트한다. 세션 {@code loginId} 가 사이트 관리자가 아니면 경고메세지와 함께 Yobi 첫페이지로 리다이렉트한다. * * @param loginId the login id * @return the result */ public static Result toggleAccountLock(String loginId, String state, String query) { String stateParam = StringUtils.defaultIfBlank(state, UserState.ACTIVE.name()); UserState userState = UserState.valueOf(stateParam); if (User.findByLoginId(session().get("loginId")).isSiteManager()) { User targetUser = User.findByLoginId(loginId); if (targetUser.isAnonymous()) { flash(Constants.WARNING, "user.notExists.name"); return redirect(routes.SiteApp.userList(0, null)); } if (targetUser.state == UserState.ACTIVE) { targetUser.changeState(UserState.LOCKED); } else { targetUser.changeState(UserState.ACTIVE); } return ok( userList.render( "title.siteSetting", User.findUsers(0, query, userState), userState, query)); } flash(Constants.WARNING, "error.auth.unauthorized.waringMessage"); return redirect(routes.Application.index()); }
/** * 로그아웃 로그인 유지 기능 해제 메인으로 이동 * * @return */ public static Result logout() { processLogout(); flash(Constants.SUCCESS, "user.logout.success"); return redirect(routes.Application.index()); }