using Easy.AuthorityManagement.Clean.Contracts.Models; using Easy.AuthorityManagement.Clean.Shared.IServices; using Easy.AuthorityManagement.Clean.Shared.Modles; namespace Easy.AuthorityManagement.Clean.Application; public class IdentityUserAppService : ApiService { protected IRepository TenantRepository { get; } protected IRepository IdentityRoleRepository { get; } protected IRepository IdentityUserRoleRepository { get; } protected IPermissionGrantManager PermissionGrantManager { get; } protected IMapper Mapper { get; } public IdentityUserAppService( IRepository tenantRepository, IRepository identityRoleRepository, IRepository identityUserRoleRepository, IMapper mapper) { TenantRepository = tenantRepository; IdentityRoleRepository = identityRoleRepository; IdentityUserRoleRepository = identityUserRoleRepository; Mapper = mapper; } /// /// 绑定角色 /// public virtual async Task CreateBindRoleAsync(long id, long roleId, long tenantId) { var identityUserRole = await IdentityUserRoleRepository.Set .FirstOrDefaultAsync(o => o.UserId == id && o.RoleId == roleId && o.TenantId == tenantId); if (identityUserRole == null) { var userRole = new IdentityUserRole(id, roleId, tenantId); await IdentityUserRoleRepository.Set.SingleInsertAsync(userRole); } return ApiResult.Success(); } /// /// 获得所有角色 /// public virtual async Task> GetRolesAsync(long id, long tenantId) { var identityRoleIds = await IdentityUserRoleRepository.Set .Where(o => o.UserId == id && o.TenantId == tenantId) .Select(o => o.RoleId).ToListAsync(); if (identityRoleIds.Count != 0) { var userRoleModels = await IdentityRoleRepository.Set .Where(o => identityRoleIds.Contains(o.Id) && o.TenantId == tenantId) .Select(o => new IdentityUserRoleModel() { RoleId = o.Id, RoleName = o.RoleName }).ToListAsync(); return ApiResult.ValuesSuccess(userRoleModels); } return ApiResult.ValuesSuccess(new()); } /// /// 获得许可信息 /// public virtual async Task> GetPermissionGrantsAsync(long id, long tenantId) { var identityRoleIds = await IdentityUserRoleRepository.Set .Where(o => o.UserId == id && o.TenantId == tenantId) .Select(o => o.RoleId) .ToListAsync(); var input = identityRoleIds.Select(o => ("R", o)).ToList(); input.Add(("U", id)); var permissionNames = await PermissionGrantManager.GetPermissionNamesAsync(input.ToArray()); var values = PermissionGrantManager.GetPermissionGroups(permissionNames); return ApiResult.Values(values); } }