|
@@ -10,35 +10,30 @@ import (
|
|
|
|
|
|
// Pre-Define Permission Templates for default Roles
|
|
// Pre-Define Permission Templates for default Roles
|
|
var SuperAdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
var SuperAdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
- ID: models.SuperAdminRole,
|
|
|
|
- Default: true,
|
|
|
|
- DashBoardAcls: models.DashboardAccessControls{
|
|
|
|
- FullAccess: true,
|
|
|
|
- },
|
|
|
|
|
|
+ ID: models.SuperAdminRole,
|
|
|
|
+ Default: true,
|
|
|
|
+ FullAccess: true,
|
|
}
|
|
}
|
|
var AdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
var AdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
- ID: models.AdminRole,
|
|
|
|
- Default: true,
|
|
|
|
- DashBoardAcls: models.DashboardAccessControls{
|
|
|
|
- FullAccess: true,
|
|
|
|
- },
|
|
|
|
|
|
+ ID: models.AdminRole,
|
|
|
|
+ Default: true,
|
|
|
|
+ FullAccess: true,
|
|
}
|
|
}
|
|
|
|
|
|
var NetworkAdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
var NetworkAdminPermissionTemplate = models.UserRolePermissionTemplate{
|
|
- ID: models.NetworkAdmin,
|
|
|
|
- Default: true,
|
|
|
|
- DashBoardAcls: models.DashboardAccessControls{
|
|
|
|
- NetworkLevelAccess: make(map[models.NetworkID]models.NetworkAccessControls),
|
|
|
|
- },
|
|
|
|
|
|
+ ID: models.NetworkAdmin,
|
|
|
|
+ Default: true,
|
|
|
|
+ IsNetworkRole: true,
|
|
|
|
+ FullAccess: true,
|
|
|
|
+ NetworkLevelAccess: make(map[models.RsrcType]map[models.RsrcID]models.RsrcPermissionScope),
|
|
}
|
|
}
|
|
|
|
|
|
var NetworkUserPermissionTemplate = models.UserRolePermissionTemplate{
|
|
var NetworkUserPermissionTemplate = models.UserRolePermissionTemplate{
|
|
- ID: models.NetworkUser,
|
|
|
|
- Default: true,
|
|
|
|
- DashBoardAcls: models.DashboardAccessControls{
|
|
|
|
- DenyDashboardAccess: true,
|
|
|
|
- NetworkLevelAccess: make(map[models.NetworkID]models.NetworkAccessControls),
|
|
|
|
- },
|
|
|
|
|
|
+ ID: models.NetworkUser,
|
|
|
|
+ Default: true,
|
|
|
|
+ FullAccess: false,
|
|
|
|
+ DenyDashboardAccess: true,
|
|
|
|
+ NetworkLevelAccess: make(map[models.RsrcType]map[models.RsrcID]models.RsrcPermissionScope),
|
|
}
|
|
}
|
|
|
|
|
|
func UserRolesInit() {
|
|
func UserRolesInit() {
|
|
@@ -128,18 +123,28 @@ func DeleteRole(rid models.UserRole) error {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
for _, user := range users {
|
|
for _, user := range users {
|
|
- if user.GroupID != "" {
|
|
|
|
- ug, err := GetUserGroup(user.GroupID)
|
|
|
|
- if err == nil && ug.PermissionTemplate.ID == rid {
|
|
|
|
- err = errors.New("role cannot be deleted as active user groups are using this role")
|
|
|
|
- return err
|
|
|
|
|
|
+ if user.UserGroup != "" {
|
|
|
|
+ ug, err := GetUserGroup(user.UserGroup)
|
|
|
|
+ if err == nil {
|
|
|
|
+ for _, networkRole := range ug.NetworkRoles {
|
|
|
|
+ if networkRole == rid {
|
|
|
|
+ err = errors.New("role cannot be deleted as active user groups are using this role")
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- continue
|
|
|
|
}
|
|
}
|
|
- if user.PermissionTemplate.ID == rid {
|
|
|
|
|
|
+
|
|
|
|
+ if user.PlatformRoleID == rid {
|
|
err = errors.New("active roles cannot be deleted.switch existing users to a new role before deleting")
|
|
err = errors.New("active roles cannot be deleted.switch existing users to a new role before deleting")
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
+ for _, networkRole := range user.NetworkRoles {
|
|
|
|
+ if networkRole == rid {
|
|
|
|
+ err = errors.New("active roles cannot be deleted.switch existing users to a new role before deleting")
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return database.DeleteRecord(database.USER_PERMISSIONS_TABLE_NAME, rid.String())
|
|
return database.DeleteRecord(database.USER_PERMISSIONS_TABLE_NAME, rid.String())
|
|
}
|
|
}
|
|
@@ -162,8 +167,8 @@ func CreateUserGroup(g models.UserGroup) error {
|
|
}
|
|
}
|
|
|
|
|
|
// GetUserGroup - fetches user group
|
|
// GetUserGroup - fetches user group
|
|
-func GetUserGroup(gid string) (models.UserGroup, error) {
|
|
|
|
- d, err := database.FetchRecord(database.USER_GROUPS_TABLE_NAME, gid)
|
|
|
|
|
|
+func GetUserGroup(gid models.UserGroupID) (models.UserGroup, error) {
|
|
|
|
+ d, err := database.FetchRecord(database.USER_GROUPS_TABLE_NAME, gid.String())
|
|
if err == nil {
|
|
if err == nil {
|
|
return models.UserGroup{}, err
|
|
return models.UserGroup{}, err
|
|
}
|
|
}
|
|
@@ -211,16 +216,29 @@ func UpdateUserGroup(g models.UserGroup) error {
|
|
}
|
|
}
|
|
|
|
|
|
// DeleteUserGroup - deletes user group
|
|
// DeleteUserGroup - deletes user group
|
|
-func DeleteUserGroup(gid string) error {
|
|
|
|
|
|
+func DeleteUserGroup(gid models.UserGroupID) error {
|
|
users, err := GetUsersDB()
|
|
users, err := GetUsersDB()
|
|
if err != nil {
|
|
if err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
for _, user := range users {
|
|
for _, user := range users {
|
|
- if user.GroupID == gid {
|
|
|
|
|
|
+ if user.UserGroup == gid {
|
|
err = errors.New("role cannot be deleted as active user groups are using this role")
|
|
err = errors.New("role cannot be deleted as active user groups are using this role")
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return database.DeleteRecord(database.USER_GROUPS_TABLE_NAME, gid)
|
|
|
|
|
|
+ return database.DeleteRecord(database.USER_GROUPS_TABLE_NAME, gid.String())
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func HasNetworkRsrcScope(permissionTemplate models.UserRolePermissionTemplate, netid string, rsrcType models.RsrcType, rsrcID models.RsrcID, op string) bool {
|
|
|
|
+ if permissionTemplate.FullAccess {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ rsrcScope, ok := permissionTemplate.NetworkLevelAccess[rsrcType]
|
|
|
|
+ if !ok {
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+ _, ok = rsrcScope[rsrcID]
|
|
|
|
+ return ok
|
|
}
|
|
}
|