Пример #1
0
        public IActionResult Authenticate([FromBody] UserCredentialsDto credentials,
                                          [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            var user = _weblogDataRepository.Authenticate(
                credentials.EmailAddress, credentials.Password);

            if (user is null)
            {
                return(Unauthorized());
            }

            var userToReturn = _mapper.Map <UserDto>(user);

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(userToReturn));
            }

            var links         = CreateLinksForUser(user.UserId);
            var userWithLinks = new UserDtoWithLinks(userToReturn, links);

            return(Ok(userWithLinks));
        }
Пример #2
0
        public IActionResult CreateUser(
            [FromBody] UserForCreationDto user,
            [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            var userEntity = _mapper.Map <User>(user);

            _weblogDataRepository.AddUser(userEntity);

            try
            {
                _weblogDataRepository.Save();
            }
            catch (ApplicationException ex)
            {
                // adding user with email address that already exists
                ModelState.AddModelError(nameof(user.EmailAddress),
                                         ex.Message + "\n" + ex?.InnerException.Message);

                return(ErrorHandler.UnprocessableEntity(ModelState, HttpContext));
            }

            var newUserToReturn = _mapper.Map <UserDto>(userEntity);

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(CreatedAtRoute(nameof(GetUser),
                                      new { userId = newUserToReturn.UserId },
                                      newUserToReturn));
            }

            var links         = CreateLinksForUser(newUserToReturn.UserId);
            var userWithLinks = new UserDtoWithLinks(newUserToReturn, links);

            return(CreatedAtRoute(nameof(GetUser),
                                  new { userId = newUserToReturn.UserId },
                                  userWithLinks));
        }
Пример #3
0
        public IActionResult GetUser(int userId,
                                     [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            var userEntity = _weblogDataRepository.GetUser(userId);

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

            var userToReturn = _mapper.Map <UserDto>(userEntity);

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(userToReturn));
            }

            var userWithLinks = new UserDtoWithLinks
                                    (userToReturn, CreateLinksForUser(userId));

            return(Ok(userWithLinks));
        }