public virtual async Task <(LoginResult, TUser)> Login(LoginViewModal model) { if (AuthOptions.SetNameAsPhone) { model.UserName = RepositoryState.ParsePhone(model.UserName); } var user = _dbSet.Where(m => (m.UserName == model.UserName || m.Email == model.UserName) && m.Password == RepositoryState.GetHashString(model.Password)).FirstOrDefault(); if (user == null) { throw new CoreException("User Name or Password not Found", 7); } if (AuthOptions.CheckDeviceId) { if (user.CheckDevice(model.DeviceId)) { user.ChangeLastIncome(model.DeviceId); return(Login(user), user); } user.ShouldSendOtp = true; //TODO return(null, user); } return(Login(user), user); }
public async Task <RegisterResult> RegisterAsync(RegisterUser model) { RegisterResult result = new RegisterResult(); if (AuthOptions.SetNameAsPhone) { model.UserName = RepositoryState.ParsePhone(model.UserName); } var user = _dbSet.FirstOrDefault(m => m.UserName == model.UserName || m.Email == model.UserName); if (user != null) { throw new CoreException("User Name or Password not Found", 7); return(result); } user = AddRegister(model); if (AuthOptions.SetNameAsPhone) { model.UserName = RepositoryState.ParsePhone(model.UserName); if (string.IsNullOrEmpty(model.UserName)) { throw new CoreException("UserName is Not Valid", 6); } user.PhoneNumber = model.UserName; } //_dbSet.Add(user); Add(user); result.IsRegister = true; result.Name = user.UserName; return(result); }
public virtual async Task <NetResult <SuccessResult> > IsRegister(string userName) { SuccessResult result = new SuccessResult(); try { if (AuthModalOption.SetNameAsPhone && !userName.Contains("@")) { userName = RepositoryState.ParsePhone(userName); } var user = _user.GetFirst(m => m.UserName == userName || m.Email == userName); if (user == null) { result.Success = false; } else { result.Success = true; } return(result); } catch (Exception ext) { result.Success = false; //return ext; } return(result); }
public async Task <ResponseData> SendOtp(string phoneNumber, string orginator = "3700") { try { var partner = this.GetProject(_project, DefaultRest); var message = SendModal.Create(partner); partner.RunConfig(_confList, message); message.Messages.Add(new Message() { Recipient = RepositoryState.ParsePhone(phoneNumber), MessageId = "123456", Sms = new Sms() { Originator = orginator, Content = new Entity.Sms.Content() } }); RestViewModal viewModal = new RestViewModal() { Header = Request.Headers.ToDict() }; var result = await _message.SendOtp(partner, message, viewModal); return(this.GetResponse(result)); } catch (Exception ext) { return(this.GetResponse()); } }
public virtual async Task <TUser> GetByUserName(string userName) { TUser user = null; if (AuthOptions.SetNameAsPhone) { user = _dbSet.FirstOrDefault(m => m.UserName == RepositoryState.ParsePhone(userName)); } else { user = _dbSet.FirstOrDefault(m => m.UserName == userName); } return(user); //return _dbSet.FirstOrDefault(m => m.UserName == userName); }
/// <summary> /// this Method use for Activate user Using sms confirm /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <LoginResult> ActivateUser(ActivateUserModel model) { TUser user = null; if (AuthOptions.SetNameAsPhone) { user = GetFirst(m => m.UserName == RepositoryState.ParsePhone(model.UserName)); } else { user = GetFirst(m => m.UserName == model.UserName); } if (CheckUserOtp(user, model.Otp)) { user.AddDeviceId(model.DeviceId, model.DeviceName); await Update(user); return(Login(user)); } else { throw new CoreException("Activate User", 1); } }