From 2794a79425b7f05ad283ebcae041de1e71270625 Mon Sep 17 00:00:00 2001 From: the_aceix Date: Tue, 18 Feb 2025 02:29:59 +0000 Subject: [PATCH 1/2] fix: add user group struct to user response --- controllers/user.go | 9 +++++++++ logic/user_mgmt.go | 1 + models/user_mgmt.go | 1 + pro/initialize.go | 1 + 4 files changed, 12 insertions(+) diff --git a/controllers/user.go b/controllers/user.go index 02ba98aee..7b02ec14c 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -258,6 +258,15 @@ func getUserV1(w http.ResponseWriter, r *http.Request) { resp := models.ReturnUserWithRolesAndGroups{ ReturnUser: user, PlatformRole: userRoleTemplate, + UserGroups: map[models.UserGroupID]models.UserGroup{}, + } + for gId := range user.UserGroups { + grp, err := logic.GetUserGroup(gId) + if err != nil { + logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal")) + return + } + resp.UserGroups[gId] = grp } logger.Log(2, r.Header.Get("user"), "fetched user", usernameFetched) logic.ReturnSuccessResponseWithJson(w, r, resp, "fetched user with role info") diff --git a/logic/user_mgmt.go b/logic/user_mgmt.go index f6eccac20..5ff654b02 100644 --- a/logic/user_mgmt.go +++ b/logic/user_mgmt.go @@ -60,6 +60,7 @@ var DeleteNetworkRoles = func(netID string) {} var CreateDefaultNetworkRolesAndGroups = func(netID models.NetworkID) {} var CreateDefaultUserPolicies = func(netID models.NetworkID) {} var GetUserGroupsInNetwork = func(netID models.NetworkID) (networkGrps map[models.UserGroupID]models.UserGroup) { return } +var GetUserGroup = func(groupId models.UserGroupID) (userGrps models.UserGroup, err error) { return } var AddGlobalNetRolesToAdmins = func(u models.User) {} // GetRole - fetches role template by id diff --git a/models/user_mgmt.go b/models/user_mgmt.go index 0062d2db3..5b1406713 100644 --- a/models/user_mgmt.go +++ b/models/user_mgmt.go @@ -159,6 +159,7 @@ type User struct { type ReturnUserWithRolesAndGroups struct { ReturnUser PlatformRole UserRolePermissionTemplate `json:"platform_role"` + UserGroups map[UserGroupID]UserGroup `json:"user_group_ids"` } // ReturnUser - return user struct diff --git a/pro/initialize.go b/pro/initialize.go index 4292d3f94..f54cde612 100644 --- a/pro/initialize.go +++ b/pro/initialize.go @@ -133,6 +133,7 @@ func InitPro() { logic.IntialiseGroups = proLogic.UserGroupsInit logic.AddGlobalNetRolesToAdmins = proLogic.AddGlobalNetRolesToAdmins logic.GetUserGroupsInNetwork = proLogic.GetUserGroupsInNetwork + logic.GetUserGroup = proLogic.GetUserGroup logic.GetNodeStatus = proLogic.GetNodeStatus } From d67ef4a3d29ceb7d60ca6b5235872622dec0383e Mon Sep 17 00:00:00 2001 From: the_aceix Date: Tue, 18 Feb 2025 03:01:32 +0000 Subject: [PATCH 2/2] fix: set auto-created network groups as default --- pro/logic/user_mgmt.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pro/logic/user_mgmt.go b/pro/logic/user_mgmt.go index 34c299896..e3ff613a5 100644 --- a/pro/logic/user_mgmt.go +++ b/pro/logic/user_mgmt.go @@ -216,8 +216,9 @@ func CreateDefaultNetworkRolesAndGroups(netID models.NetworkID) { // create default network groups var NetworkAdminGroup = models.UserGroup{ - ID: models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkAdmin)), - Name: fmt.Sprintf("%s Admin Group", netID), + ID: models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkAdmin)), + Name: fmt.Sprintf("%s Admin Group", netID), + Default: true, NetworkRoles: map[models.NetworkID]map[models.UserRoleID]struct{}{ netID: { models.UserRoleID(fmt.Sprintf("%s-%s", netID, models.NetworkAdmin)): {}, @@ -226,8 +227,9 @@ func CreateDefaultNetworkRolesAndGroups(netID models.NetworkID) { MetaData: fmt.Sprintf("can manage your network `%s` configuration including adding and removing devices.", netID), } var NetworkUserGroup = models.UserGroup{ - ID: models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkUser)), - Name: fmt.Sprintf("%s User Group", netID), + ID: models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkUser)), + Name: fmt.Sprintf("%s User Group", netID), + Default: true, NetworkRoles: map[models.NetworkID]map[models.UserRoleID]struct{}{ netID: { models.UserRoleID(fmt.Sprintf("%s-%s", netID, models.NetworkUser)): {},