8
8
"net/http"
9
9
"net/url"
10
10
"strconv"
11
+ "strings"
11
12
12
13
"code.gitea.io/gitea/models/db"
13
14
user_model "code.gitea.io/gitea/models/user"
@@ -22,10 +23,11 @@ import (
22
23
)
23
24
24
25
const (
25
- tplBadges base.TplName = "admin/badge/list"
26
- tplBadgeNew base.TplName = "admin/badge/new"
27
- tplBadgeView base.TplName = "admin/badge/view"
28
- tplBadgeEdit base.TplName = "admin/badge/edit"
26
+ tplBadges base.TplName = "admin/badge/list"
27
+ tplBadgeNew base.TplName = "admin/badge/new"
28
+ tplBadgeView base.TplName = "admin/badge/view"
29
+ tplBadgeEdit base.TplName = "admin/badge/edit"
30
+ tplBadgeUsers base.TplName = "admin/badge/users"
29
31
)
30
32
31
33
// BadgeSearchDefaultAdminSort is the default sort type for admin view
@@ -213,3 +215,67 @@ func DeleteBadge(ctx *context.Context) {
213
215
ctx .Flash .Success (ctx .Tr ("admin.badges.deletion_success" ))
214
216
ctx .Redirect (setting .AppSubURL + "/admin/badges" )
215
217
}
218
+
219
+ func BadgeUsers (ctx * context.Context ) {
220
+ ctx .Data ["Title" ] = ctx .Tr ("admin.badges.users_with_badge" , ctx .ParamsInt64 (":badgeid" ))
221
+ ctx .Data ["PageIsAdminBadges" ] = true
222
+
223
+ users , _ , err := user_model .GetBadgeUsers (ctx , & user_model.Badge {ID : ctx .ParamsInt64 (":badgeid" )})
224
+ if err != nil {
225
+ ctx .ServerError ("GetBadgeUsers" , err )
226
+ return
227
+ }
228
+
229
+ ctx .Data ["Users" ] = users
230
+
231
+ ctx .HTML (http .StatusOK , tplBadgeUsers )
232
+ }
233
+
234
+ // BadgeUsersPost response for actions for user badges
235
+ func BadgeUsersPost (ctx * context.Context ) {
236
+ name := strings .ToLower (ctx .FormString ("user" ))
237
+
238
+ u , err := user_model .GetUserByName (ctx , name )
239
+ if err != nil {
240
+ if user_model .IsErrUserNotExist (err ) {
241
+ ctx .Flash .Error (ctx .Tr ("form.user_not_exist" ))
242
+ ctx .Redirect (setting .AppSubURL + ctx .Req .URL .EscapedPath ())
243
+ } else {
244
+ ctx .ServerError ("GetUserByName" , err )
245
+ }
246
+ return
247
+ }
248
+
249
+ if err = user_model .AddUserBadge (ctx , u , & user_model.Badge {ID : ctx .ParamsInt64 (":badgeid" )}); err != nil {
250
+ if user_model .IsErrBadgeNotExist (err ) {
251
+ ctx .Flash .Error (ctx .Tr ("admin.badges.not_found" ))
252
+ } else {
253
+ ctx .ServerError ("AddUserBadge" , err )
254
+ }
255
+ return
256
+ }
257
+
258
+ ctx .Flash .Success (ctx .Tr ("admin.badges.user_add_success" ))
259
+ ctx .Redirect (setting .AppSubURL + ctx .Req .URL .EscapedPath ())
260
+ }
261
+
262
+ // DeleteBadgeUser delete a badge from a user
263
+ func DeleteBadgeUser (ctx * context.Context ) {
264
+ if user , err := user_model .GetUserByID (ctx , ctx .FormInt64 ("id" )); err != nil {
265
+ if user_model .IsErrUserNotExist (err ) {
266
+ ctx .Flash .Error (ctx .Tr ("form.user_not_exist" ))
267
+ } else {
268
+ ctx .ServerError ("GetUserByName" , err )
269
+ return
270
+ }
271
+ } else {
272
+ if err := user_model .RemoveUserBadge (ctx , user , & user_model.Badge {ID : ctx .ParamsInt64 (":badgeid" )}); err == nil {
273
+ ctx .Flash .Success (ctx .Tr ("admin.badges.user_remove_success" ))
274
+ } else {
275
+ ctx .Flash .Error ("DeleteUser: " + err .Error ())
276
+ return
277
+ }
278
+ }
279
+
280
+ ctx .JSONRedirect (setting .AppSubURL + "/admin/badges/" + ctx .Params (":badgeid" ) + "/users" )
281
+ }
0 commit comments