Admin.Core/src/platform/ZhonTai.Admin/Core/Auth/PermissionHandler.cs

(完整代码) 1KB

using System.Linq;
using System.Threading.Tasks;
using ZhonTai.Admin.Services.User;

namespace ZhonTai.Admin.Core.Auth
{
    /// <summary>
    /// 权限处理
    /// </summary>
    public class PermissionHandler : IPermissionHandler
    {
        private readonly IUserService _userService;
        private readonly IUser _user;

        public PermissionHandler(IUserService userService, IUser user)
        {
            _userService = userService;
            _user = user;
        }

        /// <summary>
        /// 权限验证
        /// </summary>
        /// <param name="api">接口路径</param>
        /// <param name="httpMethod">http请求方法</param>
        /// <returns></returns>
        public async Task<bool> ValidateAsync(string api, string httpMethod)
        {
            if (_user.PlatformAdmin)
            {
                return true;
            }

            var permissions = await _userService.GetPermissionsAsync();

            var valid = permissions.Any(m =>
                m.Path.NotNull() && m.Path.EqualsIgnoreCase($"/{api}")
                && m.HttpMethods.NotNull() && m.HttpMethods.Split(',').Any(n => n.NotNull() && n.EqualsIgnoreCase(httpMethod))
            );

            return valid;
        }
    }
}

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

AI 解读

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

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