mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-04 20:45:58 +01:00
Add user management related APIs
This commit is contained in:
11
src/main/scala/gitbucket/core/api/UpdateAUser.scala
Normal file
11
src/main/scala/gitbucket/core/api/UpdateAUser.scala
Normal 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
|
||||
)
|
||||
@@ -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()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user