コード例 #1
0
ファイル: DatabaseProvider.cs プロジェクト: jy4618272/Common
        private static DataTable GetPublicDatabases(Guid organizationId, bool includeAdditionalInfo)
        {
            DataTable table = new MasterDataSet.DatabaseDataTable();

            foreach (MasterDataSet.DatabaseRow row in GetDatabases())
            {
                if (row.Private)
                {
                    if (organizationId != Guid.Empty)
                    {
                        Organization org = OrganizationProvider.GetOrganization(organizationId);
                        if (org != null)
                        {
                            if (org.DatabaseId == row.DatabaseId)
                            {
                                table.ImportRow(row);
                            }
                        }
                    }
                }
                else
                {
                    table.ImportRow(row);
                }
            }

            if (includeAdditionalInfo)
            {
                IncludeAdditionalInfo(ref table);
            }

            table.AcceptChanges();

            return(table);
        }
コード例 #2
0
ファイル: CustomUrlProvider.cs プロジェクト: jy4618272/Common
        public static DataView GetCustomUrls(Guid organizationId)
        {
            using (CustomUrlTableAdapter adapter = new CustomUrlTableAdapter())
            {
                MasterDataSet.CustomUrlDataTable table = adapter.GetCustomUrlsByOrganizationId(organizationId);
                table.Columns.Add("Name", typeof(string));

                Organization org = null;
                foreach (MasterDataSet.CustomUrlRow row in table)
                {
                    if (org == null)
                    {
                        org = OrganizationProvider.GetOrganization(organizationId);
                    }

                    string name = string.Empty;

                    if (row.IsInstanceIdNull())
                    {
                        name = org.Name;
                    }
                    else
                    {
                        Instance inst = InstanceProvider.GetInstance(row.InstanceId);
                        if (inst != null)
                        {
                            name = inst.Name;
                        }
                    }
                    row["Name"] = name;
                }
                table.DefaultView.Sort = string.Format(CultureInfo.InvariantCulture, "{0}, Name", table.InstanceIdColumn.ColumnName);
                return(table.DefaultView);
            }
        }
コード例 #3
0
ファイル: SignupUserControl.cs プロジェクト: jy4618272/Common
        private void EnsureOrganization()
        {
            Guid orgId = this.OrganizationId;

            if (orgId != Guid.Empty)
            {
                m_Organization = OrganizationProvider.GetOrganization(orgId);
            }
            if (m_Organization == null)
            {
                this.RedirectToLoginPage();
            }
        }
コード例 #4
0
ファイル: OAuthHandler.cs プロジェクト: jy4618272/Common
        public void ProcessRequest(HttpContext context)
        {
            IProtocolMessage         request      = m_Provider.ReadRequest();
            UnauthorizedTokenRequest requestToken = null;
            UserAuthorizationRequest requestAuth  = null;
            AuthorizedTokenRequest   requestAccessToken;

            if ((requestToken = request as UnauthorizedTokenRequest) != null)
            {
                UnauthorizedTokenResponse response = m_Provider.PrepareUnauthorizedTokenMessage(requestToken);
                m_Provider.Channel.Send(response);
            }
            else if ((requestAuth = request as UserAuthorizationRequest) != null)
            {
                string token = ((ITokenContainingMessage)requestAuth).Token;

                ((TokenProvider)m_Provider.TokenManager).UpdatePendingUserAuthorizationRequest(token, requestAuth);

                TokenProvider.SetTokenCookie(token);

                if (context == null)
                {
                    throw new ArgumentNullException("context");
                }

                context.Response.Redirect(ActionProvider.FindAction(ActionProvider.OAuthPageActionId).AbsoluteNavigateUrl);
            }
            else if ((requestAccessToken = request as AuthorizedTokenRequest) != null)
            {
                AuthorizedTokenResponse response = m_Provider.PrepareAccessTokenMessage(requestAccessToken);

                OAuthDataSet.OAuthTokenRow row = (OAuthDataSet.OAuthTokenRow)m_Provider.TokenManager.GetAccessToken(response.AccessToken);
                response.ExtraData.Add(new KeyValuePair <string, string>("api_token", LoginProvider.Current.GetToken(row.LoginId)));

                if (!row.IsOrganizationIdNull())
                {
                    response.ExtraData.Add(new KeyValuePair <string, string>("org", OrganizationProvider.GetOrganization(row.OrganizationId).PseudoId));
                    if (!row.IsInstanceIdNull())
                    {
                        response.ExtraData.Add(new KeyValuePair <string, string>("dept", InstanceProvider.GetInstance(row.InstanceId, row.OrganizationId).PseudoId));
                    }
                }

                m_Provider.Channel.Send(response);
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
コード例 #5
0
        private void LoadResources()
        {
            Organization org = OrganizationProvider.GetOrganization(this.OrganizationId);

            if (org != null)
            {
                if (org.Expired)
                {
                    DescriptionLabel.Text = string.Format(CultureInfo.InvariantCulture, Resources.SupportControl_OrganizationHasExpiredText, org.Name);
                    int days = org.GraceDaysRemaining;
                    if (days > 0)
                    {
                        DescriptionLabel.Text += "<br />" + string.Format(CultureInfo.InvariantCulture, Resources.SupportControl_GracePeriodText, days);
                    }
                    DescriptionHolder.Visible = true;
                }
            }

            string copyrightCompany = null;

            if (string.IsNullOrEmpty(FrameworkConfiguration.Current.WebApplication.Copyright.CompanyWebsiteUrl))
            {
                copyrightCompany = FrameworkConfiguration.Current.WebApplication.Copyright.CompanyName;
            }
            else
            {
                copyrightCompany = Micajah.Common.WebControls.SetupControls.BaseControl.GetHyperlink(FrameworkConfiguration.Current.WebApplication.Copyright.CompanyWebsiteUrl, FrameworkConfiguration.Current.WebApplication.Copyright.CompanyName);
            }
            TitleLabel.Text = string.Format(CultureInfo.InvariantCulture, Resources.SupportControl_TitleLabel_Text, copyrightCompany);
            EmailLabel.Text = Resources.SupportControl_EmailLabel_Text;
            PhoneLabel.Text = Resources.SupportControl_PhoneLabel_Text;

            EmailLink.Text        = FrameworkConfiguration.Current.WebApplication.Support.Email;
            EmailLink.NavigateUrl = "mailto:" + EmailLink.Text;
            PhoneValueLabel.Text  = FrameworkConfiguration.Current.WebApplication.Support.Phone;

            ReturnLink.Text = Resources.SupportControl_ReturnLink_Text;
            if (Request.UrlReferrer != null)
            {
                ReturnLink.NavigateUrl = Request.UrlReferrer.ToString();
                ReturnLink.Visible     = true;
            }
        }
コード例 #6
0
ファイル: CustomUrlProvider.cs プロジェクト: jy4618272/Common
        /// <summary>
        /// Checks if custom url is exists in system
        /// </summary>
        /// <param name="partialCustomUrl">Partial Custom Url with out domain</param>
        /// <returns></returns>
        public static bool ValidateCustomUrl(string partialCustomUrl)
        {
            if (!string.IsNullOrEmpty(partialCustomUrl))
            {
                using (CustomUrlTableAdapter adapter = new CustomUrlTableAdapter())
                {
                    using (MasterDataSet.CustomUrlDataTable table = adapter.GetCustomUrls(null, null, partialCustomUrl, partialCustomUrl))
                    {
                        if (table.Count > 0)
                        {
                            return(false);
                        }
                        else
                        {
                            Organization org     = null;
                            string       segment = RemoveSchemeFormUri(partialCustomUrl);
                            if (segment.Contains("-"))
                            {
                                org = OrganizationProvider.GetOrganizationByPseudoId(segment.Split('-')[0]);
                            }
                            else
                            {
                                org = OrganizationProvider.GetOrganizationByPseudoId(segment);
                            }

                            if (org == null)
                            {
                                MasterDataSet.CustomUrlRow row = GetCustomUrl(segment);
                                if (row != null)
                                {
                                    org = OrganizationProvider.GetOrganization(row.OrganizationId);
                                }
                            }

                            return(org == null);
                        }
                    }
                }
            }

            return(false);
        }
コード例 #7
0
ファイル: LogOnControl.cs プロジェクト: jy4618272/Common
        /// <summary>
        /// Renders the logo of the specified instance or organization and the logo of the copyright holder company.
        /// </summary>
        /// <param name="writer">The System.Web.UI.HtmlTextWriter to render content to.</param>
        /// <param name="organizationId">The identifier of the organization to render logo of.</param>
        /// <param name="organizationId">The identifier of the instance to render logo of.</param>
        public static void RenderHeader(HtmlTextWriter writer, Guid organizationId, Guid instanceId)
        {
            if (FrameworkConfiguration.Current.WebApplication.MasterPage.Theme == Pages.MasterPageTheme.Modern)
            {
                return;
            }

            if (organizationId != Guid.Empty)
            {
                Organization org = OrganizationProvider.GetOrganization(organizationId);
                if (org != null)
                {
                    Instance inst = null;
                    if (FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
                    {
                        if (instanceId != Guid.Empty)
                        {
                            inst = InstanceProvider.GetInstance(instanceId, organizationId);
                        }
                    }

                    HyperLink link = null;

                    CreateLogo(org, inst, ref link);

                    if (link != null)
                    {
                        RenderHeader(writer, link);
                    }
                }
                else
                {
                    RenderHeader(writer);
                }
            }
            else
            {
                RenderHeader(writer);
            }
        }
コード例 #8
0
        private object DeleteOrganization(string id)
        {
            Micajah.Common.Bll.Organization org = null;
            Guid orgid = Guid.Empty;

            if (Guid.TryParseExact(id, "N", out orgid))
            {
                org = OrganizationProvider.GetOrganization(orgid);
            }
            else
            {
                org = OrganizationProvider.GetOrganizationByPseudoId(id);
            }
            if (org == null)
            {
                return(new HttpResult("Organization not found", HttpStatusCode.NotFound));
            }
            if (org.Deleted)
            {
                return(new HttpResult("Organization already inactive", HttpStatusCode.NotModified));
            }
            OrganizationProvider.DeleteOrganization(org.OrganizationId);
            return(new HttpResult("Organization " + org.Name + " deleted", HttpStatusCode.OK));
        }
コード例 #9
0
        public void ImportLdapGroups(Guid organizationId)
        {
            Organization organization = null;
            DataView     dvDomains    = null;
            DataView     dvGroups     = null;

            DataRow drDomain = null;
            DataRow drGroup  = null;

            try
            {
                this.ThreadState = ThreadStateType.Running;
                if (FrameworkConfiguration.Current.WebApplication.Integration.Ldap.Enabled)
                {
                    organization = OrganizationProvider.GetOrganization(organizationId);

                    if (organization != null)
                    {
                        if (String.IsNullOrEmpty(organization.LdapServerAddress) == true || String.IsNullOrEmpty(organization.LdapServerPort) == true || String.IsNullOrEmpty(organization.LdapUserName) == true || String.IsNullOrEmpty(organization.LdapPassword) == true || String.IsNullOrEmpty(organization.LdapDomain) == true || !organization.Beta)
                        {
                            return;
                        }

                        dvDomains = LdapInfoProvider.GetDomains(organization.OrganizationId);
                        if (dvDomains.Table.Rows.Count > 0)
                        {
                            using (OrganizationsLdapGroupsTableAdapter adapter = new OrganizationsLdapGroupsTableAdapter())
                            {
                                for (int i = 0; i < dvDomains.Table.Rows.Count; i++)
                                {
                                    drDomain = dvDomains.Table.Rows[i];
                                    dvGroups = LdapInfoProvider.GetGroupsByDomainDistinguishedName(organization.OrganizationId, drDomain["DistinguishedName"].ToString());
                                    if (dvGroups.Table.Rows.Count > 0)
                                    {
                                        adapter.Delete(organization.OrganizationId, drDomain["DomainName"].ToString());
                                        for (int j = 0; j < dvGroups.Table.Rows.Count; j++)
                                        {
                                            drGroup = dvGroups.Table.Rows[j];
                                            adapter.Insert(Guid.NewGuid(), organization.OrganizationId, (Guid)drDomain["Id"], drDomain["DomainName"].ToString(), (Guid)drGroup["Id"], drGroup["GroupName"].ToString(), drGroup["DistinguishedName"].ToString(), DateTime.UtcNow);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                this.ThreadState = ThreadStateType.Finished;
            }
            catch (Exception ex)
            {
                this.ThreadState    = ThreadStateType.Failed;
                this.ErrorException = ex;

                LdapInfoProvider.InsertLdapLog(organizationId, true, ex.Message);
            }
            finally
            {
                organization = null;
                drDomain     = null;
                if (dvDomains != null)
                {
                    dvDomains.Dispose();
                }
                if (dvGroups != null)
                {
                    dvGroups.Dispose();
                }
            }
        }
コード例 #10
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);
            }
        }
コード例 #11
0
ファイル: LogOnControl.cs プロジェクト: jy4618272/Common
        private void CheckSignupUser()
        {
            if ((this.OrganizationId == Guid.Empty) || (this.InstanceId == Guid.Empty))
            {
                Guid orgId = Guid.Empty;
                Guid insId = Guid.Empty;
                if (FrameworkConfiguration.Current.WebApplication.CustomUrl.Enabled && m_Organization == null)
                {
                    if (!CustomUrlProvider.IsDefaultVanityUrl(Request.Url.Host))
                    {
                        CustomUrlProvider.ParseHost(Request.Url.Host, ref orgId, ref insId);
                    }
                }

                this.OrganizationId = orgId;
                this.InstanceId     = insId;

                if ((this.OrganizationId == Guid.Empty) || (this.InstanceId == Guid.Empty))
                {
                    return;
                }
            }

            Organization organization = OrganizationProvider.GetOrganization(this.OrganizationId);

            if (organization != null)
            {
                if (organization.Deleted)
                {
                    ShowErrorMessage(Resources.LogOnControl_OrganizationIsDeleted);
                    return;
                }
                else if (!organization.Active)
                {
                    ShowErrorMessage(Resources.LogOnControl_OrganizationIsInactive);
                    return;
                }
            }
            else
            {
                ShowErrorMessage(Resources.LogOnControl_OrganizationIsNotFound);
                return;
            }

            Instance instance = InstanceProvider.GetInstance(this.InstanceId, this.OrganizationId);

            if (instance == null)
            {
                return;
            }

            if (!instance.Active)
            {
                ShowErrorMessage(Resources.LogOnControl_InstanceIsInactive);
                return;
            }

            this.OrganizationId = instance.OrganizationId;
            m_Organization      = organization;
            m_Instance          = instance;

            if (!instance.EnableSignupUser)
            {
                return;
            }

            Guid groupId = GroupProvider.GetGroupIdOfLowestRoleInInstance(instance.OrganizationId, instance.InstanceId);

            if (groupId != Guid.Empty)
            {
                m_MainContainerHeight   = 300;
                SignupUserTable.Visible = true;
            }
            else
            {
                SignupUserButton.CommandArgument = string.Empty;
            }
        }
コード例 #12
0
 public ContactViewModel(string organizationId, Friend.Contact contact)
 {
     Organization = OrganizationProvider.GetOrganization(organizationId, TokenProvider.GetToken());
     Contact      = contact;
 }