add remove network user api

This commit is contained in:
abhishek9686 2025-08-15 16:53:20 +05:30
parent ac35c46278
commit 5019ecf934
2 changed files with 60 additions and 2 deletions

View file

@ -50,6 +50,7 @@ func UserHandlers(r *mux.Router) {
r.HandleFunc("/api/v1/users/group", logic.SecurityCheck(true, http.HandlerFunc(updateUserGroup))).Methods(http.MethodPut)
r.HandleFunc("/api/v1/users/group", logic.SecurityCheck(true, http.HandlerFunc(deleteUserGroup))).Methods(http.MethodDelete)
r.HandleFunc("/api/v1/users/add_network_user", logic.SecurityCheck(true, http.HandlerFunc(addUsertoNetwork))).Methods(http.MethodPut)
r.HandleFunc("/api/v1/users/remove_network_user", logic.SecurityCheck(true, http.HandlerFunc(removeUserfromNetwork))).Methods(http.MethodPut)
// User Invite Handlers
r.HandleFunc("/api/v1/users/invite", userInviteVerify).Methods(http.MethodGet)
@ -695,7 +696,7 @@ func updateUserGroup(w http.ResponseWriter, r *http.Request) {
logic.ReturnSuccessResponseWithJson(w, r, userGroup, "updated user group")
}
// swagger:route PUT /api/v1/user/group user addUsertoNetwork
// swagger:route PUT /api/v1/users/add_network_user user addUsertoNetwork
//
// add user to network.
//
@ -752,6 +753,63 @@ func addUsertoNetwork(w http.ResponseWriter, r *http.Request) {
logic.ReturnSuccessResponseWithJson(w, r, user, "updated user group")
}
// swagger:route PUT /api/v1/users/remove_network_user user removeUserfromNetwork
//
// add user to network.
//
// Schemes: https
//
// Security:
// oauth
//
// Responses:
// 200: userBodyResponse
func removeUserfromNetwork(w http.ResponseWriter, r *http.Request) {
username := r.URL.Query().Get("username")
if username == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("username is required"), logic.BadReq))
return
}
netID := r.URL.Query().Get("network_id")
if netID == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("network is required"), logic.BadReq))
return
}
user, err := logic.GetUser(username)
if err != nil {
logic.ReturnErrorResponse(w, r, logic.FormatError(err, logic.BadReq))
return
}
if user.PlatformRoleID != models.ServiceUser {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("can only add service users"), logic.BadReq))
return
}
oldUser := *user
delete(user.UserGroups, proLogic.GetDefaultNetworkUserGroupID(models.NetworkID(netID)))
logic.UpsertUser(*user)
logic.LogEvent(&models.Event{
Action: models.Update,
Source: models.Subject{
ID: r.Header.Get("user"),
Name: r.Header.Get("user"),
Type: models.UserSub,
},
TriggeredBy: r.Header.Get("user"),
Target: models.Subject{
ID: user.UserName,
Name: user.UserName,
Type: models.UserSub,
},
Diff: models.Diff{
Old: oldUser,
New: user,
},
Origin: models.Dashboard,
})
logic.ReturnSuccessResponseWithJson(w, r, user, "updated user group")
}
// swagger:route DELETE /api/v1/user/group user deleteUserGroup
//
// delete user group.

View file

@ -175,7 +175,7 @@ func GlobalPermissionsCheck(username string, r *http.Request) error {
return nil
}
if targetRsrc == models.UserRsrc.String() && user.PlatformRoleID == models.PlatformUser && r.Method == http.MethodPut &&
strings.Contains(r.URL.Path, "/api/v1/users/add_network_user") {
strings.Contains(r.URL.Path, "/api/v1/users/add_network_user") || strings.Contains(r.URL.Path, "/api/v1/users/remove_network_user") {
return nil
}
if targetRsrc == models.UserRsrc.String() && username == targetRsrcID && (r.Method != http.MethodDelete) {