Updated the user list to only show users belonging to an admin's groups

This commit is contained in:
Tiago Ribeiro
2023-10-11 12:02:20 +01:00
parent a84edcd237
commit 1d27da71ec
2 changed files with 13 additions and 4 deletions

View File

@@ -217,9 +217,11 @@ export default function GroupList({user}: {user: User}) {
<BsPencil className="hover:text-mti-purple-light transition ease-in-out duration-300" /> <BsPencil className="hover:text-mti-purple-light transition ease-in-out duration-300" />
</div> </div>
)} )}
{!row.original.disableEditing && (
<div data-tip="Delete" className="cursor-pointer tooltip" onClick={() => deleteGroup(row.original)}> <div data-tip="Delete" className="cursor-pointer tooltip" onClick={() => deleteGroup(row.original)}>
<BsTrash className="hover:text-mti-purple-light transition ease-in-out duration-300" /> <BsTrash className="hover:text-mti-purple-light transition ease-in-out duration-300" />
</div> </div>
)}
</div> </div>
)} )}
</> </>

View File

@@ -1,5 +1,6 @@
import Button from "@/components/Low/Button"; import Button from "@/components/Low/Button";
import {PERMISSIONS} from "@/constants/userPermissions"; import {PERMISSIONS} from "@/constants/userPermissions";
import useGroups from "@/hooks/useGroups";
import useUsers from "@/hooks/useUsers"; import useUsers from "@/hooks/useUsers";
import {Type, User} from "@/interfaces/user"; import {Type, User} from "@/interfaces/user";
import {Popover, Transition} from "@headlessui/react"; import {Popover, Transition} from "@headlessui/react";
@@ -7,6 +8,7 @@ import {createColumnHelper, flexRender, getCoreRowModel, useReactTable} from "@t
import axios from "axios"; import axios from "axios";
import clsx from "clsx"; import clsx from "clsx";
import {capitalize} from "lodash"; import {capitalize} from "lodash";
import moment from "moment";
import {Fragment} from "react"; import {Fragment} from "react";
import {BsCheck, BsCheckCircle, BsFillExclamationOctagonFill, BsPerson, BsStop, BsTrash} from "react-icons/bs"; import {BsCheck, BsCheckCircle, BsFillExclamationOctagonFill, BsPerson, BsStop, BsTrash} from "react-icons/bs";
import {toast} from "react-toastify"; import {toast} from "react-toastify";
@@ -15,6 +17,7 @@ const columnHelper = createColumnHelper<User>();
export default function UserList({user}: {user: User}) { export default function UserList({user}: {user: User}) {
const {users, reload} = useUsers(); const {users, reload} = useUsers();
const {groups} = useGroups(user.id);
const deleteAccount = (user: User) => { const deleteAccount = (user: User) => {
if (!confirm(`Are you sure you want to delete ${user.name}'s account?`)) return; if (!confirm(`Are you sure you want to delete ${user.name}'s account?`)) return;
@@ -91,6 +94,10 @@ export default function UserList({user}: {user: User}) {
header: "Type", header: "Type",
cell: (info) => capitalize(info.getValue()), cell: (info) => capitalize(info.getValue()),
}), }),
columnHelper.accessor("subscriptionExpirationDate", {
header: "Expiry Date",
cell: (info) => (!info.getValue() ? "No expiry date" : moment(info.getValue()).format("DD/MM/YYYY")),
}),
columnHelper.accessor("isVerified", { columnHelper.accessor("isVerified", {
header: "Verification", header: "Verification",
cell: (info) => ( cell: (info) => (
@@ -191,7 +198,7 @@ export default function UserList({user}: {user: User}) {
]; ];
const table = useReactTable({ const table = useReactTable({
data: users, data: user.type === "admin" || user.type === "student" ? users.filter((u) => groups.flatMap((g) => g.participants).includes(u.id)) : users,
columns: defaultColumns, columns: defaultColumns,
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
}); });