Initial ...
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user