Ejemplo n.º 1
0
        public void TransferValuesFrom(CreateUserViewModel model)
        {
            UserName = model.UserName;
            Email = model.Email;
            Question = model.Question;
            Answer = model.Answer;

            User = model.User;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates the user view model, including populating the lookups
        /// </summary>
        public static new CreateUserViewModel Create(IUserBLL userBLL, IRepository repository)
        {
            var baseViewModel = UserViewModel.Create(userBLL, repository);

            var viewModel = new CreateUserViewModel
                                {
                                    Supervisors = baseViewModel.Supervisors,
                                    Projects = baseViewModel.Projects,
                                    FundTypes = baseViewModel.FundTypes,
                                    AvailableRoles = baseViewModel.AvailableRoles,
                                    Subordinates = baseViewModel.Subordinates
                                };

            return viewModel;
        }
Ejemplo n.º 3
0
        public ActionResult Create(CreateUserViewModel model, List<string> roleList)
        {
            model.User.UserName = model.UserName; //transfer the username & email to the user class
            model.User.Email = model.Email;

            MvcValidationAdapter.TransferValidationMessagesTo(ModelState,
                                                              MvcValidationAdapter.GetValidationResultsFor(model));

            model.User.TransferValidationMessagesTo("User", ModelState);

            //CheckUserAssociations(model.User); //Make sure the associations are set//Done by users.cs now

            if (roleList == null || roleList.Count == 0)
                ModelState.AddModelError("RoleList", "User must have at least one role");

            if (!ModelState.IsValid)
            {
                //If we aren't valid, return to the create page
                var viewModel = CreateUserViewModel.Create(UserBLL, Repository);
                viewModel.TransferValuesFrom(model);

                viewModel.UserRoles = roleList;

                return View(viewModel);
            }
            else
            {
                var user = model.User;

                //Set the current user as the new user's creator
                user.CreatedBy = UserBLL.GetUser();

                //User is valid, let's go through the create process
                EnsureProperRoles(roleList, user);

                MembershipCreateStatus createStatus;

                //Create the user
                MembershipUser membershipUser = UserBLL.UserAuth.MembershipService.CreateUser(model.UserName,
                                                                                              DefaultPassword,
                                                                                              model.Email,
                                                                                              model.Question,
                                                                                              model.Answer, true, null,
                                                                                              out createStatus);
                if (createStatus == MembershipCreateStatus.Success)
                {
                    UserBLL.AddUserToRoles(model.UserName, roleList);
                }
                else
                {
                    //This approach maintains all entered info for the user if there is an error
                    switch (createStatus)
                    {
                        case MembershipCreateStatus.DuplicateEmail:
                            //This is currently disabled in the Web.config
                            ModelState.AddModelError("_FORM", "Create Failed Duplicate Email");
                            break; // return Create();
                        case MembershipCreateStatus.DuplicateProviderUserKey:
                            ModelState.AddModelError("_FORM", "Create Failed Duplicate Provider User Key");
                            break; // return Create();
                        case MembershipCreateStatus.DuplicateUserName:
                            //This one should be working
                            ModelState.AddModelError("UserName", "Username already exists");
                            break; // return Create();
                        case MembershipCreateStatus.InvalidAnswer:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid Answer");
                            break; // return Create();
                        case MembershipCreateStatus.InvalidEmail:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid Email");
                            break; // return Create();
                        case MembershipCreateStatus.InvalidQuestion:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid Question");
                            break; // return Create();
                        case MembershipCreateStatus.InvalidUserName:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid User Name");
                            break; // return Create();
                        case MembershipCreateStatus.ProviderError:
                            ModelState.AddModelError("_FORM", "Create Failed Provider Error");
                            break; // return Create();
                        //Added these two back, if we don't want them here we can disable the two unit tests.
                        case MembershipCreateStatus.InvalidProviderUserKey:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid Provider User Key");
                            break; // return Create();
                        case MembershipCreateStatus.InvalidPassword:
                            ModelState.AddModelError("_FORM", "Create Failed Invalid Password");
                            break; // return Create();
                        case MembershipCreateStatus.Success:
                            throw new ApplicationException("Unexpected value.");
                        case MembershipCreateStatus.UserRejected:
                            ModelState.AddModelError("_FORM", "Create Failed User Rejected");
                            break; // return Create();
                        default:
                            ModelState.AddModelError("_FORM", "Create Failed");
                            break; // return Create();

                    }
                    //If we aren't valid, return to the create page
                    var viewModel = CreateUserViewModel.Create(UserBLL, Repository);
                    viewModel.TransferValuesFrom(model);

                    viewModel.UserRoles = roleList;

                    return View(viewModel);
                }

                user.SetUserID((Guid) membershipUser.ProviderUserKey);

                user.Token = Guid.NewGuid(); //setup the new user token

                UserBLL.DbContext.BeginTransaction();

                try
                {
                    //save the user
                    UserBLL.EnsurePersistent(user);

                    var supervisorEmail = UserBLL.UserAuth.MembershipService.GetUser(user.Supervisor.Id).Email;
                    //MessageGateway.SendMessageToNewUser(user, model.UserName, model.Email, supervisorEmail,
                    //                                    Url.AbsoluteAction("Index", "Home", new {token = user.Token}));
                    MessageGateway.SendMessageToNewUser(user, model.UserName, model.Email, supervisorEmail,
                                                        Url.AbsoluteAction("NewUser", "Account", new {id = user.Token}));

                    UserBLL.DbContext.CommitTransaction();
                }
                catch (Exception)
                {
                    UserBLL.DbContext.RollbackTransaction();

                    //delete the user then throw the exception
                    UserBLL.UserAuth.MembershipService.DeleteUser(model.UserName);

                    throw;
                }

                Message = string.Format("{0} Created Successfully", model.UserName);

                return this.RedirectToAction(a => a.List(null));
            }
        }