@ttt-productions/auth-core 1.6.16 → 1.6.17
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/acceptance.d.ts +0 -20
- package/dist/acceptance.d.ts.map +1 -1
- package/dist/acceptance.js +0 -20
- package/dist/acceptance.js.map +1 -1
- package/dist/client/auth.d.ts +0 -5
- package/dist/client/auth.d.ts.map +1 -1
- package/dist/client/auth.js +0 -5
- package/dist/client/auth.js.map +1 -1
- package/dist/client/claims.d.ts +0 -27
- package/dist/client/claims.d.ts.map +1 -1
- package/dist/client/claims.js +0 -27
- package/dist/client/claims.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +0 -3
- package/dist/client/index.js.map +1 -1
- package/dist/email-verification.d.ts +0 -13
- package/dist/email-verification.d.ts.map +1 -1
- package/dist/email-verification.js +0 -16
- package/dist/email-verification.js.map +1 -1
- package/dist/errors.d.ts +0 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -8
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/dist/react/AuthProvider.d.ts.map +1 -1
- package/dist/react/AuthProvider.js +1 -25
- package/dist/react/AuthProvider.js.map +1 -1
- package/dist/react/redirect-storage.d.ts.map +1 -1
- package/dist/react/redirect-storage.js +4 -13
- package/dist/react/redirect-storage.js.map +1 -1
- package/dist/react/types.d.ts +0 -21
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/types.js.map +1 -1
- package/dist/react/useAuth.d.ts +0 -4
- package/dist/react/useAuth.d.ts.map +1 -1
- package/dist/react/useAuth.js +0 -4
- package/dist/react/useAuth.js.map +1 -1
- package/dist/react/useAuthGuard.d.ts +0 -33
- package/dist/react/useAuthGuard.d.ts.map +1 -1
- package/dist/react/useAuthGuard.js +2 -32
- package/dist/react/useAuthGuard.js.map +1 -1
- package/dist/react/useAuthState.d.ts.map +1 -1
- package/dist/react/useAuthState.js +0 -4
- package/dist/react/useAuthState.js.map +1 -1
- package/dist/refusal.d.ts +0 -6
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +0 -12
- package/dist/refusal.js.map +1 -1
- package/dist/server/assertAuth.d.ts +1 -1
- package/dist/server/assertAuth.d.ts.map +1 -1
- package/dist/server/assertAuth.js +0 -22
- package/dist/server/assertAuth.js.map +1 -1
- package/dist/server/authError.d.ts +0 -48
- package/dist/server/authError.d.ts.map +1 -1
- package/dist/server/authError.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +0 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/types.d.ts +5 -105
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +0 -2
- package/dist/server/types.js.map +1 -1
- package/package.json +1 -1
package/dist/server/types.d.ts
CHANGED
|
@@ -1,131 +1,31 @@
|
|
|
1
1
|
import type { CallableRequest } from 'firebase-functions/v2/https';
|
|
2
2
|
import type { DecodedIdToken } from 'firebase-admin/auth';
|
|
3
3
|
import type { Firestore } from 'firebase-admin/firestore';
|
|
4
|
-
|
|
5
|
-
* Per-callable requirements passed at every assertAuth call site.
|
|
6
|
-
* These are application-agnostic.
|
|
7
|
-
*/
|
|
8
|
-
export interface AuthRequirements {
|
|
9
|
-
/**
|
|
10
|
-
* Allow unverified email. Default: false.
|
|
11
|
-
* If true, the emailVerified check is skipped entirely.
|
|
12
|
-
* Special-case for system flows (e.g. user registration).
|
|
13
|
-
*/
|
|
4
|
+
export interface AuthRequirements<TAdminOptions = never> {
|
|
14
5
|
allowUnverified?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* Require email_verified=true on the auth token.
|
|
17
|
-
* Default: false. Skipped when allowUnverified=true.
|
|
18
|
-
*/
|
|
19
6
|
emailVerified?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Skip the status check entirely. Special-case for flows where the
|
|
22
|
-
* user doc may not exist yet (e.g. user registration).
|
|
23
|
-
* Default: false.
|
|
24
|
-
*/
|
|
25
7
|
allowAnyStatus?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Allow suspended users to pass the status check. Banned users still fail.
|
|
28
|
-
* Use ONLY for callables that are a suspended user's last recourse
|
|
29
|
-
* (e.g. admin-support chat / ban appeal).
|
|
30
|
-
* Default: false. Does NOT skip the existence check.
|
|
31
|
-
*/
|
|
32
8
|
allowSuspended?: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Let a caller below the currently required acceptance level through. Meaningful only
|
|
35
|
-
* when the factory was configured with `acceptance`; ignored otherwise.
|
|
36
|
-
* Use ONLY for callables that must work before the caller accepts: the accept callable
|
|
37
|
-
* itself, registration (a new account holds no accepted level yet), and last-recourse
|
|
38
|
-
* paths such as sign-out, support, refunds, account deletion, and legally required
|
|
39
|
-
* reporting. Default: false.
|
|
40
|
-
*/
|
|
41
9
|
allowUnaccepted?: boolean;
|
|
42
|
-
|
|
43
|
-
* Require admin status. Delegates to config.requireAdmin().
|
|
44
|
-
* The shape of this object is forwarded verbatim to the consumer's
|
|
45
|
-
* requireAdmin callback — the package does not interpret it.
|
|
46
|
-
*/
|
|
47
|
-
admin?: AdminCheckOptions;
|
|
10
|
+
admin?: TAdminOptions;
|
|
48
11
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Options forwarded to the consumer's requireAdmin callback. Generic shape.
|
|
51
|
-
* Consuming apps may add their own fields; the package does not validate.
|
|
52
|
-
*/
|
|
53
|
-
export interface AdminCheckOptions {
|
|
54
|
-
allowJrAdmin?: boolean;
|
|
55
|
-
useFastCheck?: boolean;
|
|
56
|
-
errorMessage?: string;
|
|
57
|
-
[key: string]: unknown;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Return value from assertAuth. Generic over the consuming app's user
|
|
61
|
-
* document type.
|
|
62
|
-
*/
|
|
63
12
|
export interface AuthContext<TUser = unknown, TAdmin = void> {
|
|
64
13
|
uid: string;
|
|
65
14
|
token: DecodedIdToken;
|
|
66
|
-
/** Populated when the user doc was read (default not-banned check). */
|
|
67
15
|
userDoc?: TUser;
|
|
68
|
-
/** Result returned by config.requireAdmin. Populated only when an admin check ran (AuthRequirements.admin was set). Undefined otherwise. */
|
|
69
16
|
admin?: TAdmin;
|
|
70
17
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Status the consuming app reports for a user doc. The package only
|
|
73
|
-
* interprets these three values.
|
|
74
|
-
*/
|
|
75
18
|
export type UserStatus = 'active' | 'suspended' | 'banned';
|
|
76
|
-
|
|
77
|
-
* Configuration for createAssertAuth. The consuming app supplies every
|
|
78
|
-
* app-specific operation as a callback.
|
|
79
|
-
*/
|
|
80
|
-
export interface AssertAuthConfig<TUser, TAdmin = void> {
|
|
81
|
-
/**
|
|
82
|
-
* Returns the admin Firestore instance. Called every assertAuth invocation
|
|
83
|
-
* that needs a Firestore read. Implementations typically return
|
|
84
|
-
* `admin.firestore()` from a memoized handle.
|
|
85
|
-
*/
|
|
19
|
+
export interface AssertAuthConfig<TUser, TAdmin = void, TAdminOptions = never> {
|
|
86
20
|
firestore: () => Firestore;
|
|
87
|
-
/**
|
|
88
|
-
* Returns the Firestore document path for a user profile, given a uid.
|
|
89
|
-
* Example: `userProfiles/${uid}`
|
|
90
|
-
*/
|
|
91
21
|
userProfilePath: (uid: string) => string;
|
|
92
|
-
/**
|
|
93
|
-
* Returns the user's status given the user doc data. The package only
|
|
94
|
-
* acts on 'active' | 'suspended' | 'banned'. Apps may store status in any
|
|
95
|
-
* field; this callback interprets it.
|
|
96
|
-
*/
|
|
97
22
|
getUserStatus: (user: TUser) => UserStatus;
|
|
98
|
-
|
|
99
|
-
* Admin check. Called only when AuthRequirements.admin is set. The
|
|
100
|
-
* package forwards uid, token, and the admin options verbatim. The
|
|
101
|
-
* callback throws (typically HttpsError) on failure.
|
|
102
|
-
*/
|
|
103
|
-
requireAdmin: (uid: string, token: DecodedIdToken, options: AdminCheckOptions) => Promise<TAdmin>;
|
|
104
|
-
/**
|
|
105
|
-
* Optional acceptance-level gate. When set, every assertAuth call that does not pass
|
|
106
|
-
* `allowUnaccepted` refuses a caller whose accepted level (read from the token claim
|
|
107
|
-
* `claimKey`) is below the level `requiredLevel()` returns. Absent = no gate, exactly the
|
|
108
|
-
* behavior before the gate existed.
|
|
109
|
-
*/
|
|
23
|
+
requireAdmin: (uid: string, token: DecodedIdToken, options: TAdminOptions) => Promise<TAdmin>;
|
|
110
24
|
acceptance?: AcceptanceGateConfig;
|
|
111
25
|
}
|
|
112
|
-
/**
|
|
113
|
-
* The consuming app's acceptance-level wiring. The package holds no claim name and no
|
|
114
|
-
* document knowledge: the app names the claim and supplies the current requirement.
|
|
115
|
-
*/
|
|
116
26
|
export interface AcceptanceGateConfig {
|
|
117
|
-
/** The custom claim on the verified ID token that holds the caller's accepted level. */
|
|
118
27
|
claimKey: string;
|
|
119
|
-
/**
|
|
120
|
-
* The level currently required. Runs on every gated assertAuth, so it must be cheap —
|
|
121
|
-
* read it from a cached snapshot, never a fresh Firestore read per call. A non-finite or
|
|
122
|
-
* non-positive result requires nothing (see `normalizeAcceptanceLevel`); a throw rejects
|
|
123
|
-
* the call.
|
|
124
|
-
*/
|
|
125
28
|
requiredLevel: () => number | Promise<number>;
|
|
126
29
|
}
|
|
127
|
-
|
|
128
|
-
* The function returned by createAssertAuth.
|
|
129
|
-
*/
|
|
130
|
-
export type AssertAuthFn<TUser, TAdmin = void> = (request: CallableRequest, requirements?: AuthRequirements) => Promise<AuthContext<TUser, TAdmin>>;
|
|
30
|
+
export type AssertAuthFn<TUser, TAdmin = void, TAdminOptions = never> = (request: CallableRequest, requirements?: AuthRequirements<TAdminOptions>) => Promise<AuthContext<TUser, TAdmin>>;
|
|
131
31
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,aAAa,GAAG,KAAK;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,WAAW,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,IAAI;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3D,MAAM,WAAW,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,GAAG,KAAK;IAC3E,SAAS,EAAE,MAAM,SAAS,CAAC;IAE3B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAEzC,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC;IAE3C,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9F,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,GAAG,KAAK,IAAI,CACtE,OAAO,EAAE,eAAe,EACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,KAC3C,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"}
|
package/dist/server/types.js
CHANGED
package/dist/server/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { CallableRequest } from 'firebase-functions/v2/https';\nimport type { DecodedIdToken } from 'firebase-admin/auth';\nimport type { Firestore } from 'firebase-admin/firestore';\n\nexport interface AuthRequirements<TAdminOptions = never> {\n allowUnverified?: boolean;\n\n emailVerified?: boolean;\n\n allowAnyStatus?: boolean;\n\n allowSuspended?: boolean;\n\n allowUnaccepted?: boolean;\n\n admin?: TAdminOptions;\n}\n\nexport interface AuthContext<TUser = unknown, TAdmin = void> {\n uid: string;\n token: DecodedIdToken;\n userDoc?: TUser;\n admin?: TAdmin;\n}\n\nexport type UserStatus = 'active' | 'suspended' | 'banned';\n\nexport interface AssertAuthConfig<TUser, TAdmin = void, TAdminOptions = never> {\n firestore: () => Firestore;\n\n userProfilePath: (uid: string) => string;\n\n getUserStatus: (user: TUser) => UserStatus;\n\n requireAdmin: (uid: string, token: DecodedIdToken, options: TAdminOptions) => Promise<TAdmin>;\n\n acceptance?: AcceptanceGateConfig;\n}\n\nexport interface AcceptanceGateConfig {\n claimKey: string;\n\n requiredLevel: () => number | Promise<number>;\n}\n\nexport type AssertAuthFn<TUser, TAdmin = void, TAdminOptions = never> = (\n request: CallableRequest,\n requirements?: AuthRequirements<TAdminOptions>,\n) => Promise<AuthContext<TUser, TAdmin>>;\n"]}
|