ENCOA-219: Hide System exams from non-admin users

This commit is contained in:
Tiago Ribeiro
2024-11-05 09:50:13 +00:00
parent 54c5b2063b
commit df41611093

View File

@@ -61,6 +61,8 @@ const ExamOwnerSelector = ({options, exam, onSave}: {options: User[]; exam: Exam
export default function ExamList({user, entities = []}: {user: User, entities: EntityWithRoles[]}) { export default function ExamList({user, entities = []}: {user: User, entities: EntityWithRoles[]}) {
const [selectedExam, setSelectedExam] = useState<Exam>(); const [selectedExam, setSelectedExam] = useState<Exam>();
const isAdmin = useMemo(() => ["developer", "admin"].includes(user?.type), [user?.type])
const {exams, reload} = useExams(); const {exams, reload} = useExams();
const {users} = useUsers(); const {users} = useUsers();
const {groups} = useGroups({admin: user?.id, userType: user?.type}); const {groups} = useGroups({admin: user?.id, userType: user?.type});
@@ -109,8 +111,10 @@ export default function ExamList({user, entities = []}: {user: User, entities: E
}); });
}, [exams, users]); }, [exams, users]);
const filteredExams = useMemo(() => parsedExams.filter(({module}) => modulePermissions[module].view), const nonSystemExams = useMemo(() => parsedExams.filter(e => e.createdBy !== "system"), [parsedExams])
[parsedExams, modulePermissions])
const filteredExams = useMemo(() => (isAdmin ? parsedExams : nonSystemExams).filter(({module}) => modulePermissions[module].view),
[parsedExams, nonSystemExams, isAdmin, modulePermissions])
const {rows: filteredRows, renderSearch} = useListSearch<Exam>(searchFields, filteredExams); const {rows: filteredRows, renderSearch} = useListSearch<Exam>(searchFields, filteredExams);