public async Task <List <string> > GetAllPermissions() { await Task.Yield(); return(_permissionManager.GetAll().Select(o => o.Name).ToList()); }
/// <summary> /// 创建系统角色 /// </summary> /// <param name="dbContext">数据库上下文</param> /// <param name="tenantName">租户名称</param> /// <returns></returns> protected virtual async Task <Role> CreateRoles(DbContext dbContext, string tenantName) { var roleStore = dbContext.Set <Role>(); var rolePermissionStore = dbContext.Set <RolePermission>(); var systemRole = await roleStore.IgnoreQueryFilters() .FirstOrDefaultAsync(o => o.Name == AppConsts.Authorization.SystemRoleName && o.TenantName == tenantName); if (systemRole == null) { systemRole = new Role() { Name = AppConsts.Authorization.SystemRoleName, DisplayName = AppConsts.Authorization.SystemRoleName, Description = AppConsts.Authorization.SystemRoleName, NormalizedName = this._lookupNormalizer.NormalizeName(AppConsts.Authorization.SystemRoleName), IsStatic = true, TenantName = tenantName }; await roleStore.AddAsync(systemRole); await dbContext.SaveChangesAsync(); } // 查询现有权限 var rolePermissions = await rolePermissionStore.IgnoreQueryFilters() .Where(o => o.RoleId == systemRole.Id && o.TenantName == tenantName) .ToListAsync(); // 移除权限 rolePermissionStore.RemoveRange(rolePermissions); // 添加权限 rolePermissions.Clear(); var permissionItems = _permissionManager.GetAll(); if (!string.IsNullOrWhiteSpace(tenantName)) { permissionItems = permissionItems.Where(o => o.Scope == Riven.Identity.Authorization.PermissionAuthorizeScope.Common); } foreach (var item in permissionItems) { rolePermissions.Add(new RolePermission() { RoleId = systemRole.Id, TenantName = tenantName, ClaimType = item.Name, ClaimValue = item.Name }); } await rolePermissionStore.AddRangeAsync(rolePermissions); await dbContext.SaveChangesAsync(); return(systemRole); }
public async Task <ActionResult <IEnumerable <PermissionApi> > > GetAll() { var permissions = await _permissionManager.GetAll(); var response = _mapper.Map <IEnumerable <PermissionApi> >(permissions); return(Ok(response)); }