public async Task <UserLoginResponseModel> LoginGoogle(UserGoogleAuthModel model) { var googleClient = new GoogleUserClient(model.Data); var response = await googleClient.User.Profile(); if (!response.IsSuccess || response.Data == null) { throw new ExternalLoginException(); } var data = response.Data; var user = await _appUserManager.FindByEmailAsync(data.Email); if (user == null) { user = new AppUser { Email = data.Email, FirstName = data.GivenName, LastName = data.FamilyName, UserName = data.Email, Image = new MRUserImage { Url = data.Picture }, Socials = new List <UserSocial> { new UserSocial { CreatedTime = DateTime.UtcNow, Name = "GOOGLE", Token = model.Data } } }; var userCreate = await _appUserManager.CreateAsync(user); if (!userCreate.Succeeded) { throw new ExternalLoginException(); } var addRole = await _appUserManager.AddToRoleAsync(user, "USER"); if (!addRole.Succeeded) { throw new ExternalLoginException(); } } else { if (user.Socials == null) { user.Socials = new List <UserSocial>(); } var social = user.Socials.FirstOrDefault(x => x.Name == "GOOGLE"); if (social == null) { user.Socials.Add(new UserSocial { CreatedTime = DateTime.UtcNow, Token = model.Data, Name = "GOOGLE" }); } else { social.CreatedTime = DateTime.UtcNow; social.Token = model.Data; } await _appUserManager.UpdateAsync(user); } return(await AuthUserWithToken(user)); }
public BaseUserNode(GoogleUserClient client) { _client = client; }
public UserNode(GoogleUserClient client) : base(client) { }