diff --git a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala index 1287501..5769701 100644 --- a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala @@ -331,12 +331,17 @@ get("/admin/users")(adminOnly { val includeRemoved = params.get("includeRemoved").map(_.toBoolean).getOrElse(false) - val users = getAllUsers(includeRemoved) - val members = users.collect { case account if(account.isGroupAccount) => - account.userName -> getGroupMembers(account.userName).map(_.userName) - }.toMap + val includeGroups = params.get("includeGroups").map(_.toBoolean).getOrElse(false) + val users = getAllUsers(includeRemoved, includeGroups) + if(includeGroups){ + val members = users.collect { case account if(account.isGroupAccount) => + account.userName -> getGroupMembers(account.userName).map(_.userName) + }.toMap - html.userlist(users, members, includeRemoved) + html.userlist(users, members, includeRemoved, includeGroups) + }else{ + html.userlist(users, Map[String, List[String]](), includeRemoved, includeGroups) + } }) get("/admin/users/_newuser")(adminOnly { diff --git a/src/main/scala/gitbucket/core/service/AccountService.scala b/src/main/scala/gitbucket/core/service/AccountService.scala index 7c3b84c..e5bd0ce 100644 --- a/src/main/scala/gitbucket/core/service/AccountService.scala +++ b/src/main/scala/gitbucket/core/service/AccountService.scala @@ -96,12 +96,19 @@ def getAccountByMailAddress(mailAddress: String, includeRemoved: Boolean = false)(implicit s: Session): Option[Account] = Accounts filter(t => (t.mailAddress.toLowerCase === mailAddress.toLowerCase.bind) && (t.removed === false.bind, !includeRemoved)) firstOption - def getAllUsers(includeRemoved: Boolean = true)(implicit s: Session): List[Account] = - if(includeRemoved){ - Accounts sortBy(_.userName) list - } else { - Accounts filter (_.removed === false.bind) sortBy(_.userName) list - } + def getAllUsers(includeRemoved: Boolean = true, includeGroups: Boolean = true)(implicit s: Session): List[Account] = + { + ((includeRemoved, includeGroups) match { + case (true, true) => + Accounts + case (true, false) => + Accounts filter (_.groupAccount === false.bind) + case (false, true) => + Accounts filter (_.removed === false.bind) + case (false, false) => + Accounts filter (t => t.removed === false.bind && t.groupAccount === false.bind) + }) sortBy(_.userName) list + } def isLastAdministrator(account: Account)(implicit s: Session): Boolean = { if(account.isAdmin){ diff --git a/src/main/twirl/gitbucket/core/admin/userlist.scala.html b/src/main/twirl/gitbucket/core/admin/userlist.scala.html index 71d52c1..131f357 100644 --- a/src/main/twirl/gitbucket/core/admin/userlist.scala.html +++ b/src/main/twirl/gitbucket/core/admin/userlist.scala.html @@ -1,4 +1,4 @@ -@(users: List[gitbucket.core.model.Account], members: Map[String, List[String]], includeRemoved: Boolean)(implicit context: gitbucket.core.controller.Context) +@(users: List[gitbucket.core.model.Account], members: Map[String, List[String]], includeRemoved: Boolean, includeGroups: Boolean)(implicit context: gitbucket.core.controller.Context) @import gitbucket.core.view.helpers @gitbucket.core.html.main("Manage Users"){ @gitbucket.core.admin.html.menu("users"){ @@ -10,6 +10,10 @@ Include removed users + @users.map { account => @@ -63,8 +67,9 @@ }