コード例 #1
0
        public async Task <List <string> > GetAllPermissions()
        {
            await Task.Yield();


            return(_permissionManager.GetAll().Select(o => o.Name).ToList());
        }
コード例 #2
0
ファイル: SeederBase.cs プロジェクト: rivenfx/ProjectQ
        /// <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);
        }
コード例 #3
0
        public async Task <ActionResult <IEnumerable <PermissionApi> > > GetAll()
        {
            var permissions = await _permissionManager.GetAll();

            var response = _mapper.Map <IEnumerable <PermissionApi> >(permissions);

            return(Ok(response));
        }