@adonis-agora/authkit-client 0.11.0 → 0.12.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.
|
@@ -11,7 +11,13 @@ export interface AuthenticatorDeps {
|
|
|
11
11
|
/** lê o access token do token set da sessão (opcional; usado por resolvers userinfo) */
|
|
12
12
|
getAccessToken?: () => string | null | undefined;
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Autenticador do request. O parâmetro `TUser` é o tipo do usuário do app que `resolveUser`
|
|
16
|
+
* devolve — o app o fixa via augmentation de `HttpContext.auth` (`auth: Authenticator<AppUser>`),
|
|
17
|
+
* e aí `getUser()` passa a devolver `AppUser | null` em todo call-site, sem cast. Default `unknown`
|
|
18
|
+
* mantém o comportamento anterior (nada a mudar em quem não augmenta).
|
|
19
|
+
*/
|
|
20
|
+
export declare class Authenticator<TUser = unknown> {
|
|
15
21
|
#private;
|
|
16
22
|
private ctx;
|
|
17
23
|
private deps;
|
|
@@ -21,7 +27,7 @@ export declare class Authenticator {
|
|
|
21
27
|
authenticate(): Promise<Identity>;
|
|
22
28
|
check(): Promise<boolean>;
|
|
23
29
|
hasGlobalRole(role: string): boolean;
|
|
24
|
-
getUser(): Promise<
|
|
30
|
+
getUser(): Promise<TUser | null>;
|
|
25
31
|
/**
|
|
26
32
|
* Monta o objeto pronto para compartilhar com o frontend (ex.: Inertia share),
|
|
27
33
|
* casando com o `AuthSharedProps` que o `@adonis-agora/authkit-react` consome.
|
|
@@ -29,7 +35,7 @@ export declare class Authenticator {
|
|
|
29
35
|
* é responsabilidade do `@adonis-agora/authz` — o AuthKit só autentica.
|
|
30
36
|
*/
|
|
31
37
|
toSharedProps(): Promise<{
|
|
32
|
-
user:
|
|
38
|
+
user: TUser | null;
|
|
33
39
|
globalRoles: string[];
|
|
34
40
|
} | null>;
|
|
35
41
|
}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { AUTHKIT_METRICS, NoopRecorder } from "@adonis-agora/authkit-core";
|
|
2
2
|
import { populateContext } from "./observability/context_bridge.js";
|
|
3
|
+
/**
|
|
4
|
+
* Autenticador do request. O parâmetro `TUser` é o tipo do usuário do app que `resolveUser`
|
|
5
|
+
* devolve — o app o fixa via augmentation de `HttpContext.auth` (`auth: Authenticator<AppUser>`),
|
|
6
|
+
* e aí `getUser()` passa a devolver `AppUser | null` em todo call-site, sem cast. Default `unknown`
|
|
7
|
+
* mantém o comportamento anterior (nada a mudar em quem não augmenta).
|
|
8
|
+
*/
|
|
3
9
|
export class Authenticator {
|
|
4
10
|
ctx;
|
|
5
11
|
deps;
|
|
6
12
|
#identity = null;
|
|
7
13
|
#resolved = false;
|
|
8
|
-
#user;
|
|
14
|
+
#user = null;
|
|
9
15
|
#userResolved = false;
|
|
10
16
|
#recorder;
|
|
11
17
|
constructor(ctx, deps, recorder = new NoopRecorder()) {
|
|
@@ -56,7 +62,9 @@ export class Authenticator {
|
|
|
56
62
|
const identity = await this.getIdentity();
|
|
57
63
|
if (identity && this.deps.resolveUser) {
|
|
58
64
|
const accessToken = this.deps.getAccessToken?.() ?? undefined;
|
|
59
|
-
|
|
65
|
+
// `resolveUser` é tipado `Promise<unknown>` (a lib não conhece o model do app); o `TUser`
|
|
66
|
+
// é a asserção do consumidor, feita UMA vez aqui em vez de em cada call-site de `getUser()`.
|
|
67
|
+
this.#user = (await this.deps.resolveUser(identity, { accessToken }));
|
|
60
68
|
}
|
|
61
69
|
else {
|
|
62
70
|
this.#user = null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adonis-agora/authkit-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "AdonisJS OIDC/OAuth2 relying-party (client) toolkit: session-based authentication against an OpenID Connect identity provider, with JWT/PAT user resolvers and OpenTelemetry metrics.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "dudousxd",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"ioredis-mock": "^8.9.0",
|
|
83
83
|
"@types/node": "25.9.1",
|
|
84
84
|
"typescript": "6.0.3",
|
|
85
|
-
"@adonis-agora/authkit-server": "0.
|
|
85
|
+
"@adonis-agora/authkit-server": "0.36.0"
|
|
86
86
|
},
|
|
87
87
|
"scripts": {
|
|
88
88
|
"build": "tsc && node -e \"require('node:fs').cpSync('stubs','build/stubs',{recursive:true,filter:(s)=>!s.endsWith('.ts')})\"",
|