Example #1
0
        public static DataTable GetGroupInstancesRoles(Guid groupId)
        {
            Guid organizationId = UserContext.Current.OrganizationId;

            ClientDataSet.GroupsInstancesRolesDataTable table = null;
            using (GroupsInstancesRolesTableAdapter adapter = new GroupsInstancesRolesTableAdapter(OrganizationProvider.GetConnectionString(organizationId)))
            {
                table = adapter.GetGroupsInstancesRolesByGroupId(organizationId, groupId);
            }
            table.Columns.Add("RoleName", typeof(string));

            Instance firstInstance = InstanceProvider.GetFirstInstance(organizationId);

            foreach (ClientDataSet.GroupsInstancesRolesRow row in table)
            {
                Guid roleId = row.RoleId;

                if (!FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
                {
                    if ((roleId == RoleProvider.InstanceAdministratorRoleId) || ((firstInstance != null) && (row.InstanceId != firstInstance.InstanceId)))
                    {
                        continue;
                    }
                }

                ConfigurationDataSet.RoleRow roleRow = RoleProvider.GetRoleRow(roleId);
                if (roleRow != null)
                {
                    row["RoleName"] = roleRow.Name;
                }
            }

            return(table);
        }
Example #2
0
        public static DataTable GetGroupsInstancesRoles(List <Guid> groupIds)
        {
            if (groupIds == null)
            {
                return(null);
            }

            DataTable table = null;

            try
            {
                Guid     organizationId = UserContext.Current.OrganizationId;
                Instance firstInstance  = InstanceProvider.GetFirstInstance(organizationId);

                ClientDataSet.GroupsInstancesRolesDataTable girTable = GetGroupsInstancesRolesByGroups(organizationId, groupIds);

                table = girTable.DefaultView.ToTable(true, "GroupId", "Name");
                table.Columns.Add("ParentGroupId", typeof(Guid));
                table.Columns.Add("InstancesRoles", typeof(string));

                foreach (DataRow row in table.Rows)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (ClientDataSet.GroupsInstancesRolesRow gdrRow in girTable.Select(string.Format(CultureInfo.InvariantCulture, "{0} = '{1}'", girTable.GroupIdColumn.ColumnName, row["GroupId"])))
                    {
                        Guid roleId = gdrRow.RoleId;

                        if (!FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
                        {
                            if ((roleId == RoleProvider.InstanceAdministratorRoleId) || ((firstInstance != null) && (gdrRow.InstanceId != firstInstance.InstanceId)))
                            {
                                continue;
                            }
                        }

                        ConfigurationDataSet.RoleRow roleRow = RoleProvider.GetRoleRow(roleId);
                        if (roleRow != null)
                        {
                            sb.AppendFormat(CultureInfo.InvariantCulture, ",{0} | {1}", gdrRow["InstanceName"], roleRow.Name);
                        }
                    }
                    if (sb.Length > 0)
                    {
                        sb.Remove(0, 1);
                        row["InstancesRoles"] = sb.ToString();
                    }
                }

                return(table);
            }
            finally
            {
                if (table != null)
                {
                    table.Dispose();
                }
            }
        }
 protected void EntityDataSource_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
 {
     if (e != null)
     {
         if (!FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
         {
             Instance inst = InstanceProvider.GetFirstInstance(UserContext.Current.OrganizationId);
             if (inst != null)
             {
                 e.InputParameters["instanceId"] = inst.InstanceId;
             }
         }
     }
 }
Example #4
0
        public static DataTable GetGroups()
        {
            Guid organizationId = UserContext.Current.OrganizationId;

            if (FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
            {
                return(GetGroups(organizationId));
            }
            else
            {
                ClientDataSet.GroupDataTable table = GetGroups(organizationId);

                Instance firstInstance = InstanceProvider.GetFirstInstance(organizationId);

                if (firstInstance != null)
                {
                    ArrayList list = new ArrayList();
                    ClientDataSet.GroupsInstancesRolesDataTable girTable = null;

                    using (GroupsInstancesRolesTableAdapter adapter = new GroupsInstancesRolesTableAdapter(OrganizationProvider.GetConnectionString(organizationId)))
                    {
                        girTable = adapter.GetGroupsInstancesRolesByInstanceId(organizationId, firstInstance.InstanceId);
                    }

                    foreach (ClientDataSet.GroupsInstancesRolesRow girRow in girTable)
                    {
                        if (girRow.RoleId == RoleProvider.InstanceAdministratorRoleId)
                        {
                            if (!list.Contains(girRow.GroupId))
                            {
                                list.Add(girRow.GroupId);
                            }
                        }
                    }

                    foreach (Guid groupId in list)
                    {
                        ClientDataSet.GroupRow row = table.FindByGroupId(groupId);
                        if (row != null)
                        {
                            table.RemoveGroupRow(row);
                        }
                    }

                    table.AcceptChanges();
                }

                return(table);
            }
        }
Example #5
0
        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            object    obj            = null;
            ArrayList list           = null;
            Guid      organizationId = UserContext.Current.OrganizationId;

            if (GroupListRow.Visible)
            {
                list = GroupIdArrayList;
            }
            else if (UserListRow.Visible)
            {
                obj  = Support.ConvertStringToType(UserList.SelectedValue, typeof(Guid));
                list = UserProvider.GetUserGroupIdList(organizationId, ((obj == null) ? Guid.Empty : (Guid)obj));
            }

            Settings.GroupIdList.Clear();
            if (list != null)
            {
                Settings.GroupIdList.AddRange(list);
            }
            if (FrameworkConfiguration.Current.WebApplication.EnableMultipleInstances)
            {
                obj = Support.ConvertStringToType(InstanceList.SelectedValue, typeof(Guid));
                Settings.InstanceId = ((obj == null) ? Guid.Empty : (Guid)obj);
            }
            else
            {
                Instance firstInstance = InstanceProvider.GetFirstInstance(organizationId);
                if (firstInstance != null)
                {
                    Settings.InstanceId = firstInstance.InstanceId;
                }
            }
            Settings.Visible = true;
            Settings.DataBind();
        }
Example #6
0
        public object CreateOrg(string name, string url, string email, string firstname, string lastname, string password, string password_confirm, string how, string note
                                , string external_id, bool sendHubSpot
                                , bool is_force_registration, bool is_force_redirect)
        {
            bool isSalesforceProviderRequest = false;

            if (!string.IsNullOrEmpty(how))
            {
                isSalesforceProviderRequest = (how.IndexOf("Salesforce", StringComparison.OrdinalIgnoreCase) > -1);
            }

            //validation
            if (string.IsNullOrWhiteSpace(name))
            {
                return(new HttpResult("Name is required.", HttpStatusCode.Forbidden));
            }

            if (!Utils.IsValidEmail(email))
            {
                return(new HttpResult("Email is required.", HttpStatusCode.Forbidden));
            }

            /*if (OrganizationProvider.GetOrganizationIdByName(name) != Guid.Empty)
             * {
             *  return new HttpResult("Name is already exists.", HttpStatusCode.Forbidden);
             * }
             */

            if (!string.IsNullOrWhiteSpace(url))
            {
                if (url.Length < 3 || url.Length > 20)
                {
                    return(new HttpResult("Url should be between 3 and 20 characters and can contains alphanumeric characters and hyphens", HttpStatusCode.Forbidden));
                }

                if (!CustomUrlProvider.ValidateCustomUrl(url))
                {
                    return(new HttpResult("Url: " + url + " is already exists.", HttpStatusCode.Forbidden));
                }
            }
            else
            {
                url = null;
            }


            bool          isAlreadyRegistered = false;
            LoginProvider lp = new LoginProvider();

            if (isSalesforceProviderRequest)
            {
                if (!string.IsNullOrEmpty(external_id))
                {
                    if (SalesforceSettingProvider.ExternalOrganizationIdExists(external_id))
                    {
                        return(new HttpResult("The organization is already registered.", HttpStatusCode.Conflict));
                    }
                }
            }
            else
            {
                isAlreadyRegistered = lp.ValidateLogin(email, null);

                if (isAlreadyRegistered && !is_force_registration)
                {
                    return(new HttpResult("User already have one registered organization. Please login OR set is_force_registration=true to continue.", HttpStatusCode.Conflict));
                }
            }

            if (string.IsNullOrWhiteSpace(firstname))
            {
                firstname = "Organization";
            }

            if (string.IsNullOrWhiteSpace(lastname))
            {
                lastname = "Administrator";
            }

            //if (string.IsNullOrWhiteSpace(lastname))
            //    return new HttpResult("LastName is required.", HttpStatusCode.Forbidden);

            //if (string.IsNullOrWhiteSpace(password))
            //    return new HttpResult("Password is required.", HttpStatusCode.Forbidden);

            if (!string.IsNullOrWhiteSpace(password))
            {
                if (!Utils.IsValidPassword(password))
                {
                    return(new HttpResult("Password is too weak. It must be at least 5 characters.", HttpStatusCode.Forbidden));
                }

                if (!password.Equals(password_confirm))
                {
                    return(new HttpResult("Passwords not match.", HttpStatusCode.Forbidden));
                }
            }
            else
            {
                password = password_confirm = null;
            }

            /*
             * Future
             *
             * string ip = base.RequestContext.Get<IHttpRequest>().UserHostAddress;
             * if (!Micajah.Common.Bll.Support.ValidateInviteToken(invite_code, ip))
             * {
             *  throw new HttpError(HttpStatusCode.Forbidden, "Invite code is not correct or expired. Please get new one.");
             * }
             */
            Guid organizationId = Guid.Empty;

            Micajah.Common.Bll.Instance inst = null;
            if (!isAlreadyRegistered || is_force_registration)
            {
                Micajah.Common.Bll.Instance           templateInstance = null;
                Micajah.Common.Bll.InstanceCollection insts            = InstanceProvider.GetTemplateInstances();

                if (insts.Count == 0)
                {
                    return(new HttpResult("No Active Template Instances", HttpStatusCode.NotFound));
                }
                else
                {
                    templateInstance = insts[0];
                }

                string howYouHearAboutUs = how;

                NameValueCollection parameters = new NameValueCollection();

                if (isSalesforceProviderRequest)
                {
                    if (!string.IsNullOrEmpty(external_id))
                    {
                        SalesforceSettingProvider.AddExternalOrganizationId(external_id, parameters);
                    }
                }

                organizationId = OrganizationProvider.InsertOrganization(name, null, null
                                                                         , null, null, null, null, null, null, string.Empty, howYouHearAboutUs, note
                                                                         , templateInstance.TimeZoneId, templateInstance.InstanceId
                                                                         , email, password, firstname, lastname, null, null, null
                                                                         , url, parameters
                                                                         , true, true, sendHubSpot);

                inst = InstanceProvider.GetFirstInstance(organizationId);
            }

            if (!is_force_redirect)
            {
                string  api_token = LoginTokenProvider.GetApiToken(email);
                ApiUser hdUser    = new ApiUser(api_token);
                if (string.IsNullOrWhiteSpace(api_token))
                {
                    return(new HttpResult("User is not correct or inactive.", HttpStatusCode.Forbidden));
                }
                return(new HttpResult(GetOrganizations(api_token, inst.PseudoId), organizationId != Guid.Empty ? HttpStatusCode.Created : HttpStatusCode.Found));
            }
            //return new HttpResult(HttpStatusCode.OK, "Already registered");
            url = lp.GetLoginUrl(email, true, organizationId, inst.InstanceId, null);

            //added redirect
            url = url.Replace("mc/login.aspx?", "login/?ReturnUrl=%2Fhome%2Fdefault.aspx%3Ffx%3Demlstp%26org%3D" + organizationId.ToString("N") + "&");

            //Headers ["Location"] = url;
            return("{\"url\" : \"" + url + "\"}");
        }
Example #7
0
        private void CreateNewOrganization()
        {
            if (string.Compare((string)Session["NewOrg"], "1", StringComparison.OrdinalIgnoreCase) == 0)
            {
                string url = null;

                UserContext user = UserContext.Current;
                if (user != null)
                {
                    if (string.Compare(user.Email, Email.Text, StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        url = LoginProvider.Current.GetLoginUrl(user.Email, true, user.OrganizationId, user.InstanceId, null);

                        Response.Redirect(url);
                    }
                }

                url = LoginProvider.Current.GetLoginUrl();

                Response.Redirect(url);
            }
            else
            {
                Instance           templateInstance = null;
                InstanceCollection insts            = Micajah.Common.Bll.Providers.InstanceProvider.GetTemplateInstances();

                if (insts.Count == 0)
                {
                    throw new NotImplementedException(Resources.SignupOrganizationControl_NoActiveTemplateInstances);
                }
                else
                {
                    templateInstance = insts[0];
                }

                string howYouHearAboutUs = null;

                bool isGoogleProviderRequest = GoogleProvider.IsGoogleProviderRequest(this.Request);
                if (isGoogleProviderRequest)
                {
                    howYouHearAboutUs = Resources.SignupOrganizationControl_HowYouHearAboutUs_Text;
                }

                Guid orgId = OrganizationProvider.InsertOrganization(OrganizationName.Text, null, null
                                                                     , null, null, null, null, null, null, string.Empty, howYouHearAboutUs
                                                                     , templateInstance.TimeZoneId, templateInstance.InstanceId
                                                                     , Email.Text, null, this.UserFirstName, this.UserLastName, null, null, null
                                                                     , OrganizationUrl.Text, this.Request
                                                                     , true);

                Session["NewOrg"] = "1";

                Instance inst = InstanceProvider.GetFirstInstance(orgId);

                if (isGoogleProviderRequest)
                {
                    string           returnUrl  = null;
                    OAuth2Parameters parameters = JsonConvert.DeserializeObject <OAuth2Parameters>(this.OAuth2Parameters);

                    GoogleProvider.ProcessAuthorization(this.Context, ref parameters, ref returnUrl);
                }

                string url = LoginProvider.Current.GetLoginUrl(Email.Text, true, orgId, inst.InstanceId, null);

                Response.Redirect(url);
            }
        }