@@ -21,6 +21,8 @@ import (
21
21
"encoding/json"
22
22
"errors"
23
23
"fmt"
24
+ "github.com/devtron-labs/devtron/pkg/auth/user/helper"
25
+ "github.com/gorilla/schema"
24
26
"net/http"
25
27
"strconv"
26
28
"strings"
@@ -44,12 +46,10 @@ type UserRestHandler interface {
44
46
GetById (w http.ResponseWriter , r * http.Request )
45
47
GetAll (w http.ResponseWriter , r * http.Request )
46
48
DeleteUser (w http.ResponseWriter , r * http.Request )
47
- GetAllDetailedUsers (w http.ResponseWriter , r * http.Request )
48
49
FetchRoleGroupById (w http.ResponseWriter , r * http.Request )
49
50
CreateRoleGroup (w http.ResponseWriter , r * http.Request )
50
51
UpdateRoleGroup (w http.ResponseWriter , r * http.Request )
51
52
FetchRoleGroups (w http.ResponseWriter , r * http.Request )
52
- FetchDetailedRoleGroups (w http.ResponseWriter , r * http.Request )
53
53
FetchRoleGroupsByName (w http.ResponseWriter , r * http.Request )
54
54
DeleteRoleGroup (w http.ResponseWriter , r * http.Request )
55
55
CheckUserRoles (w http.ResponseWriter , r * http.Request )
@@ -210,20 +210,13 @@ func (handler UserRestHandlerImpl) UpdateUser(w http.ResponseWriter, r *http.Req
210
210
// RBAC enforcer applying
211
211
token := r .Header .Get ("token" )
212
212
213
- if userInfo .EmailId == "admin" {
214
- userInfo .EmailId = "admin@github.com/devtron-labs"
215
- }
216
213
err = handler .validator .Struct (userInfo )
217
214
if err != nil {
218
215
handler .logger .Errorw ("validation err, UpdateUser" , "err" , err , "payload" , userInfo )
219
216
common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
220
217
return
221
218
}
222
219
223
- if userInfo .EmailId == "admin@github.com/devtron-labs" {
224
- userInfo .EmailId = "admin"
225
- }
226
-
227
220
res , rolesChanged , groupsModified , restrictedGroups , err := handler .userService .UpdateUser (& userInfo , token , handler .CheckManagerAuth )
228
221
229
222
if err != nil {
@@ -309,6 +302,7 @@ func (handler UserRestHandlerImpl) GetById(w http.ResponseWriter, r *http.Reques
309
302
}
310
303
311
304
func (handler UserRestHandlerImpl ) GetAll (w http.ResponseWriter , r * http.Request ) {
305
+ var decoder = schema .NewDecoder ()
312
306
userId , err := handler .userService .GetLoggedInUser (r )
313
307
if userId == 0 || err != nil {
314
308
common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
@@ -362,35 +356,16 @@ func (handler UserRestHandlerImpl) GetAll(w http.ResponseWriter, r *http.Request
362
356
common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
363
357
return
364
358
}
365
- res , err := handler .userService .GetAll ()
359
+ req := & bean.FetchListingRequest {}
360
+ err = decoder .Decode (req , r .URL .Query ())
366
361
if err != nil {
367
- handler .logger .Errorw ("service err, GetAll" , "err" , err )
368
- common .WriteJsonResp (w , err , "Failed to Get" , http .StatusInternalServerError )
369
- return
370
- }
371
-
372
- common .WriteJsonResp (w , err , res , http .StatusOK )
373
- }
374
-
375
- func (handler UserRestHandlerImpl ) GetAllDetailedUsers (w http.ResponseWriter , r * http.Request ) {
376
- userId , err := handler .userService .GetLoggedInUser (r )
377
- if userId == 0 || err != nil {
378
- common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
379
- return
380
- }
381
-
382
- token := r .Header .Get ("token" )
383
- isActionUserSuperAdmin := false
384
- if ok := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionGet , "*" ); ok {
385
- isActionUserSuperAdmin = true
386
- }
387
- if ! isActionUserSuperAdmin {
388
- common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
362
+ handler .logger .Errorw ("request err, GetAll" , "err" , err , "payload" , req )
363
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
389
364
return
390
365
}
391
- res , err := handler .userService .GetAllDetailedUsers ( )
366
+ res , err := handler .userService .GetAllWithFilters ( req )
392
367
if err != nil {
393
- handler .logger .Errorw ("service err, GetAllDetailedUsers " , "err" , err )
368
+ handler .logger .Errorw ("service err, GetAll " , "err" , err )
394
369
common .WriteJsonResp (w , err , "Failed to Get" , http .StatusInternalServerError )
395
370
return
396
371
}
@@ -451,7 +426,15 @@ func (handler UserRestHandlerImpl) DeleteUser(w http.ResponseWriter, r *http.Req
451
426
}
452
427
}
453
428
//RBAC enforcer Ends
454
-
429
+ //validation
430
+ validated := helper .CheckIfUserDevtronManaged (int32 (id ))
431
+ if ! validated {
432
+ err = & util.ApiError {Code : "400" , HttpStatusCode : 400 , UserMessage : "cannot delete system or admin user" }
433
+ handler .logger .Errorw ("request err, DeleteUser, validation failed" , "id" , id , "err" , err )
434
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
435
+ return
436
+ }
437
+ //service call
455
438
res , err := handler .userService .DeleteUser (user )
456
439
if err != nil {
457
440
handler .logger .Errorw ("service err, DeleteUser" , "err" , err , "id" , id )
@@ -639,6 +622,7 @@ func (handler UserRestHandlerImpl) UpdateRoleGroup(w http.ResponseWriter, r *htt
639
622
}
640
623
641
624
func (handler UserRestHandlerImpl ) FetchRoleGroups (w http.ResponseWriter , r * http.Request ) {
625
+ var decoder = schema .NewDecoder ()
642
626
userId , err := handler .userService .GetLoggedInUser (r )
643
627
if userId == 0 || err != nil {
644
628
common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
@@ -692,32 +676,15 @@ func (handler UserRestHandlerImpl) FetchRoleGroups(w http.ResponseWriter, r *htt
692
676
common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
693
677
return
694
678
}
695
- res , err := handler .roleGroupService .FetchRoleGroups ()
696
- if err != nil {
697
- handler .logger .Errorw ("service err, FetchRoleGroups" , "err" , err )
698
- common .WriteJsonResp (w , err , "" , http .StatusInternalServerError )
699
- return
700
- }
701
- common .WriteJsonResp (w , err , res , http .StatusOK )
702
- }
703
679
704
- func (handler UserRestHandlerImpl ) FetchDetailedRoleGroups (w http.ResponseWriter , r * http.Request ) {
705
- userId , err := handler .userService .GetLoggedInUser (r )
706
- if userId == 0 || err != nil {
707
- common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
708
- return
709
- }
710
- token := r .Header .Get ("token" )
711
- isActionUserSuperAdmin := false
712
- if ok := handler .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionGet , "*" ); ok {
713
- isActionUserSuperAdmin = true
714
- }
715
- if ! isActionUserSuperAdmin {
716
- common .WriteJsonResp (w , errors .New ("unauthorized" ), nil , http .StatusForbidden )
680
+ req := & bean.FetchListingRequest {}
681
+ err = decoder .Decode (req , r .URL .Query ())
682
+ if err != nil {
683
+ handler .logger .Errorw ("request err, FetchRoleGroups" , "err" , err , "payload" , req )
684
+ common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
717
685
return
718
686
}
719
-
720
- res , err := handler .roleGroupService .FetchDetailedRoleGroups ()
687
+ res , err := handler .roleGroupService .FetchRoleGroupsWithFilters (req )
721
688
if err != nil {
722
689
handler .logger .Errorw ("service err, FetchRoleGroups" , "err" , err )
723
690
common .WriteJsonResp (w , err , "" , http .StatusInternalServerError )
0 commit comments