예제 #1
0
        public Site SetupSite(SetupInput input, out ValidationStateDictionary validationState)
        {
            Site site = null;

            using (TransactionScope transaction = new TransactionScope())
            {
                site = this.CreateSite(out validationState);

                if (!validationState.IsValid)
                {
                    return(null);
                }

                UserInputAdd userInput = new UserInputAdd(input.AdminUserName, input.AdminDisplayName, input.AdminEmail, input.AdminPassword, input.AdminPasswordConfirm);

                ModelResult <User> results = this.SetupUser(userInput);

                if (!results.IsValid)
                {
                    validationState = results.ValidationState;

                    return(null);
                }

                transaction.Complete();
            }

            return(site);
        }
예제 #2
0
        public async Task <ApiResult> AddUser(UserInputAdd userInput)
        {
            var result = new ApiResult();

            if (await _userService.SaveAsync(userInput, ModelState) == null)
            {
                result.Code    = 400;
                result.Message = "添加用户失败:" + ModelState.FirstErrorMessage();
                return(result);
            }

            result.Code    = 200;
            result.Message = "添加用户成功";
            return(result);
        }
예제 #3
0
        public object ItemSaveAdd(UserInputAdd userInput)
        {
            //TODO: (erikpo) Check permissions

            ModelResult <User> results = userService.AddUser(userInput);

            if (!results.IsValid)
            {
                ModelState.AddModelErrors(results.ValidationState);

                return(ItemAdd());
            }

            //HACK: (erikpo) This should be moved out into some event saying "ok, i'm done adding the user, module, do you want to do something else too?" (maybe in the AddUser service call instead)
            string passwordSalt = Guid.NewGuid().ToString("N");
            string password     = userInput.Password.SaltAndHash(passwordSalt);

            userService.SetModuleData(results.Item, "FormsAuthentication", string.Format("{0}|{1}", passwordSalt, password));

            return(Redirect(Url.AppPath(Url.ManageUsers())));
        }
예제 #4
0
        public ModelResult <UserAuthenticated> AddUser(UserInputAdd userInputAdd)
        {
            ValidationStateDictionary validationState = new ValidationStateDictionary();

            validationState.Add(typeof(UserInputAdd), validator.Validate(userInputAdd));

            if (!validationState.IsValid)
            {
                return(new ModelResult <UserAuthenticated>(validationState));
            }

            //TODO: (erikpo) Replace with some logic to set the language from the user's browser or from a dropdown list
            Language          language = languageRepository.GetLanguage(context.Site.LanguageDefault ?? "en");
            UserAuthenticated user;

            using (TransactionScope transaction = new TransactionScope())
            {
                user = userInputAdd.ToUser(e => e.ComputeEmailHash(), EntityState.Normal, language);

                validateUser(user, validationState);

                if (!validationState.IsValid)
                {
                    return(new ModelResult <UserAuthenticated>(validationState));
                }

                user = repository.Save(user, context.Site.ID);



                invalidateCachedUserDependencies(user);

                transaction.Complete();
            }

            pluginEngine.ExecuteAll("UserSaved", new { context, user = new UserReadOnly(user) });
            pluginEngine.ExecuteAll("UserAdded", new { context, user = new UserReadOnly(user) });

            return(new ModelResult <UserAuthenticated>(user, validationState));
        }
예제 #5
0
        public async Task <ApiResult> AddUser([FromBody] UserInputAdd userInput)
        {
            var result = new ApiResult();

            if (userInput.UserId.HasValue)
            {
                // Guid.Empty 也不允许
                result.Code    = 400;
                result.Message = "添加用户失败:无需提供参数 UserId";
                return(result);
            }

            if (await _userService.SaveAsync(userInput, ModelState) == null)
            {
                result.Code    = 400;
                result.Message = "添加用户失败:" + ModelState.FirstErrorMessage();
                return(result);
            }

            result.Code    = 200;
            result.Message = "添加用户成功";
            return(result);
        }
예제 #6
0
        public virtual object SaveItem(Site siteInput, UserInputAdd userInput)
        {
            ValidationStateDictionary validationState;

            if (siteInput.ID == Guid.Empty && userInput != null)
            {
                //TODO: (erikpo) This is lame.  Add a SiteInput class and a SiteInputValidator class and move the following validation code into it.
                IUnityContainer   container     = (IUnityContainer)HttpContext.Application["container"];
                IValidator <Site> siteValidator = container.Resolve <IValidator <Site> >();

                validationState = new ValidationStateDictionary();

                validationState.Add(typeof(Site), siteValidator.Validate(siteInput));

                if (validationState.IsValid)
                {
                    Site site;

                    siteService.AddSite(siteInput, out validationState, out site);

                    Language language = new Language {
                        Name = "en", DisplayName = "English"
                    };
                    languageService.AddLanguage(language);

                    userService.EnsureAnonymousUser();

                    //UserAuthenticated user;

                    //userInput.Status = (byte)EntityState.Normal;
                    //userInput.LanguageDefault = language;

                    //userService.AddUser(userInput, out validationState, out user);

                    if (validationState.IsValid)
                    {
                        //Blog blog = new Blog
                        //{
                        //    CommentingDisabled = false,
                        //    Name = "Blog",
                        //    DisplayName = site.DisplayName,
                        //    Description = site.Description
                        //};

                        //blogService.AddBlog(blog, site, out validationState, out blog);
                    }
                }
            }
            else
            {
                siteService.EditSite(siteInput, out validationState);
            }

            if (!validationState.IsValid)
            {
                ModelState.AddModelErrors(validationState);

                return(Item());
            }

            OxiteApplication.Load(ControllerContext.HttpContext);

            return(Redirect(Url.AppPath(Url.ManageSite())));
        }
예제 #7
0
 public void AddUser(UserInputAdd userInput, out ValidationStateDictionary validationState, out User newUser)
 {
     throw new NotImplementedException();
 }
예제 #8
0
 private ModelResult <User> SetupUser(UserInputAdd userInput)
 {
     return(this.userService.AddUser(userInput));
 }