public ActionResult Register(string name, string plan, string affiliate) { if (!repository.IsDomainAvailable(name)) { return(Redirect(ErrorHelper.CreateErrorPage(name + " is not available. Please select another name.", Request.UrlReferrer.AbsoluteUri))); } var oauthClient = new FacebookOAuthClient(FacebookApplication.Current) { RedirectUri = GetFacebookRedirectUri() }; dynamic parameters = new ExpandoObject(); // TODO: to be handled separately parameters.scope = "email,publish_stream"; var returnUrl = name.ToTradelrDomainUrl("/login"); // add csrf_token to prevent cross site forger attacks // pass returnUrl as state, so the callback know which page to redirect when the oauth login is successful // to make the querystring ?state=value safe, encode the value of state using Base64UrlEncode. var state = new CallbackState() { csrf_token = Utility.CalculateMD5Hash(Guid.NewGuid().ToString()), return_url = returnUrl, domain_name = name, plan_name = plan, isRegistration = true, affiliate = affiliate }; parameters.state = OAuthFacebook.Base64UrlEncode(Encoding.UTF8.GetBytes(JsonSerializer.Current.SerializeObject(state))); SetFacebookCsrfToken(state.csrf_token); return(Redirect(oauthClient.GetLoginUrl(parameters).AbsoluteUri)); }
public ActionResult demo_create() { var account = new Account(repository, "*****@*****.**", "1234%^&*", "1234%^&*", "demo", AccountPlanType.ULTIMATE, ""); var status = account.CreateAccountWithLoginPassword(); if (!status.success) { return(Json(status)); } // add currency and timezoneinfo var sd = repository.GetSubDomains().Single(x => x.name == "demo"); sd.organisation.name = "Demo Company"; sd.currency = 432; // USD sd.flags |= (int)SubdomainFlags.STORE_ENABLED; var creator = sd.organisation.users.First(); creator.timezone = "Eastern Standard Time"; creator.role = (int)UserRole.ADMIN; repository.Save("demo_create"); // add test org var o = new organisation { subdomain = sd.id, address = "12 Demo Road", phone = "012 345678", name = "Acme & Co.", fax = "87 654321", postcode = "12345", }; var addedOrgID = repository.AddOrganisation(o); // add user var u = new user { created = DateTime.UtcNow, email = "*****@*****.**", passwordHash = Utility.ComputePasswordHash("*****@*****.**"), firstName = "demo", lastName = "account", organisation = addedOrgID, viewid = Utility.GetRandomString(), permissions = (int)(UserPermission.NETWORK_STORE | UserPermission.INVENTORY_ADD | UserPermission.INVENTORY_MODIFY | UserPermission.INVENTORY_VIEW | UserPermission.INVOICES_ADD | UserPermission.TRANSACTION_MODIFY | UserPermission.TRANSACTION_VIEW | UserPermission.ORDERS_ADD | UserPermission.CONTACTS_ADD | UserPermission.CONTACTS_MODIFY | UserPermission.CONTACTS_VIEW), role = (int)UserRole.USER }; #if !DEBUG // not created when debugging because we want to test product import u.timezone = "Eastern Standard Time"; #else u.permissions |= (int)UserPermission.NETWORK_SETTINGS; #endif repository.AddUser(u); // log activity repository.AddActivity(u.id, new ActivityMessage(u.id, u.id, ActivityMessageType.CONTACT_NEW, new HtmlLink(u.ToEmailName(true), u.id).ToContactString()), sd.id); // update total contacts count repository.UpdateCounters(sd.id, 1, CounterType.CONTACTS_PRIVATE); // import demo products List <ProductInfo> productsList; using (var fs = new FileStream( GeneralConstants.APP_ROOT_DIR + "/Content/templates/demo/demo_products.xls", FileMode.Open, FileAccess.Read)) { var importer = new ProductImport(); productsList = importer.Import(fs, u.id, sd.id); } repository.AddProducts(productsList, sd.id); return(Json("Demo account created".ToJsonOKMessage())); }