Esempio n. 1
0
        /// <summary>
        /// این متد پس از احراز هویت و ایجاد رکورد لاگین ، رکورد کاربر مورد نظر را بر میگرداند
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public virtual async Task <Tuple <bool, User> > Login(string email, string password)
        {
            try
            {
                //تایید کاربری
                var user = await _userManager.FindAsync(email, password);

                if (user == null)
                {
                    return(new Tuple <bool, User>(false, null));
                }
                //تایید احراز هویت
                var authentication = _authenticationRepository.Where(a => a.Id == user.AuthenticationId).FirstOrDefault();
                if (authentication == null)
                {
                    return(new Tuple <bool, User>(false, user));
                }
                //ایجاد رکورد مربوط به جدول لاگین کاربر
                _userLoginRepository.AddOrUpdate(new UserLogin {
                    UserId = user.Id, LoginProvider = "111", ProviderKey = "222"
                });
                _unitOfWork.SaveChanges();
                return(new Tuple <bool, User>(true, user));
            }
            catch (Exception ex)
            {
                return(new Tuple <bool, User>(false, null));
            }
        }