login logout toast

This commit is contained in:
Timur Ercan
2023-01-12 15:59:21 +01:00
parent 37aaeef6b5
commit a845984b03
7 changed files with 32 additions and 5 deletions

View File

@ -7,6 +7,7 @@ import { getCsrfToken, signIn } from "next-auth/react";
import { ErrorCode } from "@documenso/lib/auth";
import { useState } from "react";
import { useRouter } from "next/router";
import { toast, Toaster } from "react-hot-toast";
interface LoginValues {
email: string;
@ -38,11 +39,25 @@ export default function Login() {
callbackUrl,
redirect: false,
});
if (!res) setErrorMessage("error");
if (!res) {
setErrorMessage("error");
toast.error("Something went wrong.");
}
// we're logged in! let's do a hard refresh to the desired url
else if (!res.error) router.push(callbackUrl);
else if (!res.error) {
router.push(callbackUrl).then(() => {
toast.success("Login successful");
});
// toast.error("error");
}
// fallback if error not found
else setErrorMessage("something_went_wrong");
else {
if (res.status == 401) {
toast.error("Invalid email or password.");
} else {
toast.error("Could not login.");
}
}
};
return (
@ -141,6 +156,7 @@ export default function Login() {
</FormProvider>
</div>
</div>
<Toaster position="top-center" />
</>
);
}

View File

@ -4,6 +4,7 @@ import Link from "next/link";
import { useRouter } from "next/router";
import { signOut, useSession } from "next-auth/react";
import avatarFromInitials from "avatar-from-initials";
import { toast, Toaster } from "react-hot-toast";
import {
Bars3Icon,
@ -48,9 +49,11 @@ const userNavigation = [
{
name: "Sign out",
href: "",
click: (e: any) => {
click: async (e: any) => {
e.preventDefault();
signOut({ callbackUrl: "/login" });
const res: any = await signOut({ callbackUrl: "/login" }).finally(() => {
if (!res?.error) toast.success("Logout successful");
});
},
icon: ArrowRightOnRectangleIcon,
},
@ -226,6 +229,7 @@ export default function TopNavigation() {
</>
)}
</Disclosure>
<Toaster position="top-center"></Toaster>
</>
);
}

View File

@ -10,6 +10,7 @@ const nextConfig = {
const withTM = require("next-transpile-modules")([
"@documenso/prisma",
"@documenso/lib",
"@documenso/ui",
]);
const plugins = [];
plugins.push(withTM);

View File

@ -11,6 +11,7 @@
},
"dependencies": {
"@documenso/prisma": "*",
"@documenso/ui": "*",
"@headlessui/react": "^1.7.4",
"@heroicons/react": "^2.0.13",
"@tailwindcss/forms": "^0.5.3",

View File

@ -0,0 +1,3 @@
export default function classNames(...classes: unknown[]) {
return classes.filter(Boolean).join(" ");
}

View File

@ -1 +1,2 @@
export { coloredConsole } from "./coloredConsole";
export { default as classNames } from "./classNames";

View File

@ -0,0 +1 @@
export { }