diff --git a/src/main/scala/app/SettingsController.scala b/src/main/scala/app/SettingsController.scala index aea36c1ca..9fcbdd577 100644 --- a/src/main/scala/app/SettingsController.scala +++ b/src/main/scala/app/SettingsController.scala @@ -2,15 +2,15 @@ package app import service._ import util.Directory._ -import util.OwnerOnlyAuthenticator +import util.{UsersOnlyAuthenticator, OwnerOnlyAuthenticator} import jp.sf.amateras.scalatra.forms._ import org.apache.commons.io.FileUtils class SettingsController extends SettingsControllerBase - with RepositoryService with AccountService with OwnerOnlyAuthenticator + with RepositoryService with AccountService with OwnerOnlyAuthenticator with UsersOnlyAuthenticator trait SettingsControllerBase extends ControllerBase { - self: RepositoryService with AccountService with OwnerOnlyAuthenticator => + self: RepositoryService with AccountService with OwnerOnlyAuthenticator with UsersOnlyAuthenticator => case class OptionsForm(description: Option[String], defaultBranch: String, isPrivate: Boolean) @@ -70,6 +70,14 @@ trait SettingsControllerBase extends ControllerBase { settings.html.collaborators(getCollaborators(owner, repository), _)) getOrElse NotFound }) + /** + * JSON API for collaborator completion. + */ + get("/:owner/:repository/settings/collaborators/proposals")(usersOnly { + contentType = formats("json") + org.json4s.jackson.Serialization.write(Map("options" -> getAllUsers.map(_.userName).toArray)) + }) + /** * Add the collaborator. */ diff --git a/src/main/twirl/settings/collaborators.scala.html b/src/main/twirl/settings/collaborators.scala.html index a174d21fc..c7aef83f9 100644 --- a/src/main/twirl/settings/collaborators.scala.html +++ b/src/main/twirl/settings/collaborators.scala.html @@ -21,3 +21,13 @@ } } + \ No newline at end of file