Пример #1
0
        public object Any(AddOrganization request)
        {
            VerifyOrganization v = new VerifyOrganization();

            v.isNameExists     = false;
            v.isUrlExists      = v.isEmailExists = false;
            v.ErrorDescription = "";
            //validation
            if (string.IsNullOrWhiteSpace(request.name))
            {
                v.ErrorDescription += "Name is required.\n";
                v.isNameExists      = true;
            }

            if (!string.IsNullOrWhiteSpace(request.url))
            {
                if (request.url.Length < 3 || request.url.Length > 20 || !(new Regex("^[0-9a-z][0-9a-z-]{1,18}[0-9a-z]$", RegexOptions.IgnoreCase | RegexOptions.Multiline)).IsMatch(request.url))
                {
                    v.ErrorDescription += "Url should be between 3 and 20 characters and can contains alphanumeric characters and hyphens";
                    v.isUrlExists       = true;
                }
                if (!CustomUrlProvider.ValidateCustomUrl(request.url))
                {
                    v.ErrorDescription += "Url: " + request.url + " is already exists.\n";
                    v.isUrlExists       = true;
                }
            }
            else
            {
                request.url = null;
            }

            if (!Utils.IsValidEmail(request.email))
            {
                v.ErrorDescription += "Email is required.\n";
                v.isEmailExists     = true;
            }
            else
            {
                LoginProvider lp = new LoginProvider();

                if (lp.ValidateLogin(request.email, null))
                {
                    v.isEmailExists     = true;
                    v.ErrorDescription += "User already have one registered organization. Please login OR set is_force_registration=true to continue.\n";
                }
            }

            v.isPasswordCorrect = v.isPasswordsMatch = true;
            if (!string.IsNullOrWhiteSpace(request.password))
            {
                if (!Utils.IsValidPassword(request.password))
                {
                    v.isPasswordCorrect = false;
                    v.ErrorDescription += "Password is too weak. It must be at least 5 characters.\n";
                }
                if (!request.password.Equals(request.password_confirm))
                {
                    v.isPasswordsMatch  = false;
                    v.ErrorDescription += "Passwords not match.\n";
                }
            }

            return(v);
        }
Пример #2
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 + "\"}");
        }
Пример #3
0
        protected void OrganizationUrlValidator_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            OrganizationUrlTick.Visible           = OrganizationUrl.IsValid = args.IsValid = false;
            OrganizationUrlValidator.ErrorMessage = Resources.SignupOrganizationControl_OrganizationUrlValidator_ErrorMessage;

            try
            {
                OrganizationUrlValidator.ErrorMessage = Resources.CustomUrlProvider_CustomUrlAlreadyExists;
                if (!string.IsNullOrEmpty(OrganizationUrl.Text))
                {
                    CustomUrlProvider.ValidatePartialCustomUrl(OrganizationUrl.Text);
                    OrganizationUrlTick.Visible = OrganizationUrl.IsValid = args.IsValid = CustomUrlProvider.ValidateCustomUrl(OrganizationUrl.Text);
                }
                else
                {
                    args.IsValid = true;
                }
            }
            catch (DataException ex)
            {
                OrganizationUrlValidator.ErrorMessage = ex.Message;

                OrganizationUrl.Attributes["validatorId"] = OrganizationUrlValidator.ClientID;
                OrganizationUrl.Focus();
            }
        }