fix login & fix logout
This commit is contained in:
@@ -81,7 +81,7 @@ class AuthController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Helper::responseJson(message: 'OTP yang anda masukan salah!');
|
return Helper::responseJson(status: 'error', message: 'OTP yang anda masukan salah!');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function logout(Request $request)
|
public function logout(Request $request)
|
||||||
|
|||||||
@@ -158,10 +158,10 @@ class Helper
|
|||||||
* @param string $message
|
* @param string $message
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
public static function responseJson(array|object $data = [], int $statusCode = Response::HTTP_OK, string $message = 'Data berhasil di ambil'): JsonResponse
|
public static function responseJson(array|object $data = [], string $status = 'success', int $statusCode = Response::HTTP_OK, string $message = 'Data berhasil di ambil'): JsonResponse
|
||||||
{
|
{
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'status' => in_array($statusCode, [200, 201, 204]) ? 'success' : 'error',
|
'status' => $status,
|
||||||
'statusCode' => $statusCode,
|
'statusCode' => $statusCode,
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export type JWTContextType = {
|
|||||||
method: 'jwt';
|
method: 'jwt';
|
||||||
login: (phoneOrEmail: string) => Promise<void>;
|
login: (phoneOrEmail: string) => Promise<void>;
|
||||||
validateOtp: (phoneOrEmail: string, otp: string) => Promise<void>
|
validateOtp: (phoneOrEmail: string, otp: string) => Promise<void>
|
||||||
logout: () => Promise<void>;
|
logout: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
// export type FirebaseContextType = {
|
// export type FirebaseContextType = {
|
||||||
|
|||||||
@@ -132,16 +132,9 @@ function AuthProvider({ children }: AuthProviderProps) {
|
|||||||
axios
|
axios
|
||||||
.post('/verify-code', { phoneOrEmail: phoneOrEmail, otp })
|
.post('/verify-code', { phoneOrEmail: phoneOrEmail, otp })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
const { user, token } = response.data.data;
|
const { token } = response.data.data;
|
||||||
setSession(token);
|
setSession(token);
|
||||||
|
|
||||||
dispatch({
|
|
||||||
type: Types.ValidateOtp,
|
|
||||||
payload: {
|
|
||||||
user,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
return response.data;
|
return response.data;
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@@ -149,9 +142,11 @@ function AuthProvider({ children }: AuthProviderProps) {
|
|||||||
if (error.response.status !== 422) throw error.response;
|
if (error.response.status !== 422) throw error.response;
|
||||||
});
|
});
|
||||||
|
|
||||||
const logout = async () => {
|
const logout = () => {
|
||||||
await axios.post('/logout');
|
|
||||||
setSession(null);
|
setSession(null);
|
||||||
|
localStorage.removeItem('loginOrVerifyCode');
|
||||||
|
localStorage.removeItem('emailOrPhone');
|
||||||
|
localStorage.removeItem('emailOrPhoneForm');
|
||||||
dispatch({ type: Types.Logout });
|
dispatch({ type: Types.Logout });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { IconButtonAnimate } from '../../../components/animate';
|
|||||||
import { useNavigate } from 'react-router-dom';
|
import { useNavigate } from 'react-router-dom';
|
||||||
import useAuth from '../../../hooks/useAuth';
|
import useAuth from '../../../hooks/useAuth';
|
||||||
import useLocalStorage from '../../../hooks/useLocalStorage';
|
import useLocalStorage from '../../../hooks/useLocalStorage';
|
||||||
|
import { enqueueSnackbar } from 'notistack';
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -33,10 +34,6 @@ export default function AccountPopover() {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { logout } = useAuth();
|
const { logout } = useAuth();
|
||||||
|
|
||||||
const [emailOrPhone, setEmailOrPhone] = useLocalStorage('emailOrPhone', '');
|
|
||||||
const [emailOrPhoneForm, setEmailOrPhoneForm] = useLocalStorage('emailOrPhoneForm', false);
|
|
||||||
const [loginOrVerifyCode, setLoginOrVerifyCode] = useLocalStorage('loginOrVerifyCode', false);
|
|
||||||
|
|
||||||
const handleOpen = (event: React.MouseEvent<HTMLElement>) => {
|
const handleOpen = (event: React.MouseEvent<HTMLElement>) => {
|
||||||
setOpen(event.currentTarget);
|
setOpen(event.currentTarget);
|
||||||
};
|
};
|
||||||
@@ -46,11 +43,9 @@ export default function AccountPopover() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleLogout = () => {
|
const handleLogout = () => {
|
||||||
setEmailOrPhone('');
|
|
||||||
setEmailOrPhoneForm(false);
|
|
||||||
setLoginOrVerifyCode(false);
|
|
||||||
logout();
|
logout();
|
||||||
navigate('/auth/login');
|
navigate('/auth/login');
|
||||||
|
enqueueSnackbar('Berhasi Logout!', 'success');
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export default function Dashboard() {
|
|||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const [corporateValue, setCorporateValue] = useState(`${user.corporate.id}`);
|
const [corporateValue, setCorporateValue] = useState(`1`);
|
||||||
const [corporateData, setCorporateData] = useState([]);
|
const [corporateData, setCorporateData] = useState([]);
|
||||||
const [policyData, setPolicyData] = useState<CardBalanceProps>({
|
const [policyData, setPolicyData] = useState<CardBalanceProps>({
|
||||||
myLimit: {
|
myLimit: {
|
||||||
|
|||||||
@@ -87,25 +87,22 @@ export default function VerifyCodeForm({
|
|||||||
}, [setValue]);
|
}, [setValue]);
|
||||||
|
|
||||||
const onSubmit = async (data: FormValuesProps) => {
|
const onSubmit = async (data: FormValuesProps) => {
|
||||||
try {
|
// @ts-ignore
|
||||||
|
const response: responseProps = await validateOtp(emailOrPhone, Object.values(data).join(''));
|
||||||
|
|
||||||
|
if (response.data.length === 0) {
|
||||||
|
return enqueueSnackbar(response.message, {
|
||||||
|
variant: 'error',
|
||||||
|
autoHideDuration: 4000,
|
||||||
|
preventDuplicate: true,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
enqueueSnackbar('Verify success!', { variant: 'success', autoHideDuration: 1000 });
|
enqueueSnackbar('Verify success!', { variant: 'success', autoHideDuration: 1000 });
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||||
// @ts-ignore
|
|
||||||
const response: responseProps = await validateOtp(emailOrPhone, Object.values(data).join(''));
|
|
||||||
|
|
||||||
if (response.data.length === 0) {
|
|
||||||
return enqueueSnackbar(response.message, {
|
|
||||||
variant: 'error',
|
|
||||||
autoHideDuration: 4000,
|
|
||||||
preventDuplicate: true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
navigate('/dashboard');
|
|
||||||
enqueueSnackbar('Login Berhasil!', { variant: 'success' });
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
navigate('/dashboard');
|
||||||
|
enqueueSnackbar('Login Berhasil!', { variant: 'success' });
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleChangeWithNextField = (
|
const handleChangeWithNextField = (
|
||||||
|
|||||||
Reference in New Issue
Block a user