Initial ...
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
bin
|
||||
obj
|
||||
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using xCommons.Extensions;
|
||||
using xIdentityModels.Models;
|
||||
|
||||
namespace xIdentityHelper.Extensions
|
||||
{
|
||||
public static class XIdentityHelperExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Check User Claims ia Admin Role or not ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check Actor is Valid for UserSelectByParam or not ...
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="userSelectByParam"></param>
|
||||
/// <returns></returns>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts an String to XUserRole ...
|
||||
/// </summary>
|
||||
/// <param name="role"></param>
|
||||
/// <returns></returns>
|
||||
public static XUserRole ToXUserRole(this string role)
|
||||
{
|
||||
//
|
||||
var result = XUserRole.User;
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
if (role.IsNullOrEmpty())
|
||||
{
|
||||
XException.InvalidArgs.Throw();
|
||||
}
|
||||
|
||||
//
|
||||
var roles = new List<string>
|
||||
{
|
||||
role
|
||||
};
|
||||
result = roles.GetTopRole();
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve User Top Role based on Role Lists ...
|
||||
/// </summary>
|
||||
/// <param name="roles"></param>
|
||||
/// <returns></returns>
|
||||
public static XUserRole GetTopRole(this IEnumerable<string> 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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check User Roles has Specified Permissions or not ...
|
||||
/// </summary>
|
||||
/// <param name="roles"></param>
|
||||
/// <param name="role"></param>
|
||||
/// <returns></returns>
|
||||
public static bool HasRolePermissions(this IEnumerable<string> 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<string> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
+157
@@ -0,0 +1,157 @@
|
||||
using System.Collections.Generic;
|
||||
using xExceptions.Attributes;
|
||||
|
||||
namespace xIdentityHelper
|
||||
{
|
||||
public partial struct XUserRoles
|
||||
{
|
||||
/// <summary>
|
||||
/// Must Top Role of System ...
|
||||
/// </summary>
|
||||
public const string ADMIN = "admin";
|
||||
|
||||
/// <summary>
|
||||
/// مدیر مسئول
|
||||
/// </summary>
|
||||
public const string RESPONSIBLE_MANAGER = "responsible_manager";
|
||||
|
||||
/// <summary>
|
||||
/// روزنامه نگار
|
||||
/// </summary>
|
||||
public const string JOURNALIST = "journalist";
|
||||
|
||||
/// <summary>
|
||||
/// سر دبیر
|
||||
/// </summary>
|
||||
public const string CHIEF_CLERK = "chief_clerk";
|
||||
|
||||
/// <summary>
|
||||
/// دستیار سرد بیر
|
||||
/// </summary>
|
||||
public const string CHIEF_CLERK_ASSISTANT = "chief_clerk_assistant";
|
||||
|
||||
/// <summary>
|
||||
/// دبیر
|
||||
/// </summary>
|
||||
public const string ACTUARY = "actuary";
|
||||
|
||||
/// <summary>
|
||||
/// دستیار دبیر
|
||||
/// </summary>
|
||||
public const string ACTUARY_ASSISTANT = "actuary_assistant";
|
||||
|
||||
/// <summary>
|
||||
/// خبرنگار
|
||||
/// </summary>
|
||||
public const string REPORTER = "reporter";
|
||||
|
||||
/// <summary>
|
||||
/// دستیار خبرنگار
|
||||
/// </summary>
|
||||
public const string REPORTER_ASSISTANT = "reporter_assistant";
|
||||
|
||||
/// <summary>
|
||||
/// دستیار
|
||||
/// </summary>
|
||||
public const string AGENT = "agent";
|
||||
|
||||
/// <summary>
|
||||
/// کاربر
|
||||
/// </summary>
|
||||
public const string USER = "user";
|
||||
}
|
||||
|
||||
public enum XUserRole
|
||||
{
|
||||
/// <summary>
|
||||
/// Must Top Role of System ...
|
||||
/// </summary>
|
||||
[StringValue("admin")]
|
||||
Admin = 10,
|
||||
|
||||
/// <summary>
|
||||
/// مدیر مسئول
|
||||
/// </summary>
|
||||
[StringValue("responsible_manager")]
|
||||
ResponsibleManager = 9,
|
||||
|
||||
/// <summary>
|
||||
/// روزنامه نگار
|
||||
/// </summary>
|
||||
[StringValue("journalist")]
|
||||
Journalist = 8,
|
||||
|
||||
/// <summary>
|
||||
/// سر دبیر
|
||||
/// </summary>
|
||||
[StringValue("chief_clerk")]
|
||||
ChiefClerk = 7,
|
||||
|
||||
/// <summary>
|
||||
/// دستیار سرد بیر
|
||||
/// </summary>
|
||||
[StringValue("chief_clerk_assistant")]
|
||||
ChiefClerkAssistant = 6,
|
||||
|
||||
/// <summary>
|
||||
/// دبیر
|
||||
/// </summary>
|
||||
[StringValue("actuary")]
|
||||
Actuary = 5,
|
||||
|
||||
/// <summary>
|
||||
/// دستیار دبیر
|
||||
/// </summary>
|
||||
[StringValue("actuary_assistant")]
|
||||
ActuaryAssistant = 4,
|
||||
|
||||
/// <summary>
|
||||
/// خبرنگار
|
||||
/// </summary>
|
||||
[StringValue("reporter")]
|
||||
Reporter = 3,
|
||||
|
||||
/// <summary>
|
||||
/// دستیار خبرنگار
|
||||
/// </summary>
|
||||
[StringValue("reporter_assistant")]
|
||||
ReporterAssistant = 2,
|
||||
|
||||
/// <summary>
|
||||
/// دستیار
|
||||
/// </summary>
|
||||
[StringValue("agent")]
|
||||
Agent = 1,
|
||||
|
||||
/// <summary>
|
||||
/// کاربر
|
||||
/// </summary>
|
||||
[StringValue("user")]
|
||||
User = 0
|
||||
}
|
||||
|
||||
public static class XUserRoleHelper
|
||||
{
|
||||
public static List<string> GetAllRoles()
|
||||
{
|
||||
//
|
||||
var result = new List<string>
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<add key="nuget" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||
<add key="liget" value="https://nuget.saherelmhub.ir/v3/index.json" protocolVersion="3" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
@@ -0,0 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<!-- Runtime Definitions -->
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<PackageId>xSaherelmAI.xIdentityHelper</PackageId>
|
||||
<Version>1.0.0</Version>
|
||||
<Authors>Hadi Khazaee Asl</Authors>
|
||||
<Company>SaherElm IT Center</Company>
|
||||
<Description>
|
||||
this module provide all Authorization Constants which used in xSaherElm AI project.
|
||||
</Description>
|
||||
|
||||
<!-- Icon Definition -->
|
||||
<PackageIcon>icon.png</PackageIcon>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Icon Handling -->
|
||||
<ItemGroup>
|
||||
<None Include="../../Documents/Resources/Images/favicon.png" Link="icon.png" Pack="true"
|
||||
PackagePath="\icon.png" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Local Dependencies -->
|
||||
<ItemGroup>
|
||||
<PackageReference Include="xDashboard.xIdentityService" Version="1.0.0" />
|
||||
<!-- <ProjectReference Include="../xIdentityService/xIdentityService.csproj" /> -->
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user