Exemple #1
0
        public async Task <ActionResult> CreateUser(UserCreateView model)
        {
            if (model.ConfirmPassword != model.Password)
            {
                return(View(GetUserView(model)));
            }
            SDHCUser user = Activator.CreateInstance(SDHCUserManager.BaseUser) as SDHCUser;
            var      m    = user.ConvertUserToPost();

            m.Properties = model.Properties;
            var mu = m.ConvertPostToUser(user);

            if (G.UserNameIsNotEmail)
            {
                user.UserName = model.UserName;
            }
            else
            {
                user.UserName = model.Email;
            }
            user.Email = model.Email;
            var result = await userManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return(View(GetUserView(model)));
            }
            await setRolesForUser(user, model.SelectedRoles);

            return(RedirectToAction("Index", "Roles", new { @area = G.AdminPath }));
        }
Exemple #2
0
        private async Task setRolesForUser(SDHCUser user, IEnumerable <string> selectedRoles)
        {
            try
            {
                var userRoles       = user.Roles.Select(b => b.RoleId).ToList();
                var userRemoveRoles = userRoles.Where(b => !selectedRoles.Contains(b)).ToList();
                var userAddRoles    = selectedRoles.Where(b => !userRoles.Contains(b)).ToList();
                if (userRemoveRoles.Count > 0 || userAddRoles.Count > 0)
                {
                    var allRoles       = G.RoleManager().Roles.ToList();
                    var removeRoleName = allRoles.Where(b => userRemoveRoles.Contains(b.Id)).Select(b => b.Name).ToArray();
                    var addRoleName    = allRoles.Where(b => userAddRoles.Contains(b.Id)).Select(b => b.Name).ToArray();
                    await G.UserManager().RemoveFromRolesAsync(user.Id, removeRoleName);

                    await G.UserManager().AddToRolesAsync(user.Id, addRoleName);
                }
            }
            catch { }
        }