public GoogleEntity(GoogleDataModel model)
 {
     Email          = model.Email;
     ClientId       = model.ClientId;
     AccessToken    = model.AccessToken;
     RefreshToken   = model.RefreshToken;
     AuthUrl        = AuthConstants.AuthorizeUrl;
     AccessTokenUrl = AuthConstants.AccessTokenUrl;
     Scope          = AuthConstants.Scope;
 }
Ejemplo n.º 2
0
        public static async Task <GoogleDataModel> GetUserLoginData(string accessToken)
        {
            GoogleDataModel facebookLoginModel = new GoogleDataModel();
            var             response           = await _httpClient.GetAsync($"tokeninfo?id_token={accessToken}");

            if (response.IsSuccessStatusCode)
            {
                var result = await response.Content.ReadAsStringAsync();

                facebookLoginModel = JsonConvert.DeserializeObject <GoogleDataModel>(result);
            }
            return(facebookLoginModel);
        }
Ejemplo n.º 3
0
        public async Task <IResponse> GoogleSignIn([FromBody] GoogleLoginModel googleLoginModel)
        {
            ExternalLoginResponse externalLoginResponse = new ExternalLoginResponse();

            externalLoginResponse.IsModelValid = ModelState.IsValid;
            if (ModelState.IsValid)
            {
                GoogleDataModel googleData = await GoogleAPI.GetUserLoginData(googleLoginModel.AccessToken);

                ExternalLoginInfo info = CustomExternalLoginInfo.FromLoginModel("Google", googleData);

                var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, true);

                externalLoginResponse.IsRegistered = result.Succeeded;
                externalLoginResponse.Result       = result;
            }
            else
            {
                externalLoginResponse.Errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage));
            }
            return(externalLoginResponse);
        }
Ejemplo n.º 4
0
        public async Task <IResponse> GoogleRegister([FromBody] GoogleRegisterModel googleRegisterModel)
        {
            ExternalLoginResponse externalLoginResponse = new ExternalLoginResponse();

            externalLoginResponse.IsModelValid = ModelState.IsValid;
            if (ModelState.IsValid)
            {
                GoogleDataModel googleData = await GoogleAPI.GetUserLoginData(googleRegisterModel.AccessToken);

                ExternalLoginInfo info    = CustomExternalLoginInfo.FromLoginModel("Google", googleData);
                Account           account = new Account {
                    UserName = googleRegisterModel.Username, Email = googleData.Email
                };

                var result = await _userManager.CreateAsync(account);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(account, info);

                    account.SetUpPoints(_context);
                    await _context.SaveChangesAsync();

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(account, true);
                    }
                }

                externalLoginResponse.CreateResult = result;
                externalLoginResponse.Errors       = result.Errors.Select(x => x.Description);
            }
            else
            {
                externalLoginResponse.Errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage));
            }

            return(externalLoginResponse);
        }
Ejemplo n.º 5
0
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            string Provider = bindingContext.ValueProvider.GetValue("provider").AttemptedValue;

            AbstractDataModel model;

            switch (Provider)
            {
            case "google":
                model = new GoogleDataModel();
                break;

            case "yahoo":
                model = new YahooDataModel();
                break;

            default:
                model = new RandomDataModel();
                break;
            }

            return(model);
        }