mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +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
|
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.controller.ControllerBase
|
||||||
import gitbucket.core.service.{AccountService, RepositoryService}
|
import gitbucket.core.service.{AccountService, RepositoryService}
|
||||||
import gitbucket.core.util.AdminAuthenticator
|
import gitbucket.core.util.{AdminAuthenticator, UsersAuthenticator}
|
||||||
import gitbucket.core.util.Implicits._
|
import gitbucket.core.util.Implicits._
|
||||||
|
import org.scalatra.NoContent
|
||||||
|
|
||||||
trait ApiUserControllerBase extends ControllerBase {
|
trait ApiUserControllerBase extends ControllerBase {
|
||||||
self: RepositoryService with AccountService with AdminAuthenticator =>
|
self: RepositoryService with AccountService with AdminAuthenticator with UsersAuthenticator =>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* i. Get a single user
|
* i. Get a single user
|
||||||
@@ -33,6 +34,18 @@ trait ApiUserControllerBase extends ControllerBase {
|
|||||||
* iii. Update the authenticated user
|
* iii. Update the authenticated user
|
||||||
* https://developer.github.com/v3/users/#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
|
* iv. Get contextual information about a user
|
||||||
@@ -43,9 +56,12 @@ trait ApiUserControllerBase extends ControllerBase {
|
|||||||
* v. Get all users
|
* v. Get all users
|
||||||
* https://developer.github.com/v3/users/#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
|
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#create-a-new-user
|
||||||
*/
|
*/
|
||||||
post("/api/v3/admin/users")(adminOnly {
|
post("/api/v3/admin/users")(adminOnly {
|
||||||
@@ -69,8 +85,30 @@ trait ApiUserControllerBase extends ControllerBase {
|
|||||||
* ghe: vii. Suspend a user
|
* ghe: vii. Suspend a user
|
||||||
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#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
|
* ghe: vii. Unsuspend a user
|
||||||
* https://developer.github.com/enterprise/2.14/v3/enterprise-admin/users/#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