/** * 전체 사용자 목록을 보여준다. * * <p>when 관리자 페이지의 사용자 관리 * * <p>사이트에 가입된 사용자 목록을 {@code loginId} 로 조회하여 목록을 {@link Page} 형태로 보여준다. 페이징 사이즈는 {@link * User#USER_COUNT_PER_PAGE}를 참조한다. * * @param pageNum pager number * @param loginId loginId * @return the result * @see {@link User#findUsers(int, String)} */ public static Result userList(int pageNum, String query) { String state = StringUtils.defaultIfBlank(request().getQueryString("state"), UserState.ACTIVE.name()); UserState userState = UserState.valueOf(state); Page<User> users = User.findUsers(pageNum - 1, query, userState); return ok(userList.render("title.siteSetting", users, userState, query)); }
/** * 계정을 장금 / 해제한다. * * <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()); }