public async Task <IActionResult> CreateClient([FromBody] UserToSignUpDTO userResource) { var user = _mapper.Map <User> (userResource); user.Role = Role.Client; user.EmailVerified = false; if (await _userRepository.UserExists(user)) { return(BadRequest("User already exists")); } try { var userCreated = await _userRepository.CreateUser(user, userResource.Password); if (userCreated.Email == user.Email) { StringValues origin; var token = _userRepository.CreateToken(user); Request.Headers.TryGetValue("Origin", out origin); Message message = new Message(); message.Subject = "Account Confirmation"; message.FromEmail = "*****@*****.**"; message.FromName = "234Spaces Admin"; message.ToName = user.Name; message.ToEmail = user.Email; message.PlainContent = null; message.HtmlContent = FormattedEmailBody("Account Confirmation", $"Please confirm that {user.Email} is your email address by clicking on the button below", $"{origin.ToString()}/confirm-email?token={token}", "Confirm Account", true); _userRepository.EmailSender(message); } return(Ok()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <IActionResult> ResendVerificationEmail([FromBody] UserToSignUpDTO userToSignUpDTO) { var userToVerifyEmail = _mapper.Map <User>(userToSignUpDTO); if (await _userRepository.UserExists(userToVerifyEmail)) { var user = await _userRepository.GetUser(userToVerifyEmail.Email); if (user == null) { return(NotFound("Specified user doesn't exist")); } StringValues origin; var token = _userRepository.CreateToken(user); Request.Headers.TryGetValue("Referer", out origin); Message message = new Message(); message.Subject = "Account Confirmation"; message.FromEmail = "*****@*****.**"; message.FromName = "234Spaces Admin"; message.ToName = user.Name; message.ToEmail = user.Email; message.PlainContent = null; message.HtmlContent = FormattedEmailBody("Account Confirmation", $"Please confirm that {user.Email} is your email address by clicking on the button below", $"{origin.ToString()}/confirm-email?token={token}", "Confirm Account", true); _userRepository.EmailSender(message); return(Ok()); } return(BadRequest("An unexpected error occured")); }
public async Task <IActionResult> VerifyUser([FromBody] UserToSignUpDTO userToSignUpDTO) { var userToVerifyEmail = _mapper.Map <User>(userToSignUpDTO); if (userToVerifyEmail == null) { return(BadRequest("User cannot be null")); } if (await _userRepository.UserExists(userToVerifyEmail) == false) { return(BadRequest("User does not exist")); } userToVerifyEmail.EmailVerified = true; _userRepository.UpdateUserStatus(userToVerifyEmail); return(Ok()); }
public async Task <IActionResult> SignUp(UserToSignUpDTO model) { ApplicationUser newUser = new ApplicationUser { Id = Guid.NewGuid().ToString(), UserName = model.Email, Email = model.Email, LastName = model.LastName, FirstName = model.FirstName, PhoneNumber = model.PhoneNumber }; var result = await _userManager.CreateAsync(newUser, model.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(newUser, model.Role); if (model.Role != "Admin") { UserMainCurrencyDetail mainCurrency; try { mainCurrency = new UserMainCurrencyDetail { ApplicationUserId = newUser.Id, MainCurrency = model.MainCurrency }; await _userMainCurrencyRepository.AddMainCurrency(mainCurrency); } catch (Exception e) { await _userManager.DeleteAsync(newUser); _logger.LogError(e.Message); return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = "Failed to add main currency" }))); } try { Wallet wallet = new Wallet { WalletId = Guid.NewGuid().ToString(), ApplicationUserId = newUser.Id, WalletCurrency = model.MainCurrency }; await _walletRepository.AddWallet(wallet); } catch (Exception e) { await _userManager.DeleteAsync(newUser); await _userMainCurrencyRepository.DeleteMainCurrency(mainCurrency); _logger.LogError(e.Message); return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = "Failed to add wallet" }))); } } } else { foreach (var err in result.Errors) { ModelState.AddModelError("", err.Description); } return(BadRequest(ResponseMessage.Message("Bad request", errors: new { message = ModelState }))); } return(Ok(ResponseMessage.Message("Success! User created", data: new { newUser.Id }))); }