Merge branch 'dev/cedric' into dev/guerby

This commit is contained in:
gom-by
2025-02-19 17:54:12 +01:00
27 changed files with 1081 additions and 796 deletions

View File

@@ -4,7 +4,7 @@ import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { useRouter, useSearchParams } from "next/navigation";
import useLogin from "@/hooks/use-login";
import { Loader2 } from "lucide-react";
@@ -16,12 +16,20 @@ export function LoginForm({
const [password, setPassword] = useState("");
const { login, loading, isSuccess } = useLogin();
const router = useRouter();
const searchParams = useSearchParams();
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
e.preventDefault();
try {
const res = await login({ email, password });
if (res.status === "Success") router.push("/dashboard");
if (res.status === "Success") {
const redirectTo = searchParams.get("redirectTo");
if (redirectTo) {
router.push(redirectTo);
} else {
router.push("/dashboard");
}
}
console.log(res);
} catch (err: any) {
console.log(err.message);

View File

@@ -23,8 +23,10 @@ import {
UserRoundPlus,
} from "lucide-react";
import Link from "next/link";
import IUser from "@/interfaces/IUser";
import hasPermissions from "@/lib/hasPermissions";
export default function MembersTable() {
export default function MembersTable({ user }: { user: IUser }) {
const {
data: members,
error,
@@ -97,9 +99,11 @@ export default function MembersTable() {
<Button onClick={toggleSelectMode}>
{selectMode ? <CircleX /> : "Selectionner"}
</Button>
<Button onClick={() => handleOpenDialog(null)}>
<UserRoundPlus />
</Button>
{hasPermissions(user.roles, { users: ["insert"] }) && (
<Button onClick={() => handleOpenDialog(null)}>
<UserRoundPlus />
</Button>
)}
</div>
<div className="relative">
<ScrollArea className="h-full rounded-md border">
@@ -162,25 +166,35 @@ export default function MembersTable() {
<TableCell>{member.phone}</TableCell>
<TableCell>{member.role}</TableCell>
<TableCell className="text-right">
<Button
variant="outline"
size="sm"
className="mr-2"
onClick={() =>
handleOpenDialog(member)
}
>
<UserRoundPen />
</Button>
<Button
variant="destructive"
size="sm"
onClick={() =>
handleDelete(member.userId!)
}
>
<Trash2 />
</Button>
{hasPermissions(user.roles, {
users: ["update"],
}) && (
<Button
variant="outline"
size="sm"
className="mr-2"
onClick={() =>
handleOpenDialog(member)
}
>
<UserRoundPen />
</Button>
)}
{hasPermissions(user.roles, {
users: ["delete"],
}) && (
<Button
variant="destructive"
size="sm"
onClick={() =>
handleDelete(
member.userId!,
)
}
>
<Trash2 />
</Button>
)}
</TableCell>
</TableRow>
))}

View File

@@ -75,7 +75,7 @@ const Planning: React.FC<{
description: res.message,
});
} else {
mutate?.();
// mutate?.();
}
} catch (e) {
if (e instanceof Error)

View File

@@ -19,8 +19,11 @@ import { MoreHorizontal } from "lucide-react";
import type IShortcode from "@/interfaces/IShortcode";
import ShortcodeDialog from "@/components/shortcode-dialogue";
import { useState } from "react";
import IUser from "@/interfaces/IUser";
import hasPermissions from "@/lib/hasPermissions";
interface ShortcodeTableProps {
user: IUser;
shortcodes: IShortcode[];
onUpdate: (shortcode: IShortcode) => void;
onDelete: (id: string) => void;
@@ -32,6 +35,7 @@ export function ShortcodeTable({
onUpdate,
onDelete,
onAdd,
user,
}: ShortcodeTableProps) {
const [shortcodeSelected, setUpdateDialog] = useState<IShortcode | null>(
null,
@@ -39,20 +43,22 @@ export function ShortcodeTable({
const [addDialog, setAddDialog] = useState<boolean>(false);
return (
<div>
<div className="mb-4">
<Button
onClick={() => {
setAddDialog(true);
}}
>
Ajouter
</Button>
<ShortcodeDialog
onSave={onAdd}
open={addDialog}
setOpen={() => setAddDialog(false)}
/>
</div>
{hasPermissions(user.roles, { shortcodes: ["insert"] }) && (
<div className="mb-4">
<Button
onClick={() => {
setAddDialog(true);
}}
>
Ajouter
</Button>
<ShortcodeDialog
onSave={onAdd}
open={addDialog}
setOpen={() => setAddDialog(false)}
/>
</div>
)}
<div className="rounded-md border">
<Table>
<TableHeader>
@@ -91,20 +97,30 @@ export function ShortcodeTable({
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem
onClick={() =>
setUpdateDialog(shortcode)
}
>
Mettre à jour
</DropdownMenuItem>
<DropdownMenuItem
onClick={() =>
onDelete(shortcode.code)
}
>
Supprimer
</DropdownMenuItem>
{hasPermissions(user.roles, {
shortcodes: ["update"],
}) && (
<DropdownMenuItem
onClick={() =>
setUpdateDialog(
shortcode,
)
}
>
Mettre à jour
</DropdownMenuItem>
)}
{hasPermissions(user.roles, {
shortcodes: ["delete"],
}) && (
<DropdownMenuItem
onClick={() =>
onDelete(shortcode.code)
}
>
Supprimer
</DropdownMenuItem>
)}
</DropdownMenuContent>
</DropdownMenu>
</TableCell>