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)); }
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)); }
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)); }