fix login & fix logout

This commit is contained in:
Muhammad Fajar
2022-12-07 02:37:18 +07:00
parent 723c9f1895
commit 2bac2bfeb7
7 changed files with 25 additions and 38 deletions

View File

@@ -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)

View File

@@ -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,

View File

@@ -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 = {

View File

@@ -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 });
};

View File

@@ -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 (

View File

@@ -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: {

View File

@@ -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 = (