diff --git a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala index 1287501..65cdd2d 100644 --- a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala +++ b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala @@ -331,12 +331,13 @@ get("/admin/users")(adminOnly { val includeRemoved = params.get("includeRemoved").map(_.toBoolean).getOrElse(false) - val users = getAllUsers(includeRemoved) + val includeGroups = params.get("includeGroups").map(_.toBoolean).getOrElse(false) + val users = getAllUsers(includeRemoved, 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) }) 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..e502236 100644 --- a/src/main/scala/gitbucket/core/service/AccountService.scala +++ b/src/main/scala/gitbucket/core/service/AccountService.scala @@ -96,12 +96,14 @@ 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] = + { + Accounts filter { t => + (1.bind === 1.bind) && + (t.groupAccount === false.bind, !includeGroups) && + (t.removed === false.bind, !includeRemoved) + } 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 +