/// <summary>
        /// 保存权限
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public SavePermissionsResponse SavePermissions(SavePermissionsRequest request)
        {
            var response = new SavePermissionsResponse();

            if (request.Entity == null)
            {
                response.IsSuccess   = false;
                response.MessageCode = "1";
                response.MessageText = "权限信息不能为空";
                return(response);
            }

            try
            {
                var entity = request.Entity.As <PermissionsPo>();

                if (entity.Id == 0)
                {
                    //新增权限
                    EntityLogger.CreateEntity(entity);

                    _permissionsRepository.InsertReturnIdentity(entity);
                }
                else
                {
                    #region 更新权限信息
                    var entitytemp = _permissionsRepository.FindSingle <PermissionsPo>(entity.Id);

                    if (entitytemp == null)
                    {
                        throw new Exception("更新权限信息不存在");
                    }

                    EntityLogger.UpdateEntity(entity);

                    _permissionsRepository.UpdateIgnoreColumns(entity, e => new
                    {
                        e.IsValid,
                        e.CreateTime,
                        e.CreateUserId
                    });
                    #endregion
                }
            }
            catch (Exception ex)
            {
                response.IsSuccess   = false;
                response.MessageCode = "-1";
                response.MessageText = ex.ToString();

                LogManager.LogicLogger.ErrorFormat("保存权限出错:{0}", new { request, err = ex.ToString() }.ToJson());
            }
            return(response);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <SavePermissionsResult> > SavePermissions([FromRoute] int adminId, [FromBody] SavePermissionsRequest request)
        {
            if (!await _authManager.HasAppPermissionsAsync(Types.AppPermissions.SettingsAdministrators))
            {
                return(Unauthorized());
            }

            if (!await _authManager.IsSuperAdminAsync())
            {
                return(Unauthorized());
            }

            var adminInfo = await _administratorRepository.GetByUserIdAsync(adminId);

            await _administratorsInRolesRepository.RemoveUserAsync(adminInfo.UserName);

            if (request.AdminLevel == "SuperAdmin")
            {
                await _administratorRepository.AddUserToRoleAsync(adminInfo.UserName, PredefinedRole.ConsoleAdministrator.GetValue());
            }
            else if (request.AdminLevel == "SiteAdmin")
            {
                await _administratorRepository.AddUserToRoleAsync(adminInfo.UserName, PredefinedRole.SystemAdministrator.GetValue());
            }
            else
            {
                await _administratorRepository.AddUserToRoleAsync(adminInfo.UserName, PredefinedRole.Administrator.GetValue());

                await _administratorRepository.AddUserToRolesAsync(adminInfo.UserName, request.CheckedRoles.ToArray());
            }

            await _administratorRepository.UpdateSiteIdsAsync(adminInfo,
                                                              request.AdminLevel == "SiteAdmin"
                                                              ?request.CheckedSites
                                                              : new List <int>());

            _cacheManager.Clear();

            await _authManager.AddAdminLogAsync("设置管理员权限", $"管理员:{adminInfo.UserName}");

            return(new SavePermissionsResult
            {
                Roles = await _administratorRepository.GetRolesAsync(adminInfo.UserName)
            });
        }