public IActionResult AddGoogleAccountPhone(string refreshToken, string accessToken, long groupId, long userId) { var ret = string.Empty; var objRefresh = string.Empty; var dbr = new DatabaseRepository(_logger, _appEnv); var ObjoAuthTokenGPlus = new oAuthTokenGPlus(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); var objToken = new oAuthToken(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); var userinfo = new JObject(); try { var user = objToken.GetUserInfo("self", accessToken); //_logger.LogInformation(user); userinfo = JObject.Parse(JArray.Parse(user)[0].ToString()); var people = objToken.GetPeopleInfo("self", accessToken, Convert.ToString(userinfo["id"])); userinfo = JObject.Parse(JArray.Parse(people)[0].ToString()); } catch (Exception ex) { _logger.LogInformation(ex.Message); _logger.LogError(ex.StackTrace); ret = "Access Token Not Found"; return(Ok(ret)); } var gplusAcc = GplusRepository.getGPlusAccount(Convert.ToString(userinfo["id"]), _redisCache, dbr); if (gplusAcc != null && gplusAcc.IsActive) { if (gplusAcc.UserId == userId) { return(BadRequest("GPlus account already added by you.")); } return(BadRequest("GPlus account added by other user.")); } var ngrp = dbr.Find <Groups>(t => t.adminId == userId && t.id == groupId).FirstOrDefault(); if (ngrp == null) { return(Ok("group not exist")); } // Adding GPlus Profile var x = GplusRepository.AddGplusAccount(userinfo, dbr, userId, ngrp.id, accessToken, refreshToken, _redisCache, _appSettings, _logger); if (x == 1) { return(Ok("Gplus Account Added Successfully")); } return(BadRequest("Issues while adding account")); }
public IActionResult GoogleLogin(string code, SBAccountType accType) { var refreshToken = string.Empty; string accessToken; var objoAuthTokenGPlus = new oAuthTokenGPlus(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); var objToken = new oAuthToken(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); JObject userInfo; try { var objRefresh = objoAuthTokenGPlus.GetRefreshToken(code); var objAccessToken = JObject.Parse(objRefresh); _logger.LogInformation(objAccessToken.ToString()); try { refreshToken = objAccessToken["refresh_token"].ToString(); } catch (Exception ex) { _logger.LogError(ex.StackTrace); } accessToken = objAccessToken["access_token"].ToString(); var user = objToken.GetUserInfo("self", accessToken); _logger.LogInformation(user); userInfo = JObject.Parse(JArray.Parse(user)[0].ToString()); } catch (Exception ex) { _logger.LogError(ex.StackTrace); return(Ok("Access Token Not Found")); } var emailId = string.Empty; try { emailId = Convert.ToString(userInfo["email"]); } catch (Exception ex) { _logger.LogError(ex.StackTrace); } if (string.IsNullOrEmpty(emailId)) { return(Ok("Google not returning Email")); } try { var inMemUser = _redisCache.Get <User>(emailId); if (inMemUser != null) { return(Ok(inMemUser)); } } catch (Exception ex) { _logger.LogError(ex.StackTrace); } var dbr = new DatabaseRepository(_logger, _appEnv); var signedInUser = dbr.FindFirstMatch <User>(t => t.EmailId.Equals(emailId)); if (signedInUser != null) { if (!signedInUser.SocialLoginEnableGo) { return(Ok("Account isn't sign-up with google!")); } CustomTaskFactory.Instance.Start(() => { if (signedInUser.RefrralCode == null) { signedInUser.RefrralCode = $"{SocioboardApiConstants.ApplicationName}" + signedInUser.Id; } signedInUser.LastLoginTime = DateTime.UtcNow; dbr.Update(signedInUser); _redisCache.Set(signedInUser.EmailId, signedInUser); }); return(Ok(signedInUser)); } var googleUser = new User { AccountType = accType, PaymentType = PaymentType.paypal, ActivationStatus = SBUserActivationStatus.Active, CreateDate = DateTime.UtcNow, EmailId = emailId, ExpiryDate = DateTime.UtcNow.AddDays(1), UserName = $"{SocioboardApiConstants.ApplicationName}", EmailValidateToken = "Google", UserType = "User", LastLoginTime = DateTime.UtcNow, SocialLoginEnableGo = true, SocialLoginEnableFb = false, PaymentStatus = SBPaymentStatus.UnPaid, RegistrationType = SBRegistrationType.Google, TrailStatus = UserTrailStatus.active }; if (googleUser.AccountType == SBAccountType.Free) { googleUser.ExpiryDate = DateTime.UtcNow.AddDays(15); } try { googleUser.FirstName = Convert.ToString(userInfo["name"]); } catch (Exception ex) { _logger.LogError(ex.StackTrace); } var savedStatus = dbr.Add(googleUser); var googleUserAccount = dbr.FindFirstMatch <User>(t => t.EmailId.Equals(googleUser.EmailId)); CustomTaskFactory.Instance.Start(() => { if (savedStatus != 1 || googleUserAccount == null) { return; } _redisCache.Set(emailId, googleUserAccount); var group = new Groups(); group.adminId = googleUserAccount.Id; group.createdDate = DateTime.UtcNow; group.groupName = SocioboardConsts.DefaultGroupName; savedStatus = dbr.Add(group); if (savedStatus != 1) { return; } var groupDetails = dbr.Find <Groups>(t => t.adminId == googleUserAccount.Id && t.groupName.Equals(SocioboardConsts.DefaultGroupName)) .FirstOrDefault(); if (groupDetails == null) { return; } GroupMembersRepository.CreateGroupMember(groupDetails.id, googleUserAccount, _redisCache, dbr); GplusRepository.AddGplusAccount(userInfo, dbr, googleUserAccount.Id, groupDetails.id, accessToken, refreshToken, _redisCache, _appSettings, _logger); }); return(Ok(googleUserAccount)); }
public IActionResult GoogleLoginPhone(string refreshToken, string accessToken, SBAccountType accType) { var ret = string.Empty; var objRefresh = string.Empty; var ObjoAuthTokenGPlus = new oAuthTokenGPlus(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); var objToken = new oAuthToken(_appSettings.GoogleConsumerKey, _appSettings.GoogleConsumerSecret, _appSettings.GoogleRedirectUri); var userinfo = new JObject(); try { var user = objToken.GetUserInfo("self", accessToken); _logger.LogInformation(user); userinfo = JObject.Parse(JArray.Parse(user)[0].ToString()); } catch (Exception ex) { _logger.LogInformation(ex.Message); _logger.LogError(ex.StackTrace); ret = "Access Token Not Found"; return(Ok(ret)); } var EmailId = string.Empty; try { EmailId = Convert.ToString(userinfo["email"]); } catch { } if (string.IsNullOrEmpty(EmailId)) { return(Ok("Google Not retuning Email")); } try { var inMemUser = _redisCache.Get <User>(EmailId); if (inMemUser != null) { return(Ok(inMemUser)); } } catch (Exception ex) { _logger.LogInformation(ex.Message); _logger.LogError(ex.StackTrace); } var dbr = new DatabaseRepository(_logger, _appEnv); var lstUser = dbr.Find <User>(t => t.EmailId.Equals(EmailId)); if (lstUser != null && lstUser.Count() > 0) { var d1 = DateTime.UtcNow; //User userTable = dbr.Single<User>(t => t.EmailId == EmailId); //userTable.LastLoginTime = d1; lstUser.First().LastLoginTime = d1; dbr.Update(lstUser.First()); _redisCache.Set(lstUser.First().EmailId, lstUser.First()); return(Ok(lstUser.First())); } { var gplusAcc = GplusRepository.getGPlusAccount(Convert.ToString(userinfo["id"]), _redisCache, dbr); if (gplusAcc != null && gplusAcc.IsActive) { return(BadRequest("GPlus account added by other user.")); } var user = new User(); if (accType == SBAccountType.Free) { user.AccountType = SBAccountType.Free; } else if (accType == SBAccountType.Deluxe) { user.AccountType = SBAccountType.Deluxe; } else if (accType == SBAccountType.Premium) { user.AccountType = SBAccountType.Premium; } else if (accType == SBAccountType.Topaz) { user.AccountType = SBAccountType.Topaz; } else if (accType == SBAccountType.Platinum) { user.AccountType = SBAccountType.Platinum; } else if (accType == SBAccountType.Gold) { user.AccountType = SBAccountType.Gold; } else if (accType == SBAccountType.Ruby) { user.AccountType = SBAccountType.Ruby; } else if (accType == SBAccountType.Standard) { user.AccountType = SBAccountType.Standard; } user.PaymentType = PaymentType.paypal; user.ActivationStatus = SBUserActivationStatus.Active; user.CreateDate = DateTime.UtcNow; user.EmailId = EmailId; user.ExpiryDate = DateTime.UtcNow.AddDays(30); user.UserName = "******"; user.EmailValidateToken = "Google"; user.UserType = "User"; user.LastLoginTime = DateTime.UtcNow; user.PaymentStatus = SBPaymentStatus.UnPaid; user.SocialLoginEnableGo = true; try { user.FirstName = Convert.ToString(userinfo["name"]); } catch { } user.RegistrationType = SBRegistrationType.Google; var SavedStatus = dbr.Add(user); var nuser = dbr.Single <User>(t => t.EmailId.Equals(user.EmailId)); if (SavedStatus == 1 && nuser != null) { var group = new Groups(); group.adminId = nuser.Id; group.createdDate = DateTime.UtcNow; group.groupName = SocioboardConsts.DefaultGroupName; SavedStatus = dbr.Add(group); if (SavedStatus == 1) { var ngrp = dbr.Find <Groups>(t => t.adminId == nuser.Id && t.groupName.Equals(SocioboardConsts.DefaultGroupName)) .FirstOrDefault(); GroupMembersRepository.CreateGroupMember(ngrp.id, nuser, _redisCache, dbr); // Adding GPlus Profile GplusRepository.AddGplusAccount(userinfo, dbr, nuser.Id, ngrp.id, accessToken, refreshToken, _redisCache, _appSettings, _logger); } } return(Ok(nuser)); } }