// [ValidateAntiForgeryToken] public async Task <IActionResult> RegisterFBUser([FromBody] RegisterUserModelDto model) { if (ModelState.IsValid) { var user = new User { UserName = model.CustomUserInfo.Email, Email = model.CustomUserInfo.Email, UserLogo = model.CustomUserInfo.UserLogo, FacebookId = model.CustomUserInfo.FacebookId }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user, model.SysUserInfo); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent : false); return(Ok(await Token(user))); } } AddErrors(result); } return(BadRequest(ModelState)); }
public async Task <IActionResult> UserRegistration(RegisterUserModelDto model) { try { var registerResult = await _userManagerService.UserRegistration(model); if (registerResult.IsEmailTaken) { var resp = new ResponseDataObject <RegistrationResponse> { Data = registerResult, Message = "Email Address already taken, Please Use another or login", Status = true, }; return(Ok(resp)); } if (registerResult.IsSucceeded) { var resp = new ResponseDataObject <RegistrationResponse> { Data = registerResult, Message = "User registration was successful", Status = true, }; return(Ok(resp)); } if (registerResult == null) { var resp = new ResponseDataObject { Message = "User registration failed, Please contact Admin", Status = true, }; return(Ok(resp)); } return(BadRequest("User Registration Failed")); } catch (Exception ex) { return(BadRequest(ex)); } }
public async Task <IActionResult> RegisterUser([FromBody] RegisterUserModelDto userModelDto) { var user = _mapper.Map <UserModel>(userModelDto); var foundUser = await _userManager.FindByPhoneNumber(user.PhoneNumber); if (foundUser != null) { var ir = IdentityResult.Failed(new IdentityError() { Code = "invalidPhone", Description = "Phone number is already registered" }); return(BadRequest(ir)); } var result = await _userManager.CreateAsync(user, userModelDto.Password); if (result.Succeeded) { return(CreatedAtAction(nameof(RetrieveUserByEmail), new { email = user.Email }, new {})); } return(BadRequest(result.Errors)); }
public async Task <RegistrationResponse> UserRegistration(RegisterUserModelDto modelDto) { RegistrationResponse resp; if (modelDto == null) { throw new ArgumentNullException(nameof(modelDto)); } var isEmailTaken = await CheckUserExists(e => e.EmailAddress.Equals(modelDto.EmailAddress)); if (isEmailTaken != null) { // if email is already taken resp = new RegistrationResponse { IsEmailTaken = true, IsSucceeded = false, }; return(resp); } //transaction using (var _savieTransaction = _userProfileDbContext.Database.BeginTransaction()) { //create password encrypt CreatePasswordEncrypt(modelDto.Pasword, out byte[] passwordHash, out byte[] passwordSalt); var user = new UserModel { Firstname = modelDto.Firstname, Lastname = modelDto.Lastname, EmailAddress = modelDto.EmailAddress, PhoneNo = modelDto.PhoneNo, Password = modelDto.Pasword, ReferredBy = modelDto.ReferredBy, PaswordHash = passwordHash, PasswordSalt = passwordSalt, DateCreated = DateTime.UtcNow, IsActivated = false, IsActive = false, }; await _userProfileDbContext.AddAsync(user); await _userProfileDbContext.SaveChangesAsync(); if (user.Id > 0) { //if user registration succeeds and email not taken var rnd = new Random(); var rnd1 = rnd.Next(10, 99); var rnd2 = rnd.Next(100, 999); var rnd3 = rnd.Next(1000, 9999); var code = rnd3 + user.EmailAddress.Substring(3, 5).ToUpper() + rnd2 + rnd1; var name = user.Firstname; if (user.EmailAddress != null && user.PhoneNo != null) { var activationCode = new UserActivationModel { ActivationCode = code, SentOn = DateTime.UtcNow, ExpiresAt = DateTime.UtcNow.AddMinutes(5),//expires after 5 Minutes ActivatedOn = null, ComfirmedActivation = false, UserModelId = user.Id, }; //save the activation code await _userProfileDbContext.UserActivationModel.AddAsync(activationCode); await _userProfileDbContext.SaveChangesAsync(); } _savieTransaction.Commit(); // await Task.Run(() => _notification.SendActivationCodeBySMS(name, code, user.PhoneNo)); await Task.Run(() => _notification.SendActivationCodeByMail(name, code, user.EmailAddress)); resp = new RegistrationResponse { IsSucceeded = true, IsEmailTaken = false, }; return(resp); } } // if user registraion fails return(null); }