feat: add logout feature
All checks were successful
Integration Tests / integration-tests (pull_request) Successful in 1m44s

This commit is contained in:
2026-02-14 21:37:06 +07:00
parent 9f0f5e9c55
commit 36ad865c33
2 changed files with 31 additions and 3 deletions

View File

@ -0,0 +1,23 @@
"use server";
import { backendFetch } from "@/shared/helpers/backendFetch";
import { cookies } from "next/headers";
export const logout = async () => {
const res = await backendFetch("auth/logout", {
method: "POST",
});
if (res.success) {
(await cookies()).delete("auth_token");
return {
success: true,
message: "Logged out successfully",
};
} else {
return {
success: false,
message: "Logout failed",
};
}
};

View File

@ -6,12 +6,11 @@ import {
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogMedia,
AlertDialogTitle,
} from "@/shared/libs/shadcn/ui/alert-dialog";
import { Spinner } from "@/shared/libs/shadcn/ui/spinner";
import { logout } from "@/shared/models/auth/logout";
import { Button } from "@base-ui/react";
import { LogOut } from "lucide-react";
import React from "react";
const LogoutAlert = ({
@ -22,6 +21,12 @@ const LogoutAlert = ({
setOpenState: React.Dispatch<React.SetStateAction<boolean>>;
}) => {
const [isLoading, setIsLoading] = React.useState(false);
const continueLogout = async () => {
setIsLoading(true);
await logout().then((res) =>
res.success ? window.location.reload() : setIsLoading(false),
);
};
return (
<AlertDialog open={openState}>
@ -46,7 +51,7 @@ const LogoutAlert = ({
<Button
disabled={isLoading}
className="w-full hover:cursor-pointer"
onClick={() => setIsLoading(true)}
onClick={continueLogout}
>
{isLoading && <Spinner />}
Logout