public UserToken Login(AccountLoginRequst loginInfo, HttpContext httpContext, IConfiguration config) { if (loginInfo.MobileNumber == null || loginInfo.SmsKey == null) { throw new CustomException("اطلاعات وارد شده معتبر نیست", ErrorsPreFix.AUTH_HELPER + ERROR_LOGIN + "00"); } var uniqueKey = _userService.GetUserUniqueKey(loginInfo.MobileNumber, httpContext.Request.Headers["User-Agent"]); _onlineUserService.Logout(uniqueKey); var user = _userService.GetAllIncluding(u => u.Role).FirstOrDefault(u => u.MobileNumber == loginInfo.MobileNumber); if (user == null || user.Id == 0) { var newUser = new User() { CreatedByUserId = 1, MobileNumber = loginInfo.MobileNumber, Status = (int)UserStatus.Active, Role = _roleService.Find(r => r.Name.ToLower() == "tester").Data, RefreshToken = new Guid().ToString() }; _userService.Add(newUser, 1); user = newUser; } var sms = _smsService.FindBy(s => s.Reciver == user.MobileNumber) .Data.OrderByDescending(s => s.SendDate) .FirstOrDefault(); if (sms == null) { throw new CustomException("کدی برای کاربر ارسال نشده", ErrorsPreFix.AUTH_HELPER + ERROR_LOGIN + "02"); } if (sms.Status != (int)SmsStatus.Success) { throw new CustomException("کد قبلا استفاده شده", ErrorsPreFix.AUTH_HELPER + ERROR_LOGIN + "03"); } if (loginInfo.SmsKey != sms.Key) { throw new CustomException("کد دریافت شده معتبر نمی باشد", ErrorsPreFix.AUTH_HELPER + ERROR_LOGIN + "04"); } sms.Status = (int)SmsStatus.Used; _smsService.Update(sms, user.Id); var userToken = GenerateJsonWebToken(uniqueKey, config, user, loginInfo.RememberMe); userToken.Status = (int)UserTokenStatus.Created; userToken.User = user; _userTokenService.Add(userToken, user.Id); // _onlineUserService.AddUser(uniqueKey, userToken); return(userToken); }
public JsonResult Login(AccountLoginRequst loginInfo) { var result = _authHelper.Login(loginInfo, HttpContext, _config); return(new JsonResult(result)); }