back photo + event tags and persons

This commit is contained in:
2025-08-10 20:07:40 +02:00
parent 0cc8bddfa1
commit f61b48fa4b
46 changed files with 1438 additions and 189 deletions

View 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
);
}