Infrastructure/OpenAuth.Auth/AuthStrategies/NormalAuthStrategy.cs

101 lines
2.6 KiB
C#
Raw Normal View History

2024-11-13 09:19:06 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Infrastructure;
using Infrastructure.Extensions;
2025-05-13 15:18:14 +08:00
using OpenAuth.Auth.Interface;
using OpenAuth.Auth.Model;
2024-11-13 09:19:06 +08:00
using OpenAuth.Repository.Domain;
using SqlSugar;
2025-05-13 15:18:14 +08:00
namespace OpenAuth.Auth.AuthStrategies
2024-11-13 09:19:06 +08:00
{
/// <summary>
/// 普通用户授权策略
/// </summary>
2025-05-13 15:18:14 +08:00
public class NormalAuthStrategy : IAuthStrategy
2024-11-13 09:19:06 +08:00
{
ISqlSugarClient client;
UserManager manager;
protected SysUser _user;
private List<long> _userRoleIds; //用户角色ID
public NormalAuthStrategy(
2025-05-13 15:18:14 +08:00
ISqlSugarClient client,
2024-11-13 09:19:06 +08:00
UserManager userManager
2025-05-13 15:18:14 +08:00
)
2024-11-13 09:19:06 +08:00
{
2025-05-13 15:18:14 +08:00
this.client = client;
2024-11-13 09:19:06 +08:00
manager = userManager;
}
public List<ModuleView> Modules
{
get
{
var modules = manager.RoleModules(_userRoleIds).Distinct().OrderBy((r, m) => m.SortNo).Select<ModuleView>().ToList();
var usermoduleelements = ModuleElements;
foreach (var module in modules)
{
2025-05-13 15:18:14 +08:00
module.Elements = usermoduleelements.Where(u => u.ModuleId == module.Id).ToList();
2024-11-13 09:19:06 +08:00
}
return modules;
}
}
public List<SysModuleElement> ModuleElements
{
get
{
return manager.RoleModuleElements(_userRoleIds).OrderBy((r, m) => m.Sort).Select((r, m) => m).ToList();
}
}
public List<SysRole> Roles
{
get { return manager.UserRoles(_user.Id).Select((u, r) => r).ToList(); }
}
public List<SysResource> Resources
{
get
{
2025-05-13 15:18:14 +08:00
var resourceIds = client.Queryable<SysRoleResource>()
.Where(u => _userRoleIds.Contains(u.RoleId)).Select(u => u.ResourceId)
.ToList();
return client.Queryable<SysResource>().Where(u => resourceIds.Contains(u.Id)).ToList();
2024-11-13 09:19:06 +08:00
}
}
public List<SysOrg> Orgs
{
get
{
return manager.UserOrgs(_user.Id).Select((u, o) => o).ToList();
}
}
public List<SysPosition> 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();
}
}
2025-05-13 15:18:14 +08:00
2024-11-13 09:19:06 +08:00
}
}