浏览代码

allow multiple groups for an user

abhishek9686 1 年之前
父节点
当前提交
9fb83fa89c
共有 2 个文件被更改,包括 13 次插入15 次删除
  1. 4 6
      logic/user_mgmt.go
  2. 9 9
      models/user_mgmt.go

+ 4 - 6
logic/user_mgmt.go

@@ -123,8 +123,8 @@ func DeleteRole(rid models.UserRole) error {
 		return err
 	}
 	for _, user := range users {
-		if user.UserGroup != "" {
-			ug, err := GetUserGroup(user.UserGroup)
+		for userG := range user.UserGroups {
+			ug, err := GetUserGroup(userG)
 			if err == nil {
 				for _, networkRole := range ug.NetworkRoles {
 					if networkRole == rid {
@@ -222,10 +222,8 @@ func DeleteUserGroup(gid models.UserGroupID) error {
 		return err
 	}
 	for _, user := range users {
-		if user.UserGroup == gid {
-			err = errors.New("role cannot be deleted as active user groups are using this role")
-			return err
-		}
+		delete(user.UserGroups, gid)
+		UpsertUser(user)
 	}
 	return database.DeleteRecord(database.USER_GROUPS_TABLE_NAME, gid.String())
 }

+ 9 - 9
models/user_mgmt.go

@@ -88,15 +88,15 @@ type UserGroup struct {
 
 // User struct - struct for Users
 type User struct {
-	UserName       string                 `json:"username" bson:"username" validate:"min=3,max=40,in_charset|email"`
-	Password       string                 `json:"password" bson:"password" validate:"required,min=5"`
-	IsAdmin        bool                   `json:"isadmin" bson:"isadmin"`
-	IsSuperAdmin   bool                   `json:"issuperadmin"`
-	RemoteGwIDs    map[string]struct{}    `json:"remote_gw_ids"`
-	UserGroup      UserGroupID            `json:"user_groups"`
-	PlatformRoleID UserRole               `json:"platform_role_id"`
-	NetworkRoles   map[NetworkID]UserRole `json:"network_roles"`
-	LastLoginTime  time.Time              `json:"last_login_time"`
+	UserName       string                   `json:"username" bson:"username" validate:"min=3,max=40,in_charset|email"`
+	Password       string                   `json:"password" bson:"password" validate:"required,min=5"`
+	IsAdmin        bool                     `json:"isadmin" bson:"isadmin"`
+	IsSuperAdmin   bool                     `json:"issuperadmin"`
+	RemoteGwIDs    map[string]struct{}      `json:"remote_gw_ids"`
+	UserGroups     map[UserGroupID]struct{} `json:"user_groups"`
+	PlatformRoleID UserRole                 `json:"platform_role_id"`
+	NetworkRoles   map[NetworkID]UserRole   `json:"network_roles"`
+	LastLoginTime  time.Time                `json:"last_login_time"`
 }
 
 // ReturnUser - return user struct