Beispiel #1
0
        protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MustBeQuestionOwnerRequirement requirement)
        {
            var questionId = _httpContextAccessor.HttpContext.GetRouteValue("id").ToString();

            var userIdClaim = context.User.Claims.FirstOrDefault(u => u.Type.Equals("sub"));

            if (userIdClaim == null)
            {
                context.Fail();
                return(Task.CompletedTask);
            }

            var userId = userIdClaim.Value;

            if (!Guid.TryParse(userId, out Guid userIdIdAsGuid))
            {
                context.Fail();
                return(Task.CompletedTask);
            }


            if (!_questionManager.IsOwnerOfQuestionAsync(questionId, userId).Result)
            {
                context.Fail();
                return(Task.CompletedTask);
            }


            context.Succeed(requirement);
            return(Task.CompletedTask);
        }