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 GetXAuthorizationPolicies() { // var result = new Dictionary(); // 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; } } }