Files
Wishlist/wishlist/Data/ProjectAccesses.cs
Arne Moerman ab68df2184 open changes
2024-12-15 19:08:25 +01:00

59 lines
2.8 KiB
C#

namespace Wishlist.Data;
public static class ProjectRoles
{
public static ProjectRole UserRole => new("User", "USER", "User Role");
public static ProjectRole AdminRole => new("Admin", "ADMIN", "Admin Role");
public static ProjectRole[] Roles => [UserRole, AdminRole];
}
public static class ProjectPolicies
{
public static ProjectPolicy BlogPostCreateClaimPolicy => new(nameof(BlogPostCreateClaimPolicy), [ProjectClaims.BlogPostCreate]);
public static ProjectPolicy BlogPostReadClaimPolicy => new(nameof(BlogPostReadClaimPolicy), [ProjectClaims.BlogPostRead]);
public static ProjectPolicy BlogPostUpdateClaimPolicy => new(nameof(BlogPostUpdateClaimPolicy), [ProjectClaims.BlogPostUpdate]);
public static ProjectPolicy BlogPostDeleteClaimPolicy => new(nameof(BlogPostDeleteClaimPolicy), [ProjectClaims.BlogPostDelete]);
public static ProjectPolicy WishlistViewPolicy => new(nameof(WishlistViewPolicy), [ProjectClaims.WishlistView]);
public static ProjectPolicy WishlistCreatePolicy => new(nameof(WishlistCreatePolicy), [ProjectClaims.WishlistCreate]);
public static ProjectPolicy WishlistMarkAsBuyingPolicy => new(nameof(WishlistMarkAsBuyingPolicy), [ProjectClaims.WishlistMarkAsBuying]);
}
public static class ProjectClaims
{
public static ProjectClaim BlogPostCreate => new("BlogPost", "Create");
public static ProjectClaim BlogPostRead => new("BlogPost", "Read");
public static ProjectClaim BlogPostUpdate => new("BlogPost", "Update");
public static ProjectClaim BlogPostDelete => new("BlogPost", "Delete");
public static ProjectClaim WishlistView => new("Wishlist", "View");
public static ProjectClaim WishlistCreate => new("Wishlist", "Create");
public static ProjectClaim WishlistMarkAsBuying => new("Wishlist", "MarkAsBuying");
public static List<ProjectClaim> GetBlogPostClaims => [BlogPostCreate, BlogPostRead, BlogPostUpdate, BlogPostDelete];
public static List<ProjectClaim> GetWishlistClaims => [WishlistView, WishlistCreate, WishlistMarkAsBuying];
public static List<List<ProjectClaim>> GetAllClaims = [GetBlogPostClaims, GetWishlistClaims];
}
public class ProjectPolicy(string name, ProjectClaim[] requiredClaims)
{
public string Name { get; set; } = name;
public ProjectClaim[] RequiredClaims { get; set; } = requiredClaims;
public ProjectRole[] RequiredRoles { get; set; } = [];
}
public class ProjectClaim(string type, string value)
{
public string Type { get; set; } = type;
public string Value { get; set; } = value;
}
public class ProjectRole(string roleName, string normalizedName, string description)
{
public string RoleName { get; set; } = roleName;
public string NormalizedName { get; set; } = normalizedName;
public string Description { get; set; } = description;
}