src/SSCMS.Web/Controllers/Admin/Settings/Administrators/AdministratorsController.GetPermissions.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SSCMS.Core.Utils;
using SSCMS.Models;

namespace SSCMS.Web.Controllers.Admin.Settings.Administrators
{
    public partial class AdministratorsController
    {
        [HttpGet, Route(RoutePermissions)]
        public async Task<ActionResult<GetPermissionsResult>> GetPermissions(int adminId)
        {
            if (!await _authManager.HasAppPermissionsAsync(MenuUtils.AppPermissions.SettingsAdministrators))
            {
                return Unauthorized();
            }

            var isSuperAdmin = await _authManager.IsSuperAdminAsync();

            List<string> roles;
            var allSites = new List<Site>();
            string adminLevel;
            var checkedSites = new List<int>();
            var checkedRoles = new List<string>();

            if (isSuperAdmin)
            {
                roles = await _roleRepository.GetRoleNamesAsync();
                roles = roles.Where(x => !_roleRepository.IsPredefinedRole(x)).ToList();

                allSites = await _siteRepository.GetSitesAsync();

                var adminInfo = await _administratorRepository.GetByUserIdAsync(adminId);
                var adminRoles = await _administratorsInRolesRepository.GetRolesForUserAsync(adminInfo.UserName);
                if (_roleRepository.IsConsoleAdministrator(adminRoles))
                {
                    adminLevel = "SuperAdmin";
                }
                else if (_roleRepository.IsSystemAdministrator(adminRoles))
                {
                    adminLevel = "SiteAdmin";
                    checkedSites = adminInfo.SiteIds;
                }
                else
                {
                    adminLevel = "Admin";
                    foreach (var role in roles)
                    {
                        if (!checkedRoles.Contains(role) && !_roleRepository.IsPredefinedRole(role) && adminRoles.Contains(role))
                        {
                            checkedRoles.Add(role);
                        }
                    }
                }
            }
            else
            {
                roles = await _roleRepository.GetRoleNamesByCreatorUserNameAsync(_authManager.AdminName);
后面还有 26 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。