ENCOA-219: Hide System exams from non-admin users
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user