Пример #1
0
        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));
        }