Exemple #1
0
        public ActionResult Index(
            [FromServices] ITwoLevelCache cache,
            [FromServices] ISqlConnections sqlConnections
            )
        {
            if (cache is null)
            {
                throw new ArgumentNullException(nameof(cache));
            }

            if (sqlConnections is null)
            {
                throw new ArgumentNullException(nameof(sqlConnections));
            }

            var cachedModel = cache.GetLocalStoreOnly("DashboardPageModel", TimeSpan.FromMinutes(5),
                                                      OrderRow.Fields.GenerationKey, () =>
            {
                var model = new DashboardPageModel();
                var o     = OrderRow.Fields;
                using (var connection = sqlConnections.NewFor <OrderRow>())
                {
                    model.OpenOrders         = connection.Count <OrderRow>(o.ShippingState == (int)OrderShippingState.NotShipped);
                    var closedOrders         = connection.Count <OrderRow>(o.ShippingState == (int)OrderShippingState.Shipped);
                    var totalOrders          = model.OpenOrders + closedOrders;
                    model.ClosedOrderPercent = (int)Math.Round(totalOrders == 0 ? 100 :
                                                               ((double)closedOrders / (double)totalOrders * 100));
                    model.CustomerCount = connection.Count <CustomerRow>();
                    model.ProductCount  = connection.Count <ProductRow>();
                }
                return(model);
            });

            return(View(MVC.Views.Common.Dashboard.DashboardIndex, cachedModel));
        }
        public ActionResult ResetPassword(string t, [FromServices] ISqlConnections sqlConnections)
        {
            int userId;

            try
            {
                var bytes = HttpContext.RequestServices
                            .GetDataProtector("ResetPassword").Unprotect(Convert.FromBase64String(t));

                using (var ms = new MemoryStream(bytes))
                    using (var br = new BinaryReader(ms))
                    {
                        var dt = DateTime.FromBinary(br.ReadInt64());
                        if (dt < DateTime.UtcNow)
                        {
                            return(Error(Texts.Validation.InvalidResetToken.ToString(Localizer)));
                        }

                        userId = br.ReadInt32();
                    }
            }
            catch (Exception)
            {
                return(Error(Texts.Validation.InvalidResetToken.ToString(Localizer)));
            }

            if (sqlConnections is null)
            {
                throw new ArgumentNullException(nameof(sqlConnections));
            }

            using (var connection = sqlConnections.NewFor <UserRow>())
            {
                var user = connection.TryById <UserRow>(userId);
                if (user == null)
                {
                    return(Error(Texts.Validation.InvalidResetToken.ToString(Localizer)));
                }
            }

            if (UseAdminLTELoginBox)
            {
                return(View(MVC.Views.Membership.Account.ResetPassword.AccountResetPassword_AdminLTE, new ResetPasswordModel {
                    Token = t
                }));
            }
            else
            {
                return(View(MVC.Views.Membership.Account.ResetPassword.AccountResetPassword, new ResetPasswordModel {
                    Token = t
                }));
            }
        }
        public Result <ServiceResponse> ResetPassword(ResetPasswordRequest request, [FromServices] ISqlConnections sqlConnections)
        {
            return(this.InTransaction("Default", uow =>
            {
                if (request is null)
                {
                    throw new ArgumentNullException(nameof(request));
                }

                if (string.IsNullOrEmpty(request.Token))
                {
                    throw new ArgumentNullException("token");
                }

                var bytes = HttpContext.RequestServices
                            .GetDataProtector("ResetPassword").Unprotect(Convert.FromBase64String(request.Token));

                int userId;
                using (var ms = new MemoryStream(bytes))
                    using (var br = new BinaryReader(ms))
                    {
                        var dt = DateTime.FromBinary(br.ReadInt64());
                        if (dt < DateTime.UtcNow)
                        {
                            throw new ValidationError(Texts.Validation.InvalidResetToken.ToString(Localizer));
                        }

                        userId = br.ReadInt32();
                    }

                UserRow user;
                if (sqlConnections is null)
                {
                    throw new ArgumentNullException(nameof(sqlConnections));
                }

                using (var connection = sqlConnections.NewFor <UserRow>())
                {
                    user = connection.TryById <UserRow>(userId);
                    if (user == null)
                    {
                        throw new ValidationError(Texts.Validation.InvalidResetToken.ToString(Localizer));
                    }
                }

                if (request.ConfirmPassword != request.NewPassword)
                {
                    throw new ValidationError("PasswordConfirmMismatch", Localizer.Get("Validation.PasswordConfirm"));
                }

                request.NewPassword = UserRepository.ValidatePassword(request.NewPassword, Localizer);


                string salt = null;
                var hash = UserRepository.GenerateHash(request.NewPassword, ref salt);
                UserRepository.CheckPublicDemo(user.UserId);

                uow.Connection.UpdateById(new UserRow
                {
                    UserId = user.UserId.Value,
                    PasswordSalt = salt,
                    PasswordHash = hash
                });

                Cache.InvalidateOnCommit(uow, UserRow.Fields);

                return new ServiceResponse();
            }));
        }
        public static void PopulateInitialItems(ISqlConnections sqlConnections)
        {
            if (sqlConnections is null)
            {
                throw new ArgumentNullException(nameof(sqlConnections));
            }

            using (var connection = sqlConnections.NewFor <MyRow>())
            {
                if (connection.Count <MyRow>() != 0)
                {
                    return;
                }

                var folder1 = (int)connection.InsertAndGetID(new MyRow {
                    Title = "Folder 1"
                });
                connection.Insert(new MyRow {
                    Title = "Item 1", ParentId = folder1
                });
                var sub1 = (int)connection.InsertAndGetID(new MyRow {
                    Title = "Sub folder 1", ParentId = folder1
                });
                connection.Insert(new MyRow {
                    Title = "Item 2", ParentId = sub1
                });
                connection.Insert(new MyRow {
                    Title = "Item 3", ParentId = sub1
                });
                var sub2 = (int)connection.InsertAndGetID(new MyRow {
                    Title = "Sub folder 2", ParentId = folder1
                });
                connection.Insert(new MyRow {
                    Title = "Item 4", ParentId = sub2
                });
                connection.Insert(new MyRow {
                    Title = "Item 5", ParentId = sub2
                });

                var subsub = (int)connection.InsertAndGetID(new MyRow {
                    Title = "Sub sub folder", ParentId = sub2
                });
                connection.Insert(new MyRow {
                    Title = "Item 6", ParentId = subsub
                });
                connection.Insert(new MyRow {
                    Title = "Item 7", ParentId = subsub
                });

                var folder2 = (int)connection.InsertAndGetID(new MyRow {
                    Title = "Folder 2"
                });
                connection.Insert(new MyRow {
                    Title = "Item 8", ParentId = folder2
                });

                connection.Insert(new MyRow {
                    Title = "Item 9"
                });
                connection.Insert(new MyRow {
                    Title = "Item 10"
                });
            }
        }