コード例 #1
0
ファイル: LogOnControl.cs プロジェクト: jy4618272/Common
        /// <summary>
        /// Occurs when the login button is clicked.
        /// </summary>
        /// <param name="sender">The sourceRow of the event.</param>
        /// <param name="e">An EventArgs that contains no event data.</param>
        protected void LogOnButton_Click(object sender, EventArgs e)
        {
            string loginName = LoginTextBox.Text;

            try
            {
                if (LoginProvider.Current.Authenticate(loginName, PasswordTextBox.Text, true, true, this.OrganizationId, this.InstanceId))
                {
                    if (!string.IsNullOrEmpty(m_EmailToLink))
                    {
                        if (!EmailProvider.IsEmailExists(m_EmailToLink))
                        {
                            LinkEmailLabel.Text = string.Format(CultureInfo.InvariantCulture, Resources.LogOnControl_LinkEmailLabel_Text, loginName, m_EmailToLink);

                            LinkEmailPanel.Visible = true;
                            FormTable.Visible      = false;
                            if (LogoImagePanel != null)
                            {
                                LogoImagePanel.Visible = false;
                            }

                            m_MainContainerHeight = 150;
                        }
                        else
                        {
                            this.RedirectAfterLogOn();
                        }
                    }
                    else
                    {
                        this.RedirectAfterLogOn();
                    }
                }
            }
            catch (AuthenticationException ex)
            {
                string message = ex.Message;

                if (FrameworkConfiguration.Current.WebApplication.Integration.Google.Enabled)
                {
                    IList domains = null;

                    if (string.Compare(ex.Message, FrameworkConfiguration.Current.WebApplication.Login.FailureText, StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        Organization org = OrganizationProvider.GetOrganization(this.OrganizationId);

                        if (org == null)
                        {
                            OrganizationCollection orgs = LoginProvider.Current.GetOrganizationsByLoginName(loginName);
                            if ((orgs != null) && (orgs.Count > 0))
                            {
                                org = orgs[0];
                            }
                        }

                        if (org != null)
                        {
                            if (SettingProvider.OrganizationProviderIsGoogle(org.OrganizationId))
                            {
                                domains = EmailSuffixProvider.GetEmailSuffixesList(org.OrganizationId);
                            }
                        }
                    }

                    if (domains == null)
                    {
                        domains = FrameworkConfiguration.Current.WebApplication.Integration.Google.MailDomains;
                    }

                    if (domains != null)
                    {
                        foreach (string domain in domains)
                        {
                            if (loginName.IndexOf(domain, StringComparison.OrdinalIgnoreCase) != -1)
                            {
                                message = Resources.LoginElement_GoogleFailureText;
                                break;
                            }
                        }
                    }
                }

                this.ShowErrorMessage(message);
            }
        }