fix: ganti penyimpanan token dari AsyncStorage ke SecureStore
Token autentikasi kini disimpan di Keychain (iOS) / Keystore (Android) sehingga otomatis terhapus saat uninstall dan tidak bisa dipulihkan lewat Google Backup. @notification_permission tetap di AsyncStorage karena bukan data sensitif.
This commit is contained in:
@@ -2,6 +2,7 @@ import { ConstEnv } from '@/constants/ConstEnv';
|
||||
import { apiRegisteredToken, apiUnregisteredToken } from '@/lib/api';
|
||||
import { getToken } from '@/lib/useNotification';
|
||||
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||||
import * as SecureStore from 'expo-secure-store';
|
||||
import { useQueryClient } from '@tanstack/react-query';
|
||||
import CryptoES from "crypto-es";
|
||||
import { router } from "expo-router";
|
||||
@@ -35,7 +36,7 @@ export default function AuthProvider({ children }: { children: ReactNode }): Rea
|
||||
|
||||
useEffect(() => {
|
||||
(async (): Promise<void> => {
|
||||
const token = await AsyncStorage.getItem('@token');
|
||||
const token = await SecureStore.getItemAsync('@token');
|
||||
tokenRef.current = token || '';
|
||||
setIsLoading(false);
|
||||
})()
|
||||
@@ -62,14 +63,14 @@ export default function AuthProvider({ children }: { children: ReactNode }): Rea
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
} finally {
|
||||
await AsyncStorage.setItem('@token', token);
|
||||
await SecureStore.setItemAsync('@token', token);
|
||||
tokenRef.current = token;
|
||||
router.replace('/home')
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
await apiRegisteredToken({ user: hasil, token: "" })
|
||||
await AsyncStorage.setItem('@token', token);
|
||||
await SecureStore.setItemAsync('@token', token);
|
||||
tokenRef.current = token;
|
||||
router.replace('/home')
|
||||
}
|
||||
@@ -87,7 +88,7 @@ export default function AuthProvider({ children }: { children: ReactNode }): Rea
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
} finally {
|
||||
await AsyncStorage.setItem('@token', '');
|
||||
await SecureStore.deleteItemAsync('@token');
|
||||
tokenRef.current = null;
|
||||
queryClient.clear();
|
||||
router.replace('/');
|
||||
|
||||
Reference in New Issue
Block a user