public async Task <IActionResult> Post([FromForm] WebLoginRequestViewModel value, string returnUrl = null) { var response = new SingleResponse <LoginResponseViewModel>(); try { if (ModelState.IsValid) { var loginResponseData = new LoginResponseViewModel(); var loginstatus = (await _unit.IUser.AuthenticateUsers(value.UserName, EncryptionLibrary.EncryptText(value.Password))).UserObject; if (loginstatus) { var userdetails = (await _userManager.FindByEmailAsync(value.UserName)); if (userdetails != null) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, userdetails.Id.ToString()), new Claim(ClaimTypes.MobilePhone, userdetails.PhoneNumber.ToString()), new Claim(ClaimTypes.Email, userdetails.Email.ToString()) }), Expires = DateTime.UtcNow.AddDays(1), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); loginResponseData.Token = tokenHandler.WriteToken(token); loginResponseData.EmailId = userdetails.Email; response.Data = loginResponseData; response.Status = true; return(response.ToHttpResponse()); } else { response.Data = null; response.Message = "Not valid user"; response.Status = true; return(response.ToHttpResponse()); } } else { response.Data = null; response.Message = "Not valid user"; response.Status = true; return(response.ToHttpResponse()); } } } catch (Exception ex) { ErrorTrace.Logger(LogArea.ApplicationTier, ex); return(response.ToHttpResponse()); } return(response.ToHttpResponse()); }
public async Task <IActionResult> PostUserVerification([FromForm] LoginRequestViewModel value) { int userId = 0; string userIdStr = User.FindFirstValue(ClaimTypes.Name); if (!string.IsNullOrWhiteSpace(userIdStr)) { userId = Convert.ToInt32(userIdStr); } var dd = User.Identity.Name; var model = new UserResponseViewModel(); var response = new SingleResponse <UserResponseViewModel>(); if (ModelState.IsValid) { if (!(await _unit.IUser.Exists(u => u.PhoneNumber == value.MobileNo)).UserObject) { ModelState.AddModelError("PEmail", "Phone No. Not register"); response.Message = "Phone no. does not register"; response.Status = true; } else { var Id = (await _unit.IUser.GetSelectedAsync(t => t.PhoneNumber.Equals(value.MobileNo) && t.UserType == 1, m => m.Id)).UserObject; var resultdata = await _userManager.FindByIdAsync(Convert.ToString(Id)); string strPhone = ("91" + value.MobileNo); resultdata.FCMToken = value.FcmToken; resultdata.DeviceId = value.DeviceId; resultdata.DeviceType = value.DeviceType; resultdata.ModifiedDate = DateTime.Now; response.Message = "user registered."; response.Status = true; var otpresposedata = await _smsHandler.VerifyOtpAsync(mobile : strPhone, OTP : value.OTP); if (otpresposedata.type == "success") { try { await _userManager.UpdateAsync(resultdata); model.Name = resultdata.FullName; model.EmailId = resultdata.Email; model.MobileNo = resultdata.PhoneNumber; if (!string.IsNullOrEmpty(resultdata.CustomerImage)) { model.userImageProfileImage = resultdata.CustomerImage; } if (resultdata != null) { JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler(); byte[] key = Encoding.ASCII.GetBytes(_appSettings.Secret); SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, Id.ToString()), new Claim(ClaimTypes.MobilePhone, resultdata.PhoneNumber.ToString()) }), Expires = DateTime.UtcNow.AddDays(180), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; SecurityToken token = tokenHandler.CreateToken(tokenDescriptor); model.Token = tokenHandler.WriteToken(token); // remove password before returning value.OTP = null; response.Data = model; response.Message = "OTP verifed successfully"; response.Status = true; return(response.ToHttpResponse()); } else { response.Message = "Worng OTP"; response.Status = false; response.ErrorTypeCode = (int)ErrorMessage.WorngOTP; return(response.ToHttpResponse()); } } catch (Exception ex) { response.Status = false; response.Message = "There was an internal error, please contact to technical support."; ErrorTrace.Logger(LogArea.ApplicationTier, ex); return(response.ToHttpResponse()); } } } } return(response.ToHttpResponse()); }