mirror of
https://github.com/gitbucket/gitbucket.git
synced 2026-05-08 23:27:43 +02:00
Fix GroupMember model
This commit is contained in:
@@ -125,7 +125,7 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
||||
case "members" if(account.groupAccount) => {
|
||||
val members = getGroupMembers(account.userName)
|
||||
gitbucket.core.account.html.members(account, members.map(_.userName),
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager }))
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.manager }))
|
||||
}
|
||||
|
||||
// Repositories
|
||||
@@ -134,7 +134,7 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
||||
gitbucket.core.account.html.repositories(account,
|
||||
if(account.groupAccount) Nil else getGroupsByUserName(userName),
|
||||
getVisibleRepositories(context.loginAccount, Some(userName)),
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager }))
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.manager }))
|
||||
}
|
||||
}
|
||||
} getOrElse NotFound
|
||||
@@ -431,7 +431,7 @@ trait AccountControllerBase extends AccountManagementControllerBase {
|
||||
case _: List[String] =>
|
||||
val managerPermissions = groups.map { group =>
|
||||
val members = getGroupMembers(group)
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.isManager })
|
||||
context.loginAccount.exists(x => members.exists { member => member.userName == x.userName && member.manager })
|
||||
}
|
||||
helper.html.forkrepository(
|
||||
repository,
|
||||
|
||||
@@ -8,13 +8,13 @@ trait GroupMemberComponent { self: Profile =>
|
||||
class GroupMembers(tag: Tag) extends Table[GroupMember](tag, "GROUP_MEMBER") {
|
||||
val groupName = column[String]("GROUP_NAME", O PrimaryKey)
|
||||
val userName = column[String]("USER_NAME", O PrimaryKey)
|
||||
val isManager = column[Boolean]("MANAGER")
|
||||
def * = (groupName, userName, isManager) <> (GroupMember.tupled, GroupMember.unapply)
|
||||
val manager = column[Boolean]("MANAGER")
|
||||
def * = (groupName, userName, manager) <> (GroupMember.tupled, GroupMember.unapply)
|
||||
}
|
||||
}
|
||||
|
||||
case class GroupMember(
|
||||
groupName: String,
|
||||
userName: String,
|
||||
isManager: Boolean
|
||||
manager: Boolean
|
||||
)
|
||||
|
||||
@@ -80,13 +80,23 @@ trait AccountService {
|
||||
}
|
||||
|
||||
def getAccountByUserName(userName: String, includeRemoved: Boolean = false): Option[Account] = {
|
||||
db.run(
|
||||
if(includeRemoved) {
|
||||
quote { (userName: String) => query[Account].filter { t => t.userName == userName } }
|
||||
} else {
|
||||
quote { (userName: String) => query[Account].filter { t => t.userName == userName && t.removed == false }}
|
||||
val r = db.run(
|
||||
quote { (userName: String, includeRemoved: Boolean) =>
|
||||
query[Account].filter { t =>
|
||||
if(includeRemoved){
|
||||
t.userName == userName
|
||||
} else {
|
||||
t.userName == userName && t.removed == false
|
||||
}
|
||||
}
|
||||
}
|
||||
)(userName).headOption
|
||||
)(userName, includeRemoved).headOption
|
||||
|
||||
println("************")
|
||||
println(r)
|
||||
println("************")
|
||||
|
||||
r
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ object ProtectedBranchService {
|
||||
includeAdministrators: Boolean) extends AccountService with CommitStatusService {
|
||||
|
||||
def isAdministrator(pusher: String)(implicit session: Session): Boolean =
|
||||
pusher == owner || getGroupMembers(owner).filter(gm => gm.userName == pusher && gm.isManager).nonEmpty
|
||||
pusher == owner || getGroupMembers(owner).filter(gm => gm.userName == pusher && gm.manager).nonEmpty
|
||||
|
||||
/**
|
||||
* Can't be force pushed
|
||||
|
||||
@@ -298,7 +298,7 @@ trait RepositoryService { self: AccountService =>
|
||||
|
||||
private def getRepositoryManagers(userName: String)(implicit s: Session): Seq[String] =
|
||||
if(getAccountByUserName(userName).exists(_.groupAccount)){
|
||||
getGroupMembers(userName).collect { case x if(x.isManager) => x.userName }
|
||||
getGroupMembers(userName).collect { case x if(x.manager) => x.userName }
|
||||
} else {
|
||||
Seq(userName)
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ trait OwnerAuthenticator { self: ControllerBase with RepositoryService with Acco
|
||||
case Some(x) if(x.administrator) => action(repository)
|
||||
case Some(x) if(repository.owner == x.userName) => action(repository)
|
||||
case Some(x) if(getGroupMembers(repository.owner).exists { member =>
|
||||
member.userName == x.userName && member.isManager == true
|
||||
member.userName == x.userName && member.manager == true
|
||||
}) => action(repository)
|
||||
case _ => Unauthorized()
|
||||
}
|
||||
@@ -171,7 +171,7 @@ trait GroupManagerAuthenticator { self: ControllerBase with AccountService =>
|
||||
defining(request.paths){ paths =>
|
||||
context.loginAccount match {
|
||||
case Some(x) if(getGroupMembers(paths(0)).exists { member =>
|
||||
member.userName == x.userName && member.isManager
|
||||
member.userName == x.userName && member.manager
|
||||
}) => action
|
||||
case _ => Unauthorized()
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
</ul>
|
||||
@helper.html.account("memberName", 200)
|
||||
<input type="button" class="btn btn-default" value="Add" id="addMember"/>
|
||||
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.isManager).mkString(",")"/>
|
||||
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.manager).mkString(",")"/>
|
||||
<div>
|
||||
<span class="error" id="error-members"></span>
|
||||
</div>
|
||||
@@ -103,7 +103,7 @@ $(function(){
|
||||
});
|
||||
|
||||
@members.map { member =>
|
||||
addMemberHTML('@member.userName', @member.isManager);
|
||||
addMemberHTML('@member.userName', @member.manager);
|
||||
}
|
||||
|
||||
function addMemberHTML(userName, isManager){
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
</ul>
|
||||
@helper.html.account("memberName", 200)
|
||||
<input type="button" class="btn btn-default" value="Add" id="addMember"/>
|
||||
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.isManager).mkString(",")"/>
|
||||
<input type="hidden" id="members" name="members" value="@members.map(member => member.userName + ":" + member.manager).mkString(",")"/>
|
||||
<div>
|
||||
<span class="error" id="error-members"></span>
|
||||
</div>
|
||||
@@ -98,7 +98,7 @@ $(function(){
|
||||
});
|
||||
|
||||
@members.map { member =>
|
||||
addMemberHTML('@member.userName', @member.isManager);
|
||||
addMemberHTML('@member.userName', @member.manager);
|
||||
}
|
||||
|
||||
function addMemberHTML(userName, isManager){
|
||||
|
||||
Reference in New Issue
Block a user