mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-10-30 05:51:16 +00:00
[MODERATION] add user blocking API
- Follow up for: #540, #802 - Add API routes for user blocking from user and organization perspective. - The new routes have integration testing. - The new model functions have unit tests. - Actually quite boring to write and to read this pull request. (cherry picked from commitf3afaf15c7) (cherry picked from commit6d754db3e5) (cherry picked from commitd0fc8bc9d3) (cherry picked from commit9a53b0d1a0) (cherry picked from commit44a2a4fd48) (cherry picked from commit182025db9c) (cherry picked from commit558a35963e)
This commit is contained in:
parent
cdf6318f51
commit
73776d6195
12 changed files with 626 additions and 9 deletions
65
routers/api/v1/utils/block.go
Normal file
65
routers/api/v1/utils/block.go
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
// Copyright 2023 The Forgejo Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
user_service "code.gitea.io/gitea/services/user"
|
||||
)
|
||||
|
||||
// ListUserBlockedUsers lists the blocked users of the provided doer.
|
||||
func ListUserBlockedUsers(ctx *context.APIContext, doer *user_model.User) {
|
||||
count, err := user_model.CountBlockedUsers(ctx, doer.ID)
|
||||
if err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
blockedUsers, err := user_model.ListBlockedUsers(ctx, doer.ID, GetListOptions(ctx))
|
||||
if err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
apiBlockedUsers := make([]*api.BlockedUser, len(blockedUsers))
|
||||
for i, blockedUser := range blockedUsers {
|
||||
apiBlockedUsers[i] = &api.BlockedUser{
|
||||
BlockID: blockedUser.ID,
|
||||
Created: blockedUser.CreatedUnix.AsTime(),
|
||||
}
|
||||
if err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
ctx.SetTotalCountHeader(count)
|
||||
ctx.JSON(http.StatusOK, apiBlockedUsers)
|
||||
}
|
||||
|
||||
// BlockUser blocks the blockUser from the doer.
|
||||
func BlockUser(ctx *context.APIContext, doer, blockUser *user_model.User) {
|
||||
err := user_service.BlockUser(ctx, doer.ID, blockUser.ID)
|
||||
if err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Status(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// UnblockUser unblocks the blockUser from the doer.
|
||||
func UnblockUser(ctx *context.APIContext, doer, blockUser *user_model.User) {
|
||||
err := user_model.UnblockUser(ctx, doer.ID, blockUser.ID)
|
||||
if err != nil {
|
||||
ctx.InternalServerError(err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Status(http.StatusNoContent)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue