BootstrapAdmin/Bootstrap.Client.DataAccess.../Helper/RoleHelper.cs

40 lines
1.3 KiB
C#

using Longbow.Cache;
using MongoDB.Driver;
using System.Collections.Generic;
using System.Linq;
namespace Bootstrap.Client.DataAccess.MongoDB
{
class RoleHelper
{
/// <summary>
///
/// </summary>
public const string RetrieveRolesDataKey = "RoleHelper-RetrieveRoles";
/// <summary>
/// 查询所有角色
/// </summary>
/// <returns></returns>
public static IEnumerable<Role> Retrieves() => CacheManager.GetOrAdd(RetrieveRolesDataKey, key => DbManager.Roles.Find(FilterDefinition<Role>.Empty).ToList());
/// <summary>
///
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
public static IEnumerable<string> RetrievesByUserName(string userName)
{
var roles = new List<string>();
var user = UserHelper.Retrieves().FirstOrDefault(u => u.UserName.ToLowerInvariant() == userName.ToLowerInvariant());
if (user != null)
{
var role = Retrieves();
roles.AddRange(role.Where(r => user.Roles.Any(rl => rl == r.Id)).Select(r => r.RoleName));
if (roles.Count == 0) roles.Add("Default");
}
return roles;
}
}
}