public async Task <ActionResult <IResponseObject> > PostUser(UserRequestDTO userDTO) { if (await _userRepository.GetByEmail(userDTO.Email) != null) { return(UserCreationConflict(EmailInUseErrorDetail)); } if (await _userRepository.GetByUsername(userDTO.Username) != null) { return(UserCreationConflict(UsernameTakenErrorDetail)); } User user = _mapper.Map <User>(userDTO); user.Email = user.Email; user.Username = user.Username; user.PasswordHash = _passwordHasher.HashPassword(userDTO.Password); user.Role = UserRole.User; user.Verified = false; await _userRepository.Create(user); string siteUrl = string.IsNullOrEmpty(userDTO.SiteUrlOverride) ? $"{HttpContext.Request.Scheme}{Uri.SchemeDelimiter}{HttpContext.Request.Host}" : userDTO.SiteUrlOverride; await _verificationTokenRepository.CreateDefaultAndEmail(user.Email, user.Username, siteUrl); return(CreatedAtAction("GetUser", new { id = user.Id }, _mapper.Map <UserResponseDTO>(user))); }
public async Task <ActionResult <IResponseObject> > PostVerificationToken(VerificationTokenRequestDTO requestDTO) { bool useEmail = !string.IsNullOrEmpty(requestDTO.Email); User user = useEmail ? await _userRepository.GetByEmail(requestDTO.Email.ToLower()) : await _userRepository.GetByUsername(requestDTO.Username.ToLower()); if (user == null) { string errorDetail = useEmail ? BadRequestEmailErrorDetail : BadRequestUsernameErrorDetail; IResponseObject errorResponse = _responseObjectFactory .CreateErrorResponseObject(HttpStatusCode.BadRequest, BadRequestErrorTitle, errorDetail); return(BadRequest(errorResponse)); } string siteUrl = string.IsNullOrEmpty(requestDTO.SiteUrlOverride) ? $"{HttpContext.Request.Scheme}{Uri.SchemeDelimiter}{HttpContext.Request.Host}" : requestDTO.SiteUrlOverride; await _verificationTokenRepository.CreateDefaultAndEmail(user.Email, user.Username, siteUrl); return(NoContent()); }