Пример #1
0
        public Result Create(AdminUserDto dto)
        {
            var validator = new AdminUserValidator(_adminUserRepository);
            var result    = validator.ValidateResult(dto);

            if (!result.Success)
            {
                return(result);
            }

            var entity = Mapper.Map <AdminUser>(dto);

            entity.Salt     = SecurityHelper.GenerateSalt();
            entity.Password = SecurityHelper.GenerateHash(dto.Password, entity.Salt);

            _adminUserRepository.Insert(entity);

            foreach (var roleId in dto.Roles)
            {
                entity.Roles.Add(_adminRoleRepository.Find(roleId));
            }

            _unitOfWork.Commit();
            AdminUserCacheManager.ClearCache();

            result.Id = entity.Id;

            return(result.SetSuccess(Messages.RecordSaved));
        }
Пример #2
0
        public Result Edit(int id, AdminUserDto dto)
        {
            dto.Id = id;

            var validator = new AdminUserValidator(_adminUserRepository);
            var result    = validator.ValidateResult(dto);

            if (!result.Success)
            {
                return(result);
            }

            var entity = _adminUserRepository.AsNoTracking.Include(i => i.Roles)
                         .FirstOrDefault(s => s.Id == dto.Id);

            if (entity == null)
            {
                return(new Result().SetBlankRedirect());
            }

            Mapper.Map <AdminUser>(dto, entity);

            if (!string.IsNullOrEmpty(dto.Password))
            {
                entity.Salt     = SecurityHelper.GenerateSalt();
                entity.Password = SecurityHelper.GenerateHash(dto.Password, entity.Salt);
            }

            _adminUserRepository.Update(entity);

            ChildRoleUpdate(entity, dto);

            _unitOfWork.Commit();
            AdminUserCacheManager.ClearCache();

            return(result.SetSuccess(Messages.RecordSaved));
        }
Пример #3
0
        protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
        {
            Register(container);
            if (_environment.Name == EnvironmentType.Production)
            {
                RegisterMonoPersistence(container);
            }
            else
            {
                RegisterPersistence(container);
            }



            RegisterRepository(container);
            RegisterCrypo(container);


            pipelines.OnError += (ctx, ex) =>
            {
                container.Resolve <IMetric>().Count("error");
                Logger.Error(ex);
                var isAjaxRequest = ctx.Request.IsAjaxRequest();

                if (isAjaxRequest)
                {
                    var result = new JObject
                    {
                        { "isSuccess", false },
                        { "data", "Internal error" }
                    };

                    var newContent = result.ToString();
                    var output     = Encoding.UTF8.GetBytes(newContent);

                    return(new Response
                    {
                        Contents = stream => stream.Write(output, 0, output.Length),
                        ContentType = "application/json",
                        StatusCode = HttpStatusCode.InternalServerError
                    });
                }

                return(null);
            };
            pipelines.AfterRequest += (ctx) =>
            {
                var isAjaxRequest  = ctx.Request.IsAjaxRequest();
                var isJsonResponse = ctx.Response.ContentType.Contains("json");

                if (isAjaxRequest && isJsonResponse)
                {
                    using (var memStream = new MemoryStream())
                    {
                        ctx.Response.Contents.Invoke(memStream);
                        var textResponse = Encoding.UTF8.GetString(memStream.ToArray());

                        var result = new JObject();
                        if (TryParseJObject(textResponse, out var jo))
                        {
                            result = new JObject
                            {
                                { "isSuccess", true },
                                { "data", jo }
                            };
                        }
                        else if (TryParseJArray(textResponse, out var ja))
                        {
                            result = new JObject
                            {
                                { "isSuccess", true },
                                { "data", ja }
                            };
                        }
                        var newContent = result.ToString();
                        var output     = Encoding.UTF8.GetBytes(newContent);

                        ctx.Response.Contents = stream => stream.Write(output, 0, output.Length);
                    }
                }
            };

            var hmacProvider       = container.Resolve <IHmacProvider>();
            var adminRepository    = container.Resolve <IAdminRepository>();
            var adminUserValidator = new AdminUserValidator(hmacProvider, adminRepository, _environment);

            pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration(adminUserValidator, "admin"));
        }