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 + "\"}"); }
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); } }