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 { ErrorCode } from "@documenso/lib/auth";
import { useState } from "react"; import { useState } from "react";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { toast, Toaster } from "react-hot-toast";
interface LoginValues { interface LoginValues {
email: string; email: string;
@ -38,11 +39,25 @@ export default function Login() {
callbackUrl, callbackUrl,
redirect: false, 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 // 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 // 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 ( return (
@ -141,6 +156,7 @@ export default function Login() {
</FormProvider> </FormProvider>
</div> </div>
</div> </div>
<Toaster position="top-center" />
</> </>
); );
} }

View File

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

View File

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

View File

@ -11,6 +11,7 @@
}, },
"dependencies": { "dependencies": {
"@documenso/prisma": "*", "@documenso/prisma": "*",
"@documenso/ui": "*",
"@headlessui/react": "^1.7.4", "@headlessui/react": "^1.7.4",
"@heroicons/react": "^2.0.13", "@heroicons/react": "^2.0.13",
"@tailwindcss/forms": "^0.5.3", "@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 { coloredConsole } from "./coloredConsole";
export { default as classNames } from "./classNames";

View File

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