diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala
index 361d1e3..d01984a 100644
--- a/src/main/scala/app/IssuesController.scala
+++ b/src/main/scala/app/IssuesController.scala
@@ -110,8 +110,7 @@
val name = repository.name
getIssue(owner, name, params("id")).map { issue =>
- if(hasWritePermission(owner, name, context.loginAccount) ||
- issue.openedUserName == context.loginAccount.get.userName){
+ if(isEditable(owner, name, issue.openedUserName)){
updateIssue(owner, name, issue.issueId, form.title, form.content)
redirect("/%s/%s/issues/_data/%d".format(owner, name, issue.issueId))
} else Unauthorized
@@ -122,15 +121,19 @@
val owner = repository.owner
val name = repository.name
- redirect("/%s/%s/issues/%d#comment-%d".format(
+ getIssue(owner, name, form.issueId.toString).map { issue =>
+ redirect("/%s/%s/issues/%d#comment-%d".format(
owner, name, form.issueId,
createComment(owner, name, context.loginAccount.get.userName,
- form.issueId,
- form.content,
+ form.issueId,
+ form.content,
+ if(isEditable(owner, name, issue.openedUserName)){
params.get("action") filter { action =>
updateClosed(owner, name, form.issueId, if(action == "close") true else false) > 0
- })
- ))
+ }
+ } else None)
+ ))
+ }
})
ajaxPost("/:owner/:repository/issue_comments/edit/:id", commentForm)(readableUsersOnly { (form, repository) =>
@@ -138,8 +141,7 @@
val name = repository.name
getComment(owner, name, params("id")).map { comment =>
- if(hasWritePermission(owner, name, context.loginAccount) ||
- comment.commentedUserName == context.loginAccount.get.userName){
+ if(isEditable(owner, name, comment.commentedUserName)){
updateComment(comment.commentId, form.content)
redirect("/%s/%s/issue_comments/_data/%d".format(owner, name, comment.commentId))
} else Unauthorized
@@ -148,8 +150,7 @@
ajaxGet("/:owner/:repository/issues/_data/:id")(readableUsersOnly { repository =>
getIssue(repository.owner, repository.name, params("id")) map { x =>
- if(hasWritePermission(x.userName, x.repositoryName, context.loginAccount) ||
- x.openedUserName == context.loginAccount.get.userName){
+ if(isEditable(x.userName, x.repositoryName, x.openedUserName)){
params.get("dataType") collect {
case t if t == "html" => issues.html.editissue(
x.title, x.content, x.issueId, x.userName, x.repositoryName)
@@ -167,8 +168,7 @@
ajaxGet("/:owner/:repository/issue_comments/_data/:id")(readableUsersOnly { repository =>
getComment(repository.owner, repository.name, params("id")) map { x =>
- if(hasWritePermission(x.userName, x.repositoryName, context.loginAccount) ||
- x.commentedUserName == context.loginAccount.get.userName){
+ if(isEditable(x.userName, x.repositoryName, x.commentedUserName)){
params.get("dataType") collect {
case t if t == "html" => issues.html.editcomment(
x.content, x.commentId, x.userName, x.repositoryName)
@@ -209,6 +209,9 @@
Ok("updated")
})
+ private def isEditable(owner: String, repository: String, author: String)(implicit context: app.Context): Boolean =
+ hasWritePermission(owner, repository, context.loginAccount) || author == context.loginAccount.get.userName
+
private def searchIssues(filter: String, repository: RepositoryService.RepositoryInfo) = {
val owner = repository.owner
val repoName = repository.name
diff --git a/src/main/twirl/issues/issue.scala.html b/src/main/twirl/issues/issue.scala.html
index 9906813..54af7dc 100644
--- a/src/main/twirl/issues/issue.scala.html
+++ b/src/main/twirl/issues/issue.scala.html
@@ -104,7 +104,9 @@
-
+ @if(hasWritePermission || issue.openedUserName == loginAccount.get.userName){
+
+ }
}