back photo + event tags and persons
This commit is contained in:
69
back/DataModels/RoleModel.cs
Normal file
69
back/DataModels/RoleModel.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace back.DataModels;
|
||||
|
||||
[Tags("Roles")]
|
||||
public class RoleModel
|
||||
{
|
||||
[Key]
|
||||
public string Id { get; set; }
|
||||
[Required, MaxLength(100)]
|
||||
public string Name { get; set; }
|
||||
[MaxLength(250)]
|
||||
public string Description { get; set; }
|
||||
public List<PermissionModel> Permissions { get; set; }
|
||||
public RoleModel? BaseRoleModel { get; set; }
|
||||
|
||||
public RoleModel(string id, string name, string description, List<PermissionModel>? permissions = null, RoleModel? baseRoleModel = null)
|
||||
{
|
||||
Id = id;
|
||||
Name = name;
|
||||
Description = description;
|
||||
Permissions = permissions ?? new List<PermissionModel>();
|
||||
BaseRoleModel = baseRoleModel;
|
||||
if (baseRoleModel != null)
|
||||
{
|
||||
Permissions.AddRange(baseRoleModel.Permissions);
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsAdmin => Id == AdminRole.Id;
|
||||
public bool IsContentManager => Id == ContentManagerRole.Id;
|
||||
public bool IsUser => Id == UserRole.Id;
|
||||
|
||||
public bool HasPermission(PermissionModel permission)
|
||||
{
|
||||
return Permissions.Exists(p => p.Id == permission.Id);
|
||||
}
|
||||
|
||||
public static readonly RoleModel UserRole = new(
|
||||
"1", "User", "Role for regular users",
|
||||
new List<PermissionModel> {
|
||||
PermissionModel.ViewContentPermission,
|
||||
PermissionModel.LikeContentPermission
|
||||
}
|
||||
);
|
||||
|
||||
public static readonly RoleModel ContentManagerRole = new(
|
||||
"2", "Content Manager", "Role for managing content",
|
||||
new List<PermissionModel> {
|
||||
PermissionModel.CreateUserPermission,
|
||||
PermissionModel.DisableUserPermission,
|
||||
PermissionModel.CreateContentPermission,
|
||||
PermissionModel.EditContentPermission,
|
||||
PermissionModel.DeleteContentPermission
|
||||
},
|
||||
UserRole
|
||||
);
|
||||
|
||||
public static readonly RoleModel AdminRole = new(
|
||||
"3", "Admin", "Administrator role with full permissions",
|
||||
new List<PermissionModel> {
|
||||
PermissionModel.CreateUserPermission,
|
||||
PermissionModel.EditUserPermission,
|
||||
PermissionModel.DeleteUserPermission,
|
||||
PermissionModel.EditWebConfigPermission
|
||||
},
|
||||
ContentManagerRole
|
||||
);
|
||||
}
|
Reference in New Issue
Block a user