| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package admin
-
- import (
- "net/http"
-
- user_model "code.gitea.io/gitea/models/user"
- api "code.gitea.io/gitea/modules/structs"
- "code.gitea.io/gitea/modules/web"
- "code.gitea.io/gitea/services/context"
- )
-
- // ListUserBadges lists all badges belonging to a user
- func ListUserBadges(ctx *context.APIContext) {
- // swagger:operation GET /admin/users/{username}/badges admin adminListUserBadges
- // ---
- // summary: List a user's badges
- // produces:
- // - application/json
- // parameters:
- // - name: username
- // in: path
- // description: username of the user whose badges are to be listed
- // type: string
- // required: true
- // responses:
- // "200":
- // "$ref": "#/responses/BadgeList"
- // "404":
- // "$ref": "#/responses/notFound"
-
- badges, maxResults, err := user_model.GetUserBadges(ctx, ctx.ContextUser)
- if err != nil {
- ctx.APIErrorInternal(err)
- return
- }
-
- ctx.SetTotalCountHeader(maxResults)
- ctx.JSON(http.StatusOK, &badges)
- }
-
- // AddUserBadges add badges to a user
- func AddUserBadges(ctx *context.APIContext) {
- // swagger:operation POST /admin/users/{username}/badges admin adminAddUserBadges
- // ---
- // summary: Add a badge to a user
- // consumes:
- // - application/json
- // produces:
- // - application/json
- // parameters:
- // - name: username
- // in: path
- // description: username of the user to whom a badge is to be added
- // type: string
- // required: true
- // - name: body
- // in: body
- // schema:
- // "$ref": "#/definitions/UserBadgeOption"
- // responses:
- // "204":
- // "$ref": "#/responses/empty"
- // "403":
- // "$ref": "#/responses/forbidden"
-
- form := web.GetForm(ctx).(*api.UserBadgeOption)
- badges := prepareBadgesForReplaceOrAdd(*form)
-
- if err := user_model.AddUserBadges(ctx, ctx.ContextUser, badges); err != nil {
- ctx.APIErrorInternal(err)
- return
- }
-
- ctx.Status(http.StatusNoContent)
- }
-
- // DeleteUserBadges delete a badge from a user
- func DeleteUserBadges(ctx *context.APIContext) {
- // swagger:operation DELETE /admin/users/{username}/badges admin adminDeleteUserBadges
- // ---
- // summary: Remove a badge from a user
- // produces:
- // - application/json
- // parameters:
- // - name: username
- // in: path
- // description: username of the user whose badge is to be deleted
- // type: string
- // required: true
- // - name: body
- // in: body
- // schema:
- // "$ref": "#/definitions/UserBadgeOption"
- // responses:
- // "204":
- // "$ref": "#/responses/empty"
- // "403":
- // "$ref": "#/responses/forbidden"
- // "422":
- // "$ref": "#/responses/validationError"
-
- form := web.GetForm(ctx).(*api.UserBadgeOption)
- badges := prepareBadgesForReplaceOrAdd(*form)
-
- if err := user_model.RemoveUserBadges(ctx, ctx.ContextUser, badges); err != nil {
- ctx.APIErrorInternal(err)
- return
- }
-
- ctx.Status(http.StatusNoContent)
- }
-
- func prepareBadgesForReplaceOrAdd(form api.UserBadgeOption) []*user_model.Badge {
- badges := make([]*user_model.Badge, len(form.BadgeSlugs))
- for i, badge := range form.BadgeSlugs {
- badges[i] = &user_model.Badge{
- Slug: badge,
- }
- }
- return badges
- }
|