Beispiel #1
0
        public void UpdateUserRoles(DimabeCrudContext _context, string[] selectedRoles, User userToUpdate)
        {
            if (selectedRoles == null)
            {
                userToUpdate.RoleUsers = new List <RoleUser>();
                return;
            }

            var selectedRolesHashSet = new  HashSet <string>(selectedRoles);
            var userRoles            = new HashSet <int>(userToUpdate.RoleUsers.Select(r => r.Role.Id));

            foreach (var role in _context.Roles)
            {
                if (selectedRolesHashSet.Contains(role.Id.ToString()))
                {
                    if (!userRoles.Contains(role.Id))
                    {
                        userToUpdate.RoleUsers.Add(new RoleUser
                        {
                            UserId = userToUpdate.Id,
                            RoleId = role.Id
                        });
                    }
                }
                else
                {
                    if (userRoles.Contains(role.Id))
                    {
                        var roleToRemove = userToUpdate.RoleUsers.SingleOrDefault(u => u.RoleId == role.Id);
                        _context.Remove(roleToRemove);
                    }
                }
            }
        }
Beispiel #2
0
        public void PopulateAssignedRoleData(DimabeCrudContext _context, User user)
        {
            var allRoles  = _context.Roles;
            var userRoles = new HashSet <int>(user.RoleUsers.Select(r => r.RoleId));

            AssignedRoleDataList = new List <AssignedRoleData>();

            foreach (var role in allRoles)
            {
                AssignedRoleDataList.Add(new AssignedRoleData
                {
                    RoleID   = role.Id,
                    RoleName = role.Name,
                    Assigned = userRoles.Contains(role.Id)
                });
            }
        }