コード例 #1
0
ファイル: AuthorizationConfig.cs プロジェクト: joaofx/Miru
        public async Task <AuthorizationResult> Evaluate <TRequest>(TRequest request, FeatureInfo feature)
        {
            if (feature.IsIn("Admin"))
            {
                if (_userSession.IsAnonymous || (await _userSession.User())?.IsAdmin == false)
                {
                    return(AuthorizationResult.Fail("Unauthorized access"));
                }
            }

            if (feature.Implements <IMustBeAuthenticated>() && _userSession.IsAnonymous)
            {
                return(AuthorizationResult.Fail("Authentication is required"));
            }

            return(AuthorizationResult.Succeed());
        }
コード例 #2
0
        public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next)
        {
            var featureInfo = new FeatureInfo(typeof(TRequest));

            if (featureInfo.Implements <IMiruJob>())
            {
                return(await next());
            }

            var result = await _rules.Evaluate(request, featureInfo);

            if (result.IsAuthorized)
            {
                return(await next());
            }

            throw new UnauthorizedException(result.FailureMessage);
        }