예제 #1
0
 /// <summary>
 /// Logins the user associated with the specified email and password.
 /// </summary>
 /// <param name="email"></param>
 /// <param name="password"></param>
 /// <returns></returns>
 public async Task <string> LoginUser(string email, string password)
 {
     try
     {
         var auth = _authRepository.GetAuthByEmail(email);
         if (!auth.IsBLocked)
         {
             VerifyAuthPassword(auth, password);
             return(await _loginTokenManager.Add(auth.UserId, LoginTokenModel.LoginTypes.UserPassword));
         }
         throw new UserBlockedException("user is blocked");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #2
0
        /// <summary>
        /// Signs in the user associated with the data extracted from the facebook token.
        /// </summary>
        /// <param name="facebookToken"></param>
        /// <returns></returns>
        public async Task <string> SignIn(string facebookToken)
        {
            using (HttpClient httpClient = new HttpClient())
            {
                try
                {
                    HttpResponseMessage response = GetUserByFacebookToken(facebookToken, httpClient);
                    if (response.IsSuccessStatusCode)
                    {
                        var facebookUserDto = await response.Content.ReadAsAsync <FacebookUserDto>();

                        var    facebookId = facebookUserDto.id;
                        string appToken   = "";
                        if (_facebookAuthRepository.IsFacebookIdFree(facebookId))
                        {
                            var userId = GenerateUserId();
                            appToken = await _loginTokenManager.Add(userId, LoginTokenModel.LoginTypes.Facebook);
                            await AddUserToDatabases(facebookUserDto, userId, appToken);
                        }
                        else
                        {
                            appToken = await FacebookLogin(facebookId);
                        }

                        return(appToken);
                    }
                    else
                    {
                        throw new ArgumentException("Access token is not valid");
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        }