Exemplo n.º 1
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,FirstName,LastName,Email,PhoneNumber,Login,Password,ConfirmPassword,OldHashedPassword,IsActive,InititallySelectedRoles")] CustomerCreateUpdateViewModel customer,
                                              int[] roleId)
        {
            if (ModelState.IsValid)
            {
                var customerEntity = (CustomerEntity)customer;
                _db.Entry(customerEntity).State = EntityState.Modified;
                await _db.SaveChangesAsync();

                // Updating roles
                var selectedRoleNames = roleId.Select(id => _db.Roles.Find(id).Name);

                var notSelectedNamesInRole = RoleNames.GetAllRoleNames().Except(selectedRoleNames).Where(roleName => Roles.IsUserInRole(customer.Login, roleName)).ToArray();
                if (notSelectedNamesInRole.Length > 0)
                {
                    Roles.RemoveUserFromRoles(customer.Login, notSelectedNamesInRole);
                }

                var selectedNamesNotInRole = selectedRoleNames.Where(roleName => !Roles.IsUserInRole(customer.Login, roleName)).ToArray();
                if (selectedNamesNotInRole.Length > 0)
                {
                    Roles.AddUserToRoles(customer.Login, selectedNamesNotInRole);
                }

                return(RedirectToAction("Index"));
            }

            return(View(customer));
        }
Exemplo n.º 2
0
        public ActionResult Create([Bind(Include = "Id,FirstName,LastName,Email,PhoneNumber,Login,Password,ConfirmPassword,IsDisabled")] CustomerCreateUpdateViewModel customer,
                                   int[] roleId)
        {
            if (roleId == null || roleId.Length < 1)
            {
                ModelState.AddModelError("RolesList", "At least one role must be selected.");
            }
            if (ModelState.IsValid)
            {
                MembershipCreateStatus status;
                // Create customer as application user.
                ((CustomMembershipProvider)Membership.Provider).CreateUser((CustomerEntity)customer, out status);

                if (status != MembershipCreateStatus.Success)
                {
                    ModelState.AddModelError(string.Empty, status.ToString());
                }
                else
                {
                    // Creating roles
                    var selectedRoleNames = roleId.Select(id => _db.Roles.Find(id).Name).ToArray();
                    Roles.AddUserToRoles(customer.Login, selectedRoleNames);

                    return(RedirectToAction("Index"));
                }
            }

            return(View(customer));
        }