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)
|
||||
|
||||
@@ -158,10 +158,10 @@ class Helper
|
||||
* @param string $message
|
||||
* @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([
|
||||
'status' => in_array($statusCode, [200, 201, 204]) ? 'success' : 'error',
|
||||
'status' => $status,
|
||||
'statusCode' => $statusCode,
|
||||
'message' => $message,
|
||||
'data' => $data,
|
||||
|
||||
@@ -28,7 +28,7 @@ export type JWTContextType = {
|
||||
method: 'jwt';
|
||||
login: (phoneOrEmail: string) => Promise<void>;
|
||||
validateOtp: (phoneOrEmail: string, otp: string) => Promise<void>
|
||||
logout: () => Promise<void>;
|
||||
logout: () => void;
|
||||
};
|
||||
|
||||
// export type FirebaseContextType = {
|
||||
|
||||
@@ -132,16 +132,9 @@ function AuthProvider({ children }: AuthProviderProps) {
|
||||
axios
|
||||
.post('/verify-code', { phoneOrEmail: phoneOrEmail, otp })
|
||||
.then((response) => {
|
||||
const { user, token } = response.data.data;
|
||||
const { token } = response.data.data;
|
||||
setSession(token);
|
||||
|
||||
dispatch({
|
||||
type: Types.ValidateOtp,
|
||||
payload: {
|
||||
user,
|
||||
},
|
||||
});
|
||||
|
||||
return response.data;
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -149,9 +142,11 @@ function AuthProvider({ children }: AuthProviderProps) {
|
||||
if (error.response.status !== 422) throw error.response;
|
||||
});
|
||||
|
||||
const logout = async () => {
|
||||
await axios.post('/logout');
|
||||
const logout = () => {
|
||||
setSession(null);
|
||||
localStorage.removeItem('loginOrVerifyCode');
|
||||
localStorage.removeItem('emailOrPhone');
|
||||
localStorage.removeItem('emailOrPhoneForm');
|
||||
dispatch({ type: Types.Logout });
|
||||
};
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import { IconButtonAnimate } from '../../../components/animate';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import useAuth from '../../../hooks/useAuth';
|
||||
import useLocalStorage from '../../../hooks/useLocalStorage';
|
||||
import { enqueueSnackbar } from 'notistack';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@@ -33,10 +34,6 @@ export default function AccountPopover() {
|
||||
const navigate = useNavigate();
|
||||
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>) => {
|
||||
setOpen(event.currentTarget);
|
||||
};
|
||||
@@ -46,11 +43,9 @@ export default function AccountPopover() {
|
||||
};
|
||||
|
||||
const handleLogout = () => {
|
||||
setEmailOrPhone('');
|
||||
setEmailOrPhoneForm(false);
|
||||
setLoginOrVerifyCode(false);
|
||||
logout();
|
||||
navigate('/auth/login');
|
||||
enqueueSnackbar('Berhasi Logout!', 'success');
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@@ -59,7 +59,7 @@ export default function Dashboard() {
|
||||
const { user } = useAuth();
|
||||
|
||||
// @ts-ignore
|
||||
const [corporateValue, setCorporateValue] = useState(`${user.corporate.id}`);
|
||||
const [corporateValue, setCorporateValue] = useState(`1`);
|
||||
const [corporateData, setCorporateData] = useState([]);
|
||||
const [policyData, setPolicyData] = useState<CardBalanceProps>({
|
||||
myLimit: {
|
||||
|
||||
@@ -87,25 +87,22 @@ export default function VerifyCodeForm({
|
||||
}, [setValue]);
|
||||
|
||||
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 });
|
||||
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 = (
|
||||
|
||||
Reference in New Issue
Block a user