using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Infrastructure; using Infrastructure.Extensions; using OpenAuth.Auth.Interface; using OpenAuth.Auth.Model; using OpenAuth.Repository.Domain; using SqlSugar; namespace OpenAuth.Auth.AuthStrategies { /// /// 普通用户授权策略 /// public class NormalAuthStrategy : IAuthStrategy { ISqlSugarClient client; UserManager manager; protected SysUser _user; private List _userRoleIds; //用户角色ID public NormalAuthStrategy( ISqlSugarClient client, UserManager userManager ) { this.client = client; manager = userManager; } public List Modules { get { var modules = manager.RoleModules(_userRoleIds).Distinct().OrderBy((r, m) => m.SortNo).Select().ToList(); var usermoduleelements = ModuleElements; foreach (var module in modules) { module.Elements = usermoduleelements.Where(u => u.ModuleId == module.Id).ToList(); } return modules; } } public List ModuleElements { get { return manager.RoleModuleElements(_userRoleIds).OrderBy((r, m) => m.Sort).Select((r, m) => m).ToList(); } } public List Roles { get { return manager.UserRoles(_user.Id).Select((u, r) => r).ToList(); } } public List Resources { get { var resourceIds = client.Queryable() .Where(u => _userRoleIds.Contains(u.RoleId)).Select(u => u.ResourceId) .ToList(); return client.Queryable().Where(u => resourceIds.Contains(u.Id)).ToList(); } } public List Orgs { get { return manager.UserOrgs(_user.Id).Select((u, o) => o).ToList(); } } public List Positions { get { return manager.UserPositons(_user.Id).Select((u, p) => p).ToList(); } } public SysUser User { get { return _user; } set { _user = value; _userRoleIds = manager.UserRoles(_user.Id).Select((u, r) => r.Id).ToList(); } } } }