Add user management related APIs

This commit is contained in:
KOUNOIKE
2018-10-13 10:24:34 +09:00
parent 12d41cc3ce
commit 023d150d95
2 changed files with 56 additions and 7 deletions

View File

@@ -0,0 +1,11 @@
package gitbucket.core.api
case class UpdateAUser(
name: String,
email: String,
blog: String,
company: String,
location: String,
hireable: Boolean,
bio: String
)

View File

@@ -1,12 +1,13 @@
package gitbucket.core.controller.api
import gitbucket.core.api.{ApiUser, CreateAUser, JsonFormat}
import gitbucket.core.api.{ApiUser, CreateAUser, JsonFormat, UpdateAUser}
import gitbucket.core.controller.ControllerBase
import gitbucket.core.service.{AccountService, RepositoryService}
import gitbucket.core.util.AdminAuthenticator
import gitbucket.core.util.{AdminAuthenticator, UsersAuthenticator}
import gitbucket.core.util.Implicits._
import org.scalatra.NoContent
trait ApiUserControllerBase extends ControllerBase {
self: RepositoryService with AccountService with AdminAuthenticator =>
self: RepositoryService with AccountService with AdminAuthenticator with UsersAuthenticator =>
/**
* i. Get a single user
@@ -33,6 +34,18 @@ trait ApiUserControllerBase extends ControllerBase {
* iii. Update the authenticated user
* https://developer.github.com/v3/users/#update-the-authenticated-user
*/
patch("/api/v3/user")(usersOnly{
(for{
data <- extractFromJsonBody[UpdateAUser]
} yield {
val updatedAccount = context.loginAccount.get.copy(
mailAddress = data.email,
description = Some(data.bio)
)
updateAccount(updatedAccount)
JsonFormat(ApiUser(updatedAccount))
})
})
/*
* iv. Get contextual information about a user
@@ -43,9 +56,12 @@ trait ApiUserControllerBase extends ControllerBase {
* v. Get all users
* https://developer.github.com/v3/users/#get-all-users
*/
get("/api/v3/users") {
JsonFormat(getAllUsers(false, false).map(a => ApiUser(a)))
}
/*
* ghe: i. Create a new use
* ghe: i. Create a new user
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#create-a-new-user
*/
post("/api/v3/admin/users")(adminOnly {
@@ -69,8 +85,30 @@ trait ApiUserControllerBase extends ControllerBase {
* ghe: vii. Suspend a user
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#suspend-a-user
*/
put("/api/v3/users/:userName/suspended")(adminOnly{
val userName = params("userName")
getAccountByUserName(userName) match {
case Some(targetAccount) =>
removeUserRelatedData(userName)
updateAccount(targetAccount.copy(isRemoved = true))
NoContent()
case None =>
NotFound()
}
})
/*
* ghe: vii. Unsuspend a user
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#unsuspend-a-user
*/
* ghe: vii. Unsuspend a user
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#unsuspend-a-user
*/
delete("/api/v3/users/:userName/suspended")(adminOnly{
val userName = params("userName")
getAccountByUserName(userName) match {
case Some(targetAccount) =>
updateAccount(targetAccount.copy(isRemoved = false))
NoContent()
case None =>
NotFound()
}
})
}