@visin/frontend-core 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/AuthProvider.d.ts.map +1 -1
- package/dist/auth/AuthProvider.js +29 -0
- package/dist/auth/AuthProvider.js.map +1 -1
- package/dist/auth/authService.d.ts +6 -0
- package/dist/auth/authService.d.ts.map +1 -1
- package/dist/auth/authService.js +1 -0
- package/dist/auth/authService.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACpG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAS5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gGAAgG;IAChG,OAAO,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW;iCAWpB;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE;mBA2DvC,gBAAgB;EASrC"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useCallback, useContext, useEffect, useState } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* How stale the session check may get before returning to the app re-runs it.
|
|
5
|
+
* Each check renews the session cookie, so an installed app left open for days
|
|
6
|
+
* keeps its session alive instead of only renewing on a full page load.
|
|
7
|
+
*/
|
|
8
|
+
const AUTH_RECHECK_INTERVAL_MS = 60 * 60 * 1000;
|
|
3
9
|
/**
|
|
4
10
|
* Builds a Context + `useAuth()` hook backed by a single `authService`
|
|
5
11
|
* instance, so every consumer in the app shares one session check instead
|
|
@@ -13,11 +19,13 @@ export function createAuthContext(authService) {
|
|
|
13
19
|
// flashing "Checking authentication..." on every visit. The check still runs
|
|
14
20
|
// on each mount and corrects it.
|
|
15
21
|
let lastKnownUser;
|
|
22
|
+
let lastCheckedAt = 0;
|
|
16
23
|
function AuthProvider({ children }) {
|
|
17
24
|
const [user, setUser] = useState(lastKnownUser ?? null);
|
|
18
25
|
const [isLoading, setIsLoading] = useState(lastKnownUser === undefined);
|
|
19
26
|
const refresh = useCallback(async () => {
|
|
20
27
|
const result = await authService.checkAuth();
|
|
28
|
+
lastCheckedAt = Date.now();
|
|
21
29
|
lastKnownUser = result.user;
|
|
22
30
|
setUser(result.user);
|
|
23
31
|
return result;
|
|
@@ -32,6 +40,27 @@ export function createAuthContext(authService) {
|
|
|
32
40
|
cancelled = true;
|
|
33
41
|
};
|
|
34
42
|
}, [refresh]);
|
|
43
|
+
// Returning to the app (a tab brought forward, an installed app resumed)
|
|
44
|
+
// re-checks a stale session. A check that could not reach the server — a
|
|
45
|
+
// phone waking up offline — leaves the session as it was rather than
|
|
46
|
+
// signing the user out; the next return tries again.
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const onVisibilityChange = () => {
|
|
49
|
+
if (document.visibilityState !== 'visible')
|
|
50
|
+
return;
|
|
51
|
+
if (Date.now() - lastCheckedAt < AUTH_RECHECK_INTERVAL_MS)
|
|
52
|
+
return;
|
|
53
|
+
lastCheckedAt = Date.now();
|
|
54
|
+
void authService.checkAuth().then((result) => {
|
|
55
|
+
if (result.failed)
|
|
56
|
+
return;
|
|
57
|
+
lastKnownUser = result.user;
|
|
58
|
+
setUser(result.user);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
62
|
+
return () => document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
63
|
+
}, []);
|
|
35
64
|
const login = useCallback(() => {
|
|
36
65
|
authService.redirectToLogin();
|
|
37
66
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthProvider.js","sourceRoot":"","sources":["../../src/auth/AuthProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,12 @@ export interface AuthUser {
|
|
|
29
29
|
export interface AuthCheckResult {
|
|
30
30
|
authenticated: boolean;
|
|
31
31
|
user: AuthUser | null;
|
|
32
|
+
/**
|
|
33
|
+
* True when the check never got an answer (network down, server error), as
|
|
34
|
+
* opposed to the server saying "not logged in". `authenticated` is false
|
|
35
|
+
* either way; this is what lets a caller keep a session it already has.
|
|
36
|
+
*/
|
|
37
|
+
failed?: boolean;
|
|
32
38
|
}
|
|
33
39
|
export interface AuthServiceOptions {
|
|
34
40
|
/** Base URL of auth-service, e.g. `() => getGlobalConfig().AUTH_SERVICE_URL`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"authService.d.ts","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,kBAAkB;qBAS9D,OAAO,CAAC,eAAe,CAAC;0BAgCb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;sBAK5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;2BAUnB,OAAO,CAAC,OAAO,CAAC;kBAKzB,OAAO,CAAC,OAAO,CAAC;kCAUJ,MAAM,KAAG,IAAI;EAcnD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/auth/authService.js
CHANGED
|
@@ -34,6 +34,7 @@ export function createAuthService({ authServiceUrl, authFrontUrl }) {
|
|
|
34
34
|
// anonymous visitor, not a bug worth an error-level log.
|
|
35
35
|
if (!(error instanceof ApiError && error.status === 401)) {
|
|
36
36
|
console.error('Auth check failed:', error);
|
|
37
|
+
return { authenticated: false, user: null, failed: true };
|
|
37
38
|
}
|
|
38
39
|
return { authenticated: false, user: null };
|
|
39
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../src/auth/authService.ts"],"names":[],"mappings":"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"}
|