607 lines
19 KiB
C#
607 lines
19 KiB
C#
using System.Collections.Generic;
|
|
using IdentityModel;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using xCommons.Authorization;
|
|
using xCommons.Constants;
|
|
using xCommons.Extensions;
|
|
using static xIdentityHelper.XApiScopeHelper;
|
|
|
|
namespace xIdentityHelper
|
|
{
|
|
public class XAuthorizationHelper
|
|
{
|
|
public static IDictionary<string, AuthorizationPolicy> GetXAuthorizationPolicies()
|
|
{
|
|
//
|
|
var result = new Dictionary<string, AuthorizationPolicy>();
|
|
|
|
//
|
|
RequiredRolesRequirement roleRequirements = null;
|
|
|
|
//
|
|
#region Build Policies ...
|
|
//
|
|
// Scope Policies ...
|
|
#region Scope Policies ...
|
|
//
|
|
// Read Scope ...
|
|
result.Add(XPolicies.ReadAccess,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireClaim(JwtClaimTypes.Scope, XApiScopes.Read)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Write Scope ...
|
|
result.Add(XPolicies.WriteAccess,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireClaim(
|
|
JwtClaimTypes.Scope,
|
|
XApiScopes.Read,
|
|
XApiScopes.Write
|
|
)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Admin Scope ...
|
|
result.Add(XPolicies.AdminAccess,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireClaim(
|
|
JwtClaimTypes.Scope,
|
|
XApiScopes.Read,
|
|
XApiScopes.Write,
|
|
XApiScopes.Admin
|
|
)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Manage Scope ...
|
|
result.Add(XPolicies.ManageAccess,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireClaim(
|
|
JwtClaimTypes.Scope,
|
|
XApiScopes.Read,
|
|
XApiScopes.Write,
|
|
XApiScopes.Admin,
|
|
XApiScopes.Manage
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Roles Policies ...
|
|
#region Roles Policies ...
|
|
//
|
|
// User ...
|
|
#region User Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.USER,
|
|
XUserRoles.AGENT,
|
|
XUserRoles.REPORTER_ASSISTANT,
|
|
XUserRoles.REPORTER,
|
|
XUserRoles.ACTUARY_ASSISTANT,
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// User Policy ...
|
|
result.Add(XPolicies.User,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled User Policy ...
|
|
result.Add(XPolicies.EnabledUser,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Agent ...
|
|
#region Agent Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.AGENT,
|
|
XUserRoles.REPORTER_ASSISTANT,
|
|
XUserRoles.REPORTER,
|
|
XUserRoles.ACTUARY_ASSISTANT,
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// Agent Policy ...
|
|
result.Add(XPolicies.Agent,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Agent Policy ...
|
|
result.Add(XPolicies.EnabledAgent,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// ReporterAssistant ...
|
|
#region Reporter Assistant Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.REPORTER_ASSISTANT,
|
|
XUserRoles.REPORTER,
|
|
XUserRoles.ACTUARY_ASSISTANT,
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// ReporterAssistant ...
|
|
result.Add(XPolicies.ReporterAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled ReporterAssistant ...
|
|
result.Add(XPolicies.EnabledReporterAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Reporter ...
|
|
#region Reporter Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.REPORTER,
|
|
XUserRoles.ACTUARY_ASSISTANT,
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// Reporter ...
|
|
result.Add(XPolicies.Reporter,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Reporter ...
|
|
result.Add(XPolicies.EnabledReporter,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// ActuaryAssistant ...
|
|
#region Actuary Assistant Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.ACTUARY_ASSISTANT,
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// ActuaryAssistant ...
|
|
result.Add(XPolicies.ActuaryAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled ActuaryAssistant ...
|
|
result.Add(XPolicies.EnabledActuaryAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Actuary ...
|
|
#region Actuary Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.ACTUARY,
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// Actuary ...
|
|
result.Add(XPolicies.Actuary,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Actuary ...
|
|
result.Add(XPolicies.EnabledActuary,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// ChiefClerkAssistant ...
|
|
#region Chief Clerk Assistant Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.CHIEF_CLERK_ASSISTANT,
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// ChiefClerkAssistant ...
|
|
result.Add(XPolicies.ChiefClerkAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled ChiefClerkAssistant ...
|
|
result.Add(XPolicies.EnabledChiefClerkAssistant,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// ChiefClerk ...
|
|
#region Chief Clerk Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.CHIEF_CLERK,
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// ChiefClerk ...
|
|
result.Add(XPolicies.ChiefClerk,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled ChiefClerk ...
|
|
result.Add(XPolicies.EnabledChiefClerk,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Journalist ...
|
|
#region Journalist Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.JOURNALIST,
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// Journalist ...
|
|
result.Add(XPolicies.Journalist,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Journalist ...
|
|
result.Add(XPolicies.EnabledJournalist,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// ResponsibleManager ...
|
|
#region Responsible Manager Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.RESPONSIBLE_MANAGER,
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// ResponsibleManager ...
|
|
result.Add(XPolicies.ResponsibleManager,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled ResponsibleManager ...
|
|
result.Add(XPolicies.EnabledResponsibleManager,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
// Admin ...
|
|
#region Admin Related Policies ...
|
|
//
|
|
roleRequirements = new RequiredRolesRequirement(
|
|
XUserRoles.ADMIN
|
|
);
|
|
|
|
//
|
|
// Admin Policy ...
|
|
result.Add(XPolicies.Admin,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Admin Policy ...
|
|
result.Add(XPolicies.EnabledAdmin,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(roleRequirements)
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
#endregion
|
|
|
|
//
|
|
// Complex Policies ...
|
|
#region AdminOrAgent Related Policies ...
|
|
//
|
|
// Admin Or Agent Policy ...
|
|
result.Add(XPolicies.AdminOrAgent,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(new RequiredRolesRequirement(
|
|
XUserRoles.ADMIN,
|
|
XUserRoles.AGENT
|
|
))
|
|
.Build()
|
|
);
|
|
|
|
//
|
|
// Enabled Admin Or Agent Policy ...
|
|
result.Add(XPolicies.EnabledAdminOrAgent,
|
|
new AuthorizationPolicyBuilder()
|
|
.RequireAuthenticatedUser()
|
|
.AddRequirements(new RequiredRolesRequirement(
|
|
XUserRoles.ADMIN,
|
|
XUserRoles.AGENT
|
|
))
|
|
.RequireClaim(
|
|
XCustomClaims.IsBanned,
|
|
false.ToString(),
|
|
false.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.RequireClaim(
|
|
XCustomClaims.IsEnabled,
|
|
true.ToString(),
|
|
true.ToString()
|
|
.ToNormalString()
|
|
)
|
|
.Build()
|
|
);
|
|
#endregion
|
|
#endregion
|
|
|
|
//
|
|
return result;
|
|
}
|
|
}
|
|
} |