Skip to content

Commit df4de3b

Browse files
Enhance SecureStore access with keychain accessibility
1 parent 582597b commit df4de3b

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

src/auth/AuthProvider.tsx

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,22 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
3030
useEffect(() => {
3131
const loadTokens = async () => {
3232
try {
33-
const accessToken = await SecureStore.getItemAsync(ACCESS_TOKEN_KEY);
34-
const refreshToken = await SecureStore.getItemAsync(REFRESH_TOKEN_KEY);
35-
const expiresAtStr = await SecureStore.getItemAsync(EXPIRES_AT_KEY);
33+
const accessToken = await SecureStore.getItemAsync(ACCESS_TOKEN_KEY, {
34+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
35+
});
36+
const refreshToken = await SecureStore.getItemAsync(REFRESH_TOKEN_KEY, {
37+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
38+
});
39+
const expiresAtStr = await SecureStore.getItemAsync(EXPIRES_AT_KEY, {
40+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
41+
});
3642
const createdAtStr =
37-
await SecureStore.getItemAsync(TOKEN_CREATED_AT_KEY);
38-
const codeVerifier = await SecureStore.getItemAsync(CODE_VERIFIER_KEY);
43+
await SecureStore.getItemAsync(TOKEN_CREATED_AT_KEY, {
44+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
45+
});
46+
const codeVerifier = await SecureStore.getItemAsync(CODE_VERIFIER_KEY, {
47+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
48+
});
3949

4050
if (accessToken && refreshToken && expiresAtStr) {
4151
const expiresAt = parseInt(expiresAtStr, 10);
@@ -65,23 +75,37 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
6575
const setTokens = async (newTokens: AuthTokens | null) => {
6676
try {
6777
if (newTokens) {
68-
await SecureStore.setItemAsync(ACCESS_TOKEN_KEY, newTokens.accessToken);
78+
await SecureStore.setItemAsync(ACCESS_TOKEN_KEY, newTokens.accessToken, {
79+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
80+
});
6981
await SecureStore.setItemAsync(
7082
REFRESH_TOKEN_KEY,
7183
newTokens.refreshToken,
84+
{
85+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
86+
},
7287
);
7388
await SecureStore.setItemAsync(
7489
EXPIRES_AT_KEY,
7590
newTokens.expiresAt.toString(),
91+
{
92+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
93+
},
7694
);
7795
await SecureStore.setItemAsync(
7896
TOKEN_CREATED_AT_KEY,
7997
newTokens.createdAt.toString(),
98+
{
99+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
100+
},
80101
);
81102
if (newTokens.codeVerifier) {
82103
await SecureStore.setItemAsync(
83104
CODE_VERIFIER_KEY,
84105
newTokens.codeVerifier,
106+
{
107+
keychainAccessible: SecureStore.AFTER_FIRST_UNLOCK,
108+
},
85109
);
86110
}
87111
setTokensState(newTokens);

0 commit comments

Comments
 (0)