Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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()));
        }