diff --git a/apps/client/src/app/auth/login/page.tsx b/apps/client/src/app/auth/login/page.tsx
index 9fb1666..0959f52 100644
--- a/apps/client/src/app/auth/login/page.tsx
+++ b/apps/client/src/app/auth/login/page.tsx
@@ -1,29 +1,11 @@
-'use client';
-
-import { useState } from 'react';
-import paths from 'routes/paths';
-import { authClient } from '@/auth';
+import { authPaths } from 'routes/paths';
import LoginForm from 'components/sections/authentications/default/LoginForm';
const Page = () => {
- const [rememberMe, setRememberMe] = useState(false);
-
- const handleLogin = async (data: any) => {
- console.log(data);
-
- const { data: loginData, error } = await authClient.signIn.email({
- email: data.email,
- password: data.password,
- rememberMe: rememberMe,
- });
- console.log(loginData, error);
- };
-
return (
diff --git a/apps/client/src/components/sections/authentications/default/LoginForm.tsx b/apps/client/src/components/sections/authentications/default/LoginForm.tsx
index da27317..cd4a205 100644
--- a/apps/client/src/components/sections/authentications/default/LoginForm.tsx
+++ b/apps/client/src/components/sections/authentications/default/LoginForm.tsx
@@ -1,8 +1,8 @@
'use client';
import { useForm } from 'react-hook-form';
-import { useRouter, useSearchParams } from 'next/navigation';
import { yupResolver } from '@hookform/resolvers/yup';
+import { useRouter, useSearchParams } from 'next/navigation';
import {
Alert,
Box,
@@ -15,16 +15,15 @@ import {
TextField,
Typography,
} from '@mui/material';
+import * as yup from 'yup';
+import { authClient } from '@/auth';
import Grid from '@mui/material/Grid';
+import SocialAuth from './SocialAuth';
import { rootPaths } from 'routes/paths';
-import * as yup from 'yup';
-import { Configuration, HealthApi } from '@/api';
import PasswordTextField from 'components/common/PasswordTextField';
import DefaultCredentialAlert from '../common/DefaultCredentialAlert';
-import SocialAuth from './SocialAuth';
interface LoginFormProps {
- handleLogin: (data: LoginFormValues) => Promise;
signUpLink: string;
socialAuth?: boolean;
forgotPasswordLink?: string;
@@ -44,7 +43,6 @@ const schema = yup.object({
export type LoginFormValues = yup.InferType;
const LoginForm = ({
- handleLogin,
signUpLink,
forgotPasswordLink,
socialAuth = true,
@@ -69,13 +67,17 @@ const LoginForm = ({
});
const onSubmit = async (data: LoginFormValues) => {
- const res = await handleLogin(data);
- if (res?.ok) {
- router.refresh();
+ const { data: loginData, error } = await authClient.signIn.email({
+ email: data.email,
+ password: data.password,
+ rememberMe: data.rememberMe,
+ });
+
+ if (loginData) {
router.push(callbackUrl ? callbackUrl : rootPaths.root);
}
- if (res?.error) {
- setError('root.credential', { type: 'manual', message: res.error });
+ if (error) {
+ setError('root.credential', { type: 'manual', message: error.message });
}
};
@@ -222,6 +224,7 @@ const LoginForm = ({
size="large"
variant="contained"
loading={isSubmitting}
+ loadingPosition="start"
>
Log in
@@ -237,4 +240,4 @@ const LoginForm = ({
);
};
-export default LoginForm;
+export default LoginForm;
\ No newline at end of file
diff --git a/apps/client/src/layouts/main-layout/common/ProfileMenu.tsx b/apps/client/src/layouts/main-layout/common/ProfileMenu.tsx
index 94dfa4e..2234f4b 100644
--- a/apps/client/src/layouts/main-layout/common/ProfileMenu.tsx
+++ b/apps/client/src/layouts/main-layout/common/ProfileMenu.tsx
@@ -1,6 +1,5 @@
'use client';
-
import { PropsWithChildren, useMemo, useState } from 'react';
import { useRouter } from 'next/navigation';
import {
@@ -19,13 +18,14 @@ import {
SxProps,
Typography,
} from '@mui/material';
+import { authPaths } from 'routes/paths';
+import { authClient } from '@/auth';
import Menu from '@mui/material/Menu';
import { useThemeMode } from 'hooks/useThemeMode';
-import { useBreakpoints } from 'providers/BreakpointsProvider';
-import { useSettingsContext } from 'providers/SettingsProvider';
-import paths from 'routes/paths';
import IconifyIcon from 'components/base/IconifyIcon';
import StatusAvatar from 'components/base/StatusAvatar';
+import { useBreakpoints } from 'providers/BreakpointsProvider';
+import { useSettingsContext } from 'providers/SettingsProvider';
interface ProfileMenuProps {
type?: 'default' | 'slim';
@@ -95,6 +95,12 @@ const ProfileMenu = ({ type = 'default' }: ProfileMenuProps) => {
/>
);
+
+ const handleSignout = async () => {
+ await authClient.signOut();
+ router.push(authPaths.login);
+ }
+
return (
<>
{type === 'slim' && upSm ? (
@@ -199,9 +205,7 @@ const ProfileMenu = ({ type = 'default' }: ProfileMenuProps) => {
{
- router.push(paths.defaultLoggedOut);
- }}
+ onClick={handleSignout}
icon="material-symbols:logout-rounded"
>
Sign Out
diff --git a/apps/client/src/routes/paths.ts b/apps/client/src/routes/paths.ts
index 10b43b2..ec00a58 100644
--- a/apps/client/src/routes/paths.ts
+++ b/apps/client/src/routes/paths.ts
@@ -1,18 +1,16 @@
export const rootPaths = {
root: '/',
pagesRoot: 'pages',
- authRoot: 'authentication',
+ authRoot: 'auth',
authDefaultRoot: 'default',
errorRoot: 'error',
};
const paths = {
+ login: `/${rootPaths.authRoot}/login`,
+ signup: `/${rootPaths.authRoot}/signup`,
+ forgotPassword: `/${rootPaths.authRoot}/forgot-password`,
-
- login: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/login`,
- signup: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/signup`,
- forgotPassword: `/${rootPaths.authRoot}/${rootPaths.authDefaultRoot}/forgot-password`,
-
notifications: `/${rootPaths.pagesRoot}/notifications`,
defaultLoggedOut: `/${rootPaths.authRoot}/default/logged-out`,