Refactor authentication.

This commit is contained in:
takezoe
2013-07-03 16:47:47 +09:00
parent 1263b659c6
commit 45f7dc4998
2 changed files with 39 additions and 95 deletions

View File

@@ -22,53 +22,29 @@ trait LabelsControllerBase extends ControllerBase {
"editColor" -> trim(label("Color", text(required, color))) "editColor" -> trim(label("Color", text(required, color)))
)(LabelForm.apply) )(LabelForm.apply)
post("/:owner/:repository/issues/label/new", newForm)(collaboratorsOnly { form => post("/:owner/:repository/issues/label/new", newForm)(collaboratorsOnly { (form, repository) =>
val owner = params("owner") createLabel(repository.owner, repository.name, form.labelName, form.color.substring(1))
val repository = params("repository") redirect("/%s/%s/issues".format(repository.owner, repository.name))
createLabel(owner, repository, form.labelName, form.color.substring(1))
redirect("/%s/%s/issues".format(owner, repository))
}) })
ajaxGet("/:owner/:repository/issues/label/edit")(collaboratorsOnly { ajaxGet("/:owner/:repository/issues/label/edit")(collaboratorsOnly { repository =>
val owner = params("owner") issues.labels.html.editlist(getLabels(repository.owner, repository.name), repository)
val repository = params("repository")
getRepository(owner, repository, baseUrl)
.map(issues.labels.html.editlist(getLabels(owner, repository), _)) getOrElse NotFound()
}) })
ajaxGet("/:owner/:repository/issues/label/:labelId/edit")(collaboratorsOnly { ajaxGet("/:owner/:repository/issues/label/:labelId/edit")(collaboratorsOnly { repository =>
val owner = params("owner") getLabel(repository.owner, repository.name, params("labelId").toInt).map { label =>
val repository = params("repository") issues.labels.html.edit(Some(label), repository)
val labelId = params("labelId").toInt
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
getLabel(owner, repository, labelId).map(label => issues.labels.html.edit(Some(label), repositoryInfo)) getOrElse NotFound()
} getOrElse NotFound() } getOrElse NotFound()
}) })
ajaxPost("/:owner/:repository/issues/label/:labelId/edit", editForm)(collaboratorsOnly { form => ajaxPost("/:owner/:repository/issues/label/:labelId/edit", editForm)(collaboratorsOnly { (form, repository) =>
val owner = params("owner") updateLabel(repository.owner, repository.name, params("labelId").toInt, form.labelName, form.color.substring(1))
val repository = params("repository") issues.labels.html.editlist(getLabels(repository.owner, repository.name), repository)
val labelId = params("labelId").toInt
getRepository(owner, repository, baseUrl).map{ repositoryInfo =>
updateLabel(owner, repository, labelId, form.labelName, form.color.substring(1))
issues.labels.html.editlist(getLabels(owner, repository), repositoryInfo)
} getOrElse NotFound()
}) })
ajaxGet("/:owner/:repository/issues/label/:labelId/delete")(collaboratorsOnly { ajaxGet("/:owner/:repository/issues/label/:labelId/delete")(collaboratorsOnly { repository =>
val owner = params("owner") deleteLabel(repository.owner, repository.name, params("labelId").toInt)
val repository = params("repository") issues.labels.html.editlist(getLabels(repository.owner, repository.name), repository)
val labelId = params("labelId").toInt
getRepository(owner, repository, baseUrl).map { repositoryInfo =>
deleteLabel(owner, repository, labelId)
issues.labels.html.editlist(getLabels(owner, repository), repositoryInfo)
} getOrElse NotFound()
}) })
} }

View File

@@ -21,84 +21,52 @@ trait MilestonesControllerBase extends ControllerBase {
"dueDate" -> trim(label("Due Date", optional(date()))) "dueDate" -> trim(label("Due Date", optional(date())))
)(MilestoneForm.apply) )(MilestoneForm.apply)
get("/:owner/:repository/issues/milestones")(referrersOnly { get("/:owner/:repository/issues/milestones")(referrersOnly { repository =>
val owner = params("owner") issues.milestones.html.list(
val repository = params("repository") params.getOrElse("state", "open"),
val state = params.getOrElse("state", "open") getMilestonesWithIssueCount(repository.owner, repository.name),
repository,
getRepository(owner, repository, baseUrl).map { repositoryInfo => hasWritePermission(repository.owner, repository.name, context.loginAccount))
issues.milestones.html.list(state,
getMilestonesWithIssueCount(owner, repository),
repositoryInfo,
hasWritePermission(owner, repository, context.loginAccount))
} getOrElse NotFound
}) })
get("/:owner/:repository/issues/milestones/new")(collaboratorsOnly { get("/:owner/:repository/issues/milestones/new")(collaboratorsOnly {
val owner = params("owner") issues.milestones.html.edit(None, _)
val repository = params("repository")
getRepository(owner, repository, baseUrl).map(issues.milestones.html.edit(None, _)) getOrElse NotFound
}) })
post("/:owner/:repository/issues/milestones/new", milestoneForm)(collaboratorsOnly { form => post("/:owner/:repository/issues/milestones/new", milestoneForm)(collaboratorsOnly { (form, repository) =>
val owner = params("owner") createMilestone(repository.owner, repository.name, form.title, form.description, form.dueDate)
val repository = params("repository") redirect("/%s/%s/issues/milestones".format(repository.owner, repository.name))
createMilestone(owner, repository, form.title, form.description, form.dueDate)
redirect("/%s/%s/issues/milestones".format(owner, repository))
}) })
get("/:owner/:repository/issues/milestones/:milestoneId/edit")(collaboratorsOnly { get("/:owner/:repository/issues/milestones/:milestoneId/edit")(collaboratorsOnly { repository =>
val owner = params("owner") issues.milestones.html.edit(getMilestone(repository.owner, repository.name, params("milestoneId").toInt), repository)
val repository = params("repository")
val milestoneId = params("milestoneId").toInt
getRepository(owner, repository, baseUrl).map(
issues.milestones.html.edit(getMilestone(owner, repository, milestoneId), _)) getOrElse NotFound
}) })
post("/:owner/:repository/issues/milestones/:milestoneId/edit", milestoneForm)(collaboratorsOnly { form => post("/:owner/:repository/issues/milestones/:milestoneId/edit", milestoneForm)(collaboratorsOnly { (form, repository) =>
val owner = params("owner") getMilestone(repository.owner, repository.name, params("milestoneId").toInt).map { milestone =>
val repository = params("repository")
val milestoneId = params("milestoneId").toInt
getMilestone(owner, repository, milestoneId).map { milestone =>
updateMilestone(milestone.copy(title = form.title, description = form.description, dueDate = form.dueDate)) updateMilestone(milestone.copy(title = form.title, description = form.description, dueDate = form.dueDate))
redirect("/%s/%s/issues/milestones".format(owner, repository)) redirect("/%s/%s/issues/milestones".format(repository.owner, repository.repository))
} getOrElse NotFound } getOrElse NotFound
}) })
get("/:owner/:repository/issues/milestones/:milestoneId/close")(collaboratorsOnly { get("/:owner/:repository/issues/milestones/:milestoneId/close")(collaboratorsOnly { repository =>
val owner = params("owner") getMilestone(repository.owner, repository.name, params("milestoneId").toInt).map { milestone =>
val repository = params("repository")
val milestoneId = params("milestoneId").toInt
getMilestone(owner, repository, milestoneId).map { milestone =>
closeMilestone(milestone) closeMilestone(milestone)
redirect("/%s/%s/issues/milestones".format(owner, repository)) redirect("/%s/%s/issues/milestones".format(repository.owner, repository.name))
} getOrElse NotFound } getOrElse NotFound
}) })
get("/:owner/:repository/issues/milestones/:milestoneId/open")(collaboratorsOnly { get("/:owner/:repository/issues/milestones/:milestoneId/open")(collaboratorsOnly { repository =>
val owner = params("owner") getMilestone(repository.owner, repository.name, params("milestoneId").toInt).map { milestone =>
val repository = params("repository")
val milestoneId = params("milestoneId").toInt
getMilestone(owner, repository, milestoneId).map { milestone =>
openMilestone(milestone) openMilestone(milestone)
redirect("/%s/%s/issues/milestones".format(owner, repository)) redirect("/%s/%s/issues/milestones".format(repository.owner, repository.name))
} getOrElse NotFound } getOrElse NotFound
}) })
get("/:owner/:repository/issues/milestones/:milestoneId/delete")(collaboratorsOnly { get("/:owner/:repository/issues/milestones/:milestoneId/delete")(collaboratorsOnly { repository =>
val owner = params("owner") getMilestone(repository.owner, repository.name, params("milestoneId").toInt).map { milestone =>
val repository = params("repository") deleteMilestone(repository.owner, repository.name, milestone.milestoneId)
val milestoneId = params("milestoneId").toInt redirect("/%s/%s/issues/milestones".format(repository.owner, repository.name))
getMilestone(owner, repository, milestoneId).map { _ =>
deleteMilestone(owner, repository, milestoneId)
redirect("/%s/%s/issues/milestones".format(owner, repository))
} getOrElse NotFound } getOrElse NotFound
}) })