Fix GroupMember model

This commit is contained in:
Naoki Takezoe
2016-03-06 14:04:27 +09:00
parent cfcd250914
commit b775ce157f
8 changed files with 30 additions and 20 deletions

View File

@@ -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,

View File

@@ -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
)

View File

@@ -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
}

View File

@@ -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

View File

@@ -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)
}

View File

@@ -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()
}

View File

@@ -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){

View File

@@ -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){