示例#1
0
        public IActionResult AddRolesToUser(string id, IFormCollection form)
        {
#if RELEASE
            var user = _userService.GetUserBySystemName(User.Identity.Name);
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageUsers, user))
            {
                return(AccessDeniedView());
            }
#endif

            //if (string.IsNullOrEmpty(id) || roleIds == null)

            //    return RedirectToAction("Index");
            //var user = _userService.GetUserById(id);

            //_userService.AddRoleToUser(id, roleIds);
            var userRoles = _userService.GetAllUserRoles(true);
            var user      = _userService.GetUserById(id);

            var formKey = "allow_" + id;// ur.Id;
            var userRolesSystemNamesToRestrict = !StringValues.IsNullOrEmpty(form[formKey])
                ? form[formKey].ToString()?.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList()
                : new List <string>();

            foreach (var ur in userRoles)
            {
                var allow = userRolesSystemNamesToRestrict.Contains(ur.SystemName);
                //проверить, есть ли данная роль у пользователя в данный момент
                if (allow == _userService.GetUserRoles(user).Select(s => s.SystemName).Contains(ur.SystemName))
                {
                    continue;
                }

                if (allow)
                {
                    _userService.AddUserRoleMapping(new UserUserRoleMapping
                    {
                        UserId     = id,
                        UserRoleId = ur.Id
                    });
                }
                else
                {
                    _userService.RemoveUserRoleMapping(user, ur);
                }
                //_permissionService.UpdatePermissionRecord(ur);
                _userService.UpdateUserRole(ur);
            }

            return(RedirectToAction("Index"));
        }