Exemple #1
0
        private void Authenticate()
        {
            string password           = Request.QueryString["p"];
            string isPersistentString = Request.QueryString["cp"];
            string loginName          = this.LoginName;
            bool   isPersistent       = true;

            if (isPersistentString != null)
            {
                if (!Boolean.TryParse(isPersistentString, out isPersistent))
                {
                    isPersistent = false;
                }
            }

            Guid organizationId     = this.OrganizationId;
            Guid instanceId         = this.InstanceId;
            bool isCustomUrlEnabled = FrameworkConfiguration.Current.WebApplication.CustomUrl.Enabled;

            if (isCustomUrlEnabled)
            {
                if (organizationId == Guid.Empty)
                {
                    string host = Request.Url.Host;
                    if (!CustomUrlProvider.IsDefaultVanityUrl(host))
                    {
                        CustomUrlProvider.ParseHost(host, ref organizationId, ref instanceId);
                    }
                }
                else if (!GoogleProvider.IsGoogleProviderRequest(Request))
                {
                    this.VerifyVanityUrl(organizationId, instanceId);
                }
            }

            if (!(string.IsNullOrEmpty(loginName) || string.IsNullOrEmpty(password) || (organizationId == Guid.Empty)))
            {
                if (!isCustomUrlEnabled)
                {
                    LoginProvider loginProvider = new LoginProvider();
                    loginProvider.SignOut(true, false);
                }

                try
                {
                    LoginProvider.Current.Authenticate(loginName, Support.Decrypt(password), false, isPersistent, organizationId, instanceId);

                    this.RedirectAfterLogOn();
                }
                catch (AuthenticationException ex)
                {
                    ShowErrorMessage(ex.Message);
                }
            }
            else
            {
                if (GoogleProvider.IsGoogleProviderRequest(Request))
                {
                    try
                    {
                        string accessToken = GoogleProvider.ProcessAuthorization(this.Context, ref organizationId, ref instanceId);

                        string firstName = null;
                        string lastName  = null;
                        GoogleProvider.GetUserProfile(accessToken, out loginName, out firstName, out lastName);
                    }
                    catch (AuthenticationException ex)
                    {
                        ShowErrorMessage(ex.Message);
                    }

                    if (!string.IsNullOrEmpty(loginName))
                    {
                        m_EmailToLink = loginName;

                        string message = null;

                        try
                        {
                            string domain = GoogleProvider.GetDomain(Request);
                            if (!string.IsNullOrEmpty(domain))
                            {
                                EmailSuffixProvider.ParseEmailSuffixName(domain, ref organizationId, ref instanceId);
                            }

                            if (LoginProvider.Current.Authenticate(loginName, null, false, true, organizationId, instanceId))
                            {
                                this.RedirectAfterLogOn();
                            }
                        }
                        catch (AuthenticationException ex)
                        {
                            message = ex.Message;
                        }

                        if (!string.IsNullOrEmpty(message))
                        {
                            if (LoginProvider.Current.GetLogin(loginName) == null)
                            {
                                message = string.Format(CultureInfo.InvariantCulture, Resources.UserContext_ErrorMessage_YourAccountIsNotFound, loginName);
                            }
                        }

                        if (!string.IsNullOrEmpty(message))
                        {
                            this.ShowErrorMessage(message);

                            this.EnableCustomHandling = false;
                        }
                    }
                }
            }
        }