private User GetUserFromUserInfo(UserInfo userInfo)
        {
            var provider = OAuthProvider.GetByName(userInfo.ProviderName);

            if (TCAdmin.SDK.Objects.User.GetAllUsers(2, true)
                .FindByCustomField($"OAUTH::{provider}", userInfo.Id) is User userByLink)
            {
                return(userByLink);
            }


            if (provider.Configuration.Parse <OAuthProviderConfiguration>().AllowEmailAuth)
            {
                var users = TCAdmin.SDK.Objects.User.GetUsersByEmail(userInfo.Email).Cast <User>().ToList();
                switch (users.Count)
                {
                case 0:
                    SetOAuthError("There are no accounts with this email. Disallowing OAuth Login.");
                    return(null);

                case 1:
                    return(users[0]);

                default:
                    SetOAuthError("There is more than one user with this email address. Disallowing OAuth Login.");
                    break;
                }
            }
            else
            {
                SetOAuthError("Please link an account with this OAuth provider before logging in.");
            }

            return(null);
        }
Exemple #2
0
        public override OAuth2Client GetClient()
        {
            var config = OAuthProvider.GetByName("Google").Configuration.Parse <OAuthProviderConfiguration>();

            return(new GoogleClient(new RequestFactory(), new OAuth2.Configuration.ClientConfiguration
            {
                ClientId = config.ClientId.Trim(),
                ClientSecret = config.ClientSecret.Trim(),
                RedirectUri = OAuthProviderHelper.RedirectUrl,
                Scope = "profile email"
            }));
        }
Exemple #3
0
        public override OAuth2Client GetClient()
        {
            var config = OAuthProvider.GetByName("Github").Configuration.Parse <OAuthProviderConfiguration>();

            return(new GitHubClient(new RequestFactory(), new OAuth2.Configuration.ClientConfiguration
            {
                ClientId = config.ClientId.Trim(),
                ClientSecret = config.ClientSecret.Trim(),
                RedirectUri = OAuthProviderHelper.RedirectUrl,
                Scope = "user read:user"
            }));
        }