mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-05 04:56:02 +01:00
(refs #241)Modify AccountService#getGroupMembers() to returns list of GroupMember instead of Tuple2
This commit is contained in:
@@ -11,6 +11,7 @@ import org.scalatra.i18n.Messages
|
|||||||
import org.eclipse.jgit.api.Git
|
import org.eclipse.jgit.api.Git
|
||||||
import org.eclipse.jgit.lib.{FileMode, Constants}
|
import org.eclipse.jgit.lib.{FileMode, Constants}
|
||||||
import org.eclipse.jgit.dircache.DirCache
|
import org.eclipse.jgit.dircache.DirCache
|
||||||
|
import model.GroupMember
|
||||||
|
|
||||||
class AccountController extends AccountControllerBase
|
class AccountController extends AccountControllerBase
|
||||||
with AccountService with RepositoryService with ActivityService with WikiService with LabelsService
|
with AccountService with RepositoryService with ActivityService with WikiService with LabelsService
|
||||||
@@ -94,8 +95,8 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
|||||||
// Members
|
// Members
|
||||||
case "members" if(account.isGroupAccount) => {
|
case "members" if(account.isGroupAccount) => {
|
||||||
val members = getGroupMembers(account.userName)
|
val members = getGroupMembers(account.userName)
|
||||||
_root_.account.html.members(account, members.map(_._1),
|
_root_.account.html.members(account, members.map(_.userName),
|
||||||
context.loginAccount.exists(x => members.exists { case (userName, isManager) => userName == x.userName && isManager }))
|
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager }))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Repositories
|
// Repositories
|
||||||
@@ -104,7 +105,7 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
|||||||
_root_.account.html.repositories(account,
|
_root_.account.html.repositories(account,
|
||||||
if(account.isGroupAccount) Nil else getGroupsByUserName(userName),
|
if(account.isGroupAccount) Nil else getGroupsByUserName(userName),
|
||||||
getVisibleRepositories(context.loginAccount, baseUrl, Some(userName)),
|
getVisibleRepositories(context.loginAccount, baseUrl, Some(userName)),
|
||||||
context.loginAccount.exists(x => members.exists { case (userName, isManager) => userName == x.userName && isManager }))
|
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager }))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} getOrElse NotFound
|
} getOrElse NotFound
|
||||||
@@ -182,7 +183,7 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get("/groups/new")(usersOnly {
|
get("/groups/new")(usersOnly {
|
||||||
account.html.group(None, List((context.loginAccount.get.userName, true)))
|
account.html.group(None, List(GroupMember("", context.loginAccount.get.userName, true)))
|
||||||
})
|
})
|
||||||
|
|
||||||
post("/groups/new", newGroupForm)(usersOnly { form =>
|
post("/groups/new", newGroupForm)(usersOnly { form =>
|
||||||
@@ -265,8 +266,8 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
|||||||
|
|
||||||
// Add collaborators for group repository
|
// Add collaborators for group repository
|
||||||
if(ownerAccount.isGroupAccount){
|
if(ownerAccount.isGroupAccount){
|
||||||
getGroupMembers(form.owner).foreach { case (userName, isManager) =>
|
getGroupMembers(form.owner).foreach { member =>
|
||||||
addCollaborator(form.owner, form.name, userName)
|
addCollaborator(form.owner, form.name, member.userName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,10 +70,10 @@ trait UserManagementControllerBase extends AccountManagementControllerBase {
|
|||||||
get("/admin/users")(adminOnly {
|
get("/admin/users")(adminOnly {
|
||||||
val includeRemoved = params.get("includeRemoved").map(_.toBoolean).getOrElse(false)
|
val includeRemoved = params.get("includeRemoved").map(_.toBoolean).getOrElse(false)
|
||||||
val users = getAllUsers(includeRemoved)
|
val users = getAllUsers(includeRemoved)
|
||||||
|
|
||||||
val members = users.collect { case account if(account.isGroupAccount) =>
|
val members = users.collect { case account if(account.isGroupAccount) =>
|
||||||
account.userName -> getGroupMembers(account.userName).map(_._1)
|
account.userName -> getGroupMembers(account.userName).map(_.userName)
|
||||||
}.toMap
|
}.toMap
|
||||||
|
|
||||||
admin.users.html.list(users, members, includeRemoved)
|
admin.users.html.list(users, members, includeRemoved)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -181,9 +181,10 @@ trait UserManagementControllerBase extends AccountManagementControllerBase {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
post("/admin/users/_usercheck")(adminOnly {
|
// TODO Move to other generic controller?
|
||||||
|
post("/admin/users/_usercheck"){
|
||||||
getAccountByUserName(params("userName")).isDefined
|
getAccountByUserName(params("userName")).isDefined
|
||||||
})
|
}
|
||||||
|
|
||||||
private def members: Constraint = new Constraint(){
|
private def members: Constraint = new Constraint(){
|
||||||
override def validate(name: String, value: String, messages: Messages): Option[String] = {
|
override def validate(name: String, value: String, messages: Messages): Option[String] = {
|
||||||
|
|||||||
@@ -129,11 +129,10 @@ trait AccountService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def getGroupMembers(groupName: String): List[(String, Boolean)] =
|
def getGroupMembers(groupName: String): List[GroupMember] =
|
||||||
Query(GroupMembers)
|
Query(GroupMembers)
|
||||||
.filter(_.groupName is groupName.bind)
|
.filter(_.groupName is groupName.bind)
|
||||||
.sortBy(_.userName)
|
.sortBy(_.userName)
|
||||||
.map(m => m.userName ~ m.isManager)
|
|
||||||
.list
|
.list
|
||||||
|
|
||||||
def getGroupsByUserName(userName: String): List[String] =
|
def getGroupsByUserName(userName: String): List[String] =
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ trait RepositoryService { self: AccountService =>
|
|||||||
|
|
||||||
private def getRepositoryManagers(userName: String): Seq[String] =
|
private def getRepositoryManagers(userName: String): Seq[String] =
|
||||||
if(getAccountByUserName(userName).exists(_.isGroupAccount)){
|
if(getAccountByUserName(userName).exists(_.isGroupAccount)){
|
||||||
getGroupMembers(userName).filter(_._2).map(_._1)
|
getGroupMembers(userName).collect { case x if(x.isManager) => x.userName }
|
||||||
} else {
|
} else {
|
||||||
Seq(userName)
|
Seq(userName)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ trait OwnerAuthenticator { self: ControllerBase with RepositoryService with Acco
|
|||||||
context.loginAccount match {
|
context.loginAccount match {
|
||||||
case Some(x) if(x.isAdmin) => action(repository)
|
case Some(x) if(x.isAdmin) => action(repository)
|
||||||
case Some(x) if(repository.owner == x.userName) => action(repository)
|
case Some(x) if(repository.owner == x.userName) => action(repository)
|
||||||
case Some(x) if(getGroupMembers(repository.owner).exists {
|
case Some(x) if(getGroupMembers(repository.owner).exists { member =>
|
||||||
case (userName, isManager) => userName == x.userName && isManager == true
|
member.userName == x.userName && member.isManager == true
|
||||||
}) => action(repository)
|
}) => action(repository)
|
||||||
case _ => Unauthorized()
|
case _ => Unauthorized()
|
||||||
}
|
}
|
||||||
@@ -170,7 +170,9 @@ trait GroupManagerAuthenticator { self: ControllerBase with AccountService =>
|
|||||||
{
|
{
|
||||||
defining(request.paths){ paths =>
|
defining(request.paths){ paths =>
|
||||||
context.loginAccount match {
|
context.loginAccount match {
|
||||||
case Some(x) if(getGroupMembers(paths(0)).exists { case (userName, isManager) => userName == x.userName && isManager }) => action
|
case Some(x) if(getGroupMembers(paths(0)).exists { member =>
|
||||||
|
member.userName == x.userName && member.isManager
|
||||||
|
}) => action
|
||||||
case _ => Unauthorized()
|
case _ => Unauthorized()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@(account: Option[model.Account], members: List[(String, Boolean)])(implicit context: app.Context)
|
@(account: Option[model.Account], members: List[model.GroupMember])(implicit context: app.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import view.helpers._
|
@import view.helpers._
|
||||||
@html.main(if(account.isEmpty) "Create group" else "Edit group"){
|
@html.main(if(account.isEmpty) "Create group" else "Edit group"){
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
@helper.html.account("memberName", 200)
|
@helper.html.account("memberName", 200)
|
||||||
<input type="button" class="btn" value="Add" id="addMember"/>
|
<input type="button" class="btn" value="Add" id="addMember"/>
|
||||||
<input type="hidden" id="members" name="members" value="@members.map(x => x._1 + ":" + x._2).mkString(",")"/>
|
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.isManager).mkString(",")"/>
|
||||||
<div>
|
<div>
|
||||||
<span class="error" id="error-members"></span>
|
<span class="error" id="error-members"></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -102,8 +102,8 @@ $(function(){
|
|||||||
return confirm('Once you delete this group, there is no going back.\nAre you sure?');
|
return confirm('Once you delete this group, there is no going back.\nAre you sure?');
|
||||||
});
|
});
|
||||||
|
|
||||||
@members.map { case (userName, isManager) =>
|
@members.map { member =>
|
||||||
addMemberHTML('@userName', @isManager);
|
addMemberHTML('@member.userName', @member.isManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMemberHTML(userName, isManager){
|
function addMemberHTML(userName, isManager){
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@(account: Option[model.Account], members: List[(String, Boolean)])(implicit context: app.Context)
|
@(account: Option[model.Account], members: List[model.GroupMember])(implicit context: app.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import view.helpers._
|
@import view.helpers._
|
||||||
@html.main(if(account.isEmpty) "New Group" else "Update Group"){
|
@html.main(if(account.isEmpty) "New Group" else "Update Group"){
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
@helper.html.account("memberName", 200)
|
@helper.html.account("memberName", 200)
|
||||||
<input type="button" class="btn" value="Add" id="addMember"/>
|
<input type="button" class="btn" value="Add" id="addMember"/>
|
||||||
<input type="hidden" id="members" name="members" value="@members.map(x => x._1 + ":" + x._2).mkString(",")"/>
|
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.isManager).mkString(",")"/>
|
||||||
<div>
|
<div>
|
||||||
<span class="error" id="error-members"></span>
|
<span class="error" id="error-members"></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -97,8 +97,8 @@ $(function(){
|
|||||||
return !(e.keyCode == 13);
|
return !(e.keyCode == 13);
|
||||||
});
|
});
|
||||||
|
|
||||||
@members.map { case (userName, isManager) =>
|
@members.map { member =>
|
||||||
addMemberHTML('@userName', @isManager);
|
addMemberHTML('@member.userName', @member.isManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMemberHTML(userName, isManager){
|
function addMemberHTML(userName, isManager){
|
||||||
|
|||||||
@@ -2,8 +2,9 @@ package service
|
|||||||
|
|
||||||
import org.specs2.mutable.Specification
|
import org.specs2.mutable.Specification
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
import model.GroupMember
|
||||||
|
|
||||||
class AccountServiceServiceSpec extends Specification with ServiceSpecBase {
|
class AccountServiceSpec extends Specification with ServiceSpecBase {
|
||||||
|
|
||||||
"AccountService" should {
|
"AccountService" should {
|
||||||
val RootMailAddress = "root@localhost"
|
val RootMailAddress = "root@localhost"
|
||||||
@@ -65,7 +66,7 @@ class AccountServiceServiceSpec extends Specification with ServiceSpecBase {
|
|||||||
|
|
||||||
AccountService.updateGroupMembers(group1, List((user1, true)))
|
AccountService.updateGroupMembers(group1, List((user1, true)))
|
||||||
|
|
||||||
AccountService.getGroupMembers(group1) must_== List((user1, true))
|
AccountService.getGroupMembers(group1) must_== List(GroupMember(group1, user1, true))
|
||||||
AccountService.getGroupsByUserName(user1) must_== List(group1)
|
AccountService.getGroupsByUserName(user1) must_== List(group1)
|
||||||
|
|
||||||
AccountService.updateGroupMembers(group1, Nil)
|
AccountService.updateGroupMembers(group1, Nil)
|
||||||
Reference in New Issue
Block a user