commit afeaf31fe1ac42c4a76567a71e8cc29325ac170a Author: Hadi Khazaee Asl Date: Sun Mar 22 14:00:52 2026 +0330 Initial ... diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8d4a6c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +bin +obj \ No newline at end of file diff --git a/Extensions/XIdentityHelperExtensions.cs b/Extensions/XIdentityHelperExtensions.cs new file mode 100644 index 0000000..8d31a45 --- /dev/null +++ b/Extensions/XIdentityHelperExtensions.cs @@ -0,0 +1,65 @@ +using System; +using System.Linq; +using xCommons.Extensions; +using xIdentityModels.Models; + +namespace xIdentityHelper.Extensions +{ + public static class XIdentityHelperExtensions + { + /// + /// Check User Claims ia Admin Role or not ... + /// + /// + /// + public static bool IsAdmin(this XUserClaimsInfoDto source) + { + // + var result = false; + + // + if (source.IsNull() || + source.Roles.IsNull() || + !source.Roles.HasChild()) + { + return result; + } + + // + result = source.Roles.Contains(XUserRoles.ADMIN); + + // + return result; + } + + /// + /// Check Actor is Valid for UserSelectByParam or not ... + /// + /// + /// + /// + public static bool IsValidActor(this XUserClaimsInfoDto source, string userSelectByParam) + { + // + var result = false; + + // + if (source.IsNull() || + userSelectByParam.IsNullOrEmpty()) + { + return result; + } + + // + bool isAdmin = source.IsAdmin(); + result = isAdmin || + userSelectByParam == source.Email || + userSelectByParam == source.UserId || + userSelectByParam == source.UserName || + userSelectByParam == source.PhoneNumber; + + // + return result; + } + } +} \ No newline at end of file diff --git a/Extensions/XUserRoleExtensions.cs b/Extensions/XUserRoleExtensions.cs new file mode 100644 index 0000000..a98a120 --- /dev/null +++ b/Extensions/XUserRoleExtensions.cs @@ -0,0 +1,191 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using xCommons.Extensions; +using xExceptions.Constants; + +namespace xIdentityHelper.Extensions +{ + public static class XUserRoleExtensions + { + /// + /// Converts an String to XUserRole ... + /// + /// + /// + public static XUserRole ToXUserRole(this string role) + { + // + var result = XUserRole.User; + + // + // Validate ... + if (role.IsNullOrEmpty()) + { + XException.InvalidArgs.Throw(); + } + + // + var roles = new List + { + role + }; + result = roles.GetTopRole(); + + // + return result; + } + + /// + /// Retrieve User Top Role based on Role Lists ... + /// + /// + /// + public static XUserRole GetTopRole(this IEnumerable roles) + { + // + // Validate ... + if (roles.IsNull() || !roles.HasChild()) + { + XException.InvalidArgs.Throw(); + } + + // + // Normalize Roles ... + roles = roles.Select(r => r.ToNormalString()); + + // + var result = XUserRole.User; + + // + // Admin ... + if (roles.Contains(XUserRole.Admin.GetStringValue().ToNormalString())) + { + result = XUserRole.Admin; + } + // + // ResponsibleManager ... + else if (roles.Contains(XUserRole.ResponsibleManager.GetStringValue().ToNormalString())) + { + result = XUserRole.ResponsibleManager; + } + // + // Journalist ... + else if (roles.Contains(XUserRole.Journalist.GetStringValue().ToNormalString())) + { + result = XUserRole.Journalist; + } + // + // ChiefClerk ... + else if (roles.Contains(XUserRole.ChiefClerk.GetStringValue().ToNormalString())) + { + result = XUserRole.ChiefClerk; + } + // + // ChiefClerkAssistant ... + else if (roles.Contains(XUserRole.ChiefClerkAssistant.GetStringValue().ToNormalString())) + { + result = XUserRole.ChiefClerkAssistant; + } + // + // Actuary ... + else if (roles.Contains(XUserRole.Actuary.GetStringValue().ToNormalString())) + { + result = XUserRole.Actuary; + } + // + // ActuaryAssistant ... + else if (roles.Contains(XUserRole.ActuaryAssistant.GetStringValue().ToNormalString())) + { + result = XUserRole.ActuaryAssistant; + } + // + // Reporter ... + else if (roles.Contains(XUserRole.Reporter.GetStringValue().ToNormalString())) + { + result = XUserRole.Reporter; + } + // + // ReporterAssistant ... + else if (roles.Contains(XUserRole.ReporterAssistant.GetStringValue().ToNormalString())) + { + result = XUserRole.ReporterAssistant; + } + // + // Agent ... + else if (roles.Contains(XUserRole.Agent.GetStringValue().ToNormalString())) + { + result = XUserRole.Agent; + } + // + // User ... + else if (roles.Contains(XUserRole.User.GetStringValue().ToNormalString())) + { + result = XUserRole.User; + } + else + { + XException.InvalidData.Throw(); + } + + // + return result; + } + + /// + /// Check User Roles has Specified Permissions or not ... + /// + /// + /// + /// + public static bool HasRolePermissions(this IEnumerable roles, XUserRole role) + { + // + // Validate ... + var result = + !roles.IsNull() && + roles.HasChild(); + if (!result) + { + return result; + } + + // + try + { + // + var topRole = roles.GetTopRole(); + + // + result = (int)topRole >= (int)role; + } + catch + { + result = false; + } + + // + return result; + } + public static bool HasRolePermissions(this IEnumerable roles, string role) + { + // + // Validate ... + var result = + !roles.IsNull() && + roles.HasChild() && + !role.IsNullOrEmpty(); + if (!result) + { + return result; + } + + // + var roleEnum = role.ToXUserRole(); + result = roles.HasRolePermissions(roleEnum); + + // + return result; + } + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..194e38d --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# xSaherelmAI.xIdentityHelper + +this module provide all Authorization Constants which used in xSaherElm AI project. + +## Maintainer + +Hadi Khazaee asl + +[https://www.saherelm.ir](https://www.saherelm.ir) + +[hadi_khazaee_asl@yahoo.com](mailto:hadi_khazaee_asl@yahoo.com) diff --git a/XApiScopeHelper.cs b/XApiScopeHelper.cs new file mode 100644 index 0000000..7d8d40e --- /dev/null +++ b/XApiScopeHelper.cs @@ -0,0 +1,26 @@ +using xExceptions.Attributes; + +namespace xIdentityHelper { + public static class XApiScopeHelper { + public partial struct XApiScopes { + public const string Read = "XAPI.read"; + public const string Write = "XAPI.write"; + public const string Admin = "XAPI.admin"; + public const string Manage = "manage"; + } + + public enum XApiScope { + [StringValue ("XAPI.read")] + Read, + + [StringValue ("XAPI.write")] + Write, + + [StringValue ("XAPI.admin")] + Admin, + + [StringValue ("manage")] + Manage, + } + } +} \ No newline at end of file diff --git a/XAuthorizationHelper.cs b/XAuthorizationHelper.cs new file mode 100644 index 0000000..7e204c9 --- /dev/null +++ b/XAuthorizationHelper.cs @@ -0,0 +1,607 @@ +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; + } + } +} \ No newline at end of file diff --git a/XPolicies.cs b/XPolicies.cs new file mode 100644 index 0000000..a8d3091 --- /dev/null +++ b/XPolicies.cs @@ -0,0 +1,60 @@ +namespace xIdentityHelper +{ + public partial struct XPolicies + { + // + // Scopes ... + public const string ReadAccess = "readScopePolicy"; + public const string WriteAccess = "writeScopePolicy"; + public const string AdminAccess = "adminScopePolicy"; + public const string ManageAccess = "manageScopePolicy"; + // + // Admin ... + public const string Admin = "adminPolicy"; + public const string EnabledAdmin = "enabledAdminPolicy"; + // + // Responsible Manager ... + public const string ResponsibleManager = "responsibleManagerPolicy"; + public const string EnabledResponsibleManager = "enabledResponsibleManagerPolicy"; + // + // Journalist ... + public const string Journalist = "journalistPolicy"; + public const string EnabledJournalist = "enabledJournalistPolicy"; + // + // Chief Clerk ... + public const string ChiefClerk = "chiefClerkPolicy"; + public const string EnabledChiefClerk = "enabledChiefClerkPolicy"; + // + // Chief Clerk Assistant ... + public const string ChiefClerkAssistant = "chiefClerkAssistantPolicy"; + public const string EnabledChiefClerkAssistant = "enabledChiefClerkAssistantPolicy"; + // + // Actuary ... + public const string Actuary = "actuaryPolicy"; + public const string EnabledActuary = "enabledActuaryPolicy"; + // + // Actuary Assistant ... + public const string ActuaryAssistant = "actuaryAssistantPolicy"; + public const string EnabledActuaryAssistant = "enabledActuaryAssistantPolicy"; + // + // Reporter ... + public const string Reporter = "reporterPolicy"; + public const string EnabledReporter = "enabledReporterPolicy"; + // + // Reporter Assistant ... + public const string ReporterAssistant = "reporterAssistantPolicy"; + public const string EnabledReporterAssistant = "enabledReporterAssistantPolicy"; + // + // Agent ... + public const string Agent = "agentPolicy"; + public const string EnabledAgent = "enabledAgentPolicy"; + // + // User ... + public const string User = "userPolicy"; + public const string EnabledUser = "enabledUserPolicy"; + // + // Complex Policies ... + public const string AdminOrAgent = "adminOrAgentPolicy"; + public const string EnabledAdminOrAgent = "enabledAdminOrAgentPolicy"; + } +} \ No newline at end of file diff --git a/XUserRoles.cs b/XUserRoles.cs new file mode 100644 index 0000000..803fb15 --- /dev/null +++ b/XUserRoles.cs @@ -0,0 +1,157 @@ +using System.Collections.Generic; +using xExceptions.Attributes; + +namespace xIdentityHelper +{ + public partial struct XUserRoles + { + /// + /// Must Top Role of System ... + /// + public const string ADMIN = "admin"; + + /// + /// مدیر مسئول + /// + public const string RESPONSIBLE_MANAGER = "responsible_manager"; + + /// + /// روزنامه نگار + /// + public const string JOURNALIST = "journalist"; + + /// + /// سر دبیر + /// + public const string CHIEF_CLERK = "chief_clerk"; + + /// + /// دستیار سرد بیر + /// + public const string CHIEF_CLERK_ASSISTANT = "chief_clerk_assistant"; + + /// + /// دبیر + /// + public const string ACTUARY = "actuary"; + + /// + /// دستیار دبیر + /// + public const string ACTUARY_ASSISTANT = "actuary_assistant"; + + /// + /// خبرنگار + /// + public const string REPORTER = "reporter"; + + /// + /// دستیار خبرنگار + /// + public const string REPORTER_ASSISTANT = "reporter_assistant"; + + /// + /// دستیار + /// + public const string AGENT = "agent"; + + /// + /// کاربر + /// + public const string USER = "user"; + } + + public enum XUserRole + { + /// + /// Must Top Role of System ... + /// + [StringValue("admin")] + Admin = 10, + + /// + /// مدیر مسئول + /// + [StringValue("responsible_manager")] + ResponsibleManager = 9, + + /// + /// روزنامه نگار + /// + [StringValue("journalist")] + Journalist = 8, + + /// + /// سر دبیر + /// + [StringValue("chief_clerk")] + ChiefClerk = 7, + + /// + /// دستیار سرد بیر + /// + [StringValue("chief_clerk_assistant")] + ChiefClerkAssistant = 6, + + /// + /// دبیر + /// + [StringValue("actuary")] + Actuary = 5, + + /// + /// دستیار دبیر + /// + [StringValue("actuary_assistant")] + ActuaryAssistant = 4, + + /// + /// خبرنگار + /// + [StringValue("reporter")] + Reporter = 3, + + /// + /// دستیار خبرنگار + /// + [StringValue("reporter_assistant")] + ReporterAssistant = 2, + + /// + /// دستیار + /// + [StringValue("agent")] + Agent = 1, + + /// + /// کاربر + /// + [StringValue("user")] + User = 0 + } + + public static class XUserRoleHelper + { + public static List GetAllRoles() + { + // + var result = new List + { + XUserRoles.ADMIN, + XUserRoles.RESPONSIBLE_MANAGER, + XUserRoles.JOURNALIST, + XUserRoles.CHIEF_CLERK, + XUserRoles.CHIEF_CLERK_ASSISTANT, + XUserRoles.ACTUARY, + XUserRoles.ACTUARY_ASSISTANT, + XUserRoles.REPORTER, + XUserRoles.REPORTER_ASSISTANT, + XUserRoles.AGENT, + XUserRoles.USER + }; + + // + return result; + } + } +} \ No newline at end of file diff --git a/nuget.config b/nuget.config new file mode 100644 index 0000000..87b6eb0 --- /dev/null +++ b/nuget.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/xIdentityHelper.csproj b/xIdentityHelper.csproj new file mode 100644 index 0000000..74a85d2 --- /dev/null +++ b/xIdentityHelper.csproj @@ -0,0 +1,28 @@ + + + + netstandard2.0 + xSaherelmAI.xIdentityHelper + 1.0.0 + Hadi Khazaee Asl + SaherElm IT Center + + this module provide all Authorization Constants which used in xSaherElm AI project. + + + + icon.png + + + + + + + + + + + + + \ No newline at end of file