mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-10-24 02:52:37 +00:00
- 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)
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
// 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)
|
|
}
|