Пример #1
0
        public async Task <ActionResult <DeckResult> > GetDeckById([FromRoute] Guid deckId)
        {
            var deckDbo = await deckRepo.FindAsync(deckId);

            if (deckDbo is null)
            {
                return(NotFound());
            }

            return(Ok(mapper.Map <DeckDbo, DeckResult>(deckDbo)));
        }
Пример #2
0
        protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context, MustBeDeckOwnerRequirement requirement)
        {
            var userId = context.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (userId is null)
            {
                context.Fail();
                return;
            }
            var httpContext  = httpContextAccessor.HttpContext;
            var deckIdString = httpContext?.GetRouteValue("deckId")?.ToString();

            if (!Guid.TryParse(deckIdString, out var deckId))
            {
                context.Fail();
                return;
            }

            var deck = await deckRepository.FindAsync(deckId);

            if (deck is null)
            {
                context.Succeed(requirement);
                return;
            }

            if (deck.Author.Id == userId)
            {
                context.Succeed(requirement);
                return;
            }

            context.Fail();
        }
Пример #3
0
        public async Task <ActionResult <IEnumerable <CardResult> > > GetCards([FromRoute] Guid deckId)
        {
            var deck = await deckRepo.FindAsync(deckId);

            if (deck is null)
            {
                return(NotFound());
            }

            return(Ok(mapper.Map <IEnumerable <CardDbo>, IEnumerable <CardResult> >(deck.Cards)));
        }