Example #1
0
  /**
   * 사용자를 삭제한다.
   *
   * <p>when 관리자 페이지 사용자 삭제시
   *
   * @param userId the user id
   * @return the result
   * @see {@link Project#isOnlyManager(Long)}
   */
  @Transactional
  public static Result deleteUser(Long userId) {
    if (User.findByLoginId(session().get("loginId")).isSiteManager()) {
      if (Project.isOnlyManager(userId)) {
        flash(Constants.WARNING, "site.userList.deleteAlert");
      } else {
        User user = User.find.byId(userId);
        for (ProjectUser projectUser : user.projectUser) {
          projectUser.delete();
        }
        user.changeState(UserState.DELETED);
      }
    } else {
      flash(Constants.WARNING, "error.auth.unauthorized.waringMessage");
    }

    return redirect(routes.SiteApp.userList(1, null));
  }
Example #2
0
  /**
   * 대량의 메일목록을 JSON으로 반환한다.
   *
   * <p>when 사이트 관리자페이지의 대량 메일 발송시 사용
   *
   * <p>{@code currentUser} 가 사이트관리자가 아니면 경고메세지와 함께 fobidden을 반환한다. 요청 content-type이
   * application/json이 아니면 {@link Http.Status#NOT_ACCEPTABLE} 을 반환한다. {@code projects}가 null 이면 비어있는
   * json객체를 반환한다. 모두에게 보내기 요청시에는 모든 사용자 목록을 json으로 반환한다. 대상이 특정 프로젝트 멤버일시에는 해당 프로젝트의 멤버를 json으로
   * 반환한다.
   *
   * @return the result
   */
  public static Result mailList() {
    Set<String> emails = new HashSet<>();
    Map<String, String[]> projects = request().body().asFormUrlEncoded();
    if (!UserApp.currentUser().isSiteManager()) {
      return forbidden(ErrorViews.Forbidden.render("error.auth.unauthorized.waringMessage"));
    }

    if (!request().accepts("application/json")) {
      return status(Http.Status.NOT_ACCEPTABLE);
    }

    if (projects == null) {
      return ok(toJson(new HashSet<String>()));
    }

    if (projects.containsKey("all")) {
      if (projects.get("all")[0].equals("true")) {
        for (User user : User.find.findList()) {
          emails.add(user.email);
        }
      }
    } else {
      for (String[] projectNames : projects.values()) {
        String projectName = projectNames[0];
        String[] parts = projectName.split("/");
        String owner = parts[0];
        String name = parts[1];
        Project project = Project.findByOwnerAndProjectName(owner, name);
        for (ProjectUser projectUser : ProjectUser.findMemberListByProject(project.id)) {
          Logger.debug(projectUser.user.email);
          emails.add(projectUser.user.email);
        }
      }
    }

    return ok(toJson(emails));
  }