@venizia/ardor-admin 0.4.0 → 0.4.2
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/common/types.d.ts +28 -36
- package/dist/common/types.d.ts.map +1 -1
- package/dist/components/application.d.ts.map +1 -1
- package/dist/components/application.js +8 -11
- package/dist/components/application.js.map +1 -1
- package/dist/features/feature.js +2 -2
- package/dist/features/feature.js.map +1 -1
- package/dist/features/messages.js +2 -2
- package/dist/features/messages.js.map +1 -1
- package/dist/hooks/use-refresh-token.d.ts +2 -1
- package/dist/hooks/use-refresh-token.d.ts.map +1 -1
- package/dist/hooks/use-refresh-token.js +6 -4
- package/dist/hooks/use-refresh-token.js.map +1 -1
- package/dist/hooks/use-translate.d.ts +6 -3
- package/dist/hooks/use-translate.d.ts.map +1 -1
- package/dist/hooks/use-translate.js.map +1 -1
- package/dist/providers/auth.d.ts +24 -26
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +28 -27
- package/dist/providers/auth.js.map +1 -1
- package/dist/providers/count-rest-data.d.ts +12 -11
- package/dist/providers/count-rest-data.d.ts.map +1 -1
- package/dist/providers/count-rest-data.js +13 -18
- package/dist/providers/count-rest-data.js.map +1 -1
- package/dist/providers/i18n.d.ts.map +1 -1
- package/dist/providers/i18n.js +7 -4
- package/dist/providers/i18n.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/list-filter.d.ts +36 -0
- package/dist/providers/list-filter.d.ts.map +1 -0
- package/dist/providers/list-filter.js +66 -0
- package/dist/providers/list-filter.js.map +1 -0
- package/dist/providers/rest-data.d.ts +34 -28
- package/dist/providers/rest-data.d.ts.map +1 -1
- package/dist/providers/rest-data.js +85 -214
- package/dist/providers/rest-data.js.map +1 -1
- package/package.json +13 -13
package/dist/common/types.d.ts
CHANGED
|
@@ -1,54 +1,46 @@
|
|
|
1
1
|
import type { Store } from '@reduxjs/toolkit';
|
|
2
2
|
import type { Container } from '@venizia/ignis-inversion';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TExtraRequest } from '@venizia/ignis-kernel/repository';
|
|
4
|
+
import type { AuthProvider, CoreAdminProps, DataProvider, Locale, ResourceProps } from 'ra-core';
|
|
4
5
|
import type { ReactNode } from 'react';
|
|
5
6
|
import type { RouteProps } from 'react-router-dom';
|
|
6
|
-
import type {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
import type { DefaultNetworkRequestService, IDataSourceAuth, ISendParams, ISendResponse, RequestCountData, TConstValue, TRequestMethod, TRequestType } from '@venizia/ardor-kernel';
|
|
8
|
+
/** What `DefaultRestDataProvider.request` sends: every react-admin method goes through it. */
|
|
9
|
+
export interface IRestRequestOptions<TResource extends string = string> {
|
|
10
|
+
resource: TResource;
|
|
11
|
+
type: TRequestType;
|
|
12
|
+
method: TRequestMethod;
|
|
13
|
+
/** Default `[resource]`. */
|
|
14
|
+
paths?: Array<string>;
|
|
15
|
+
body?: unknown;
|
|
16
|
+
bodyType?: ISendParams['bodyType'];
|
|
17
|
+
query?: Record<string, unknown>;
|
|
18
|
+
extra?: TExtraRequest;
|
|
19
|
+
/** Win over the computed headers: a caller that names a header means it. */
|
|
20
|
+
headers?: HeadersInit;
|
|
21
|
+
requestCountData?: TConstValue<typeof RequestCountData>;
|
|
19
22
|
}
|
|
23
|
+
/** The nine data methods of react-admin, as ra-core declares them. */
|
|
24
|
+
export type IReactAdminDataProvider<TResource extends string = string> = Pick<DataProvider<TResource>, 'getList' | 'getOne' | 'getMany' | 'getManyReference' | 'update' | 'updateMany' | 'create' | 'delete' | 'deleteMany'>;
|
|
20
25
|
export interface IDataProvider<TResource extends string = string> extends IReactAdminDataProvider<TResource> {
|
|
21
|
-
send: <
|
|
26
|
+
send: <TResult = unknown>(opts: {
|
|
22
27
|
resource: TResource;
|
|
23
28
|
params: ISendParams;
|
|
24
|
-
}) => Promise<ISendResponse<
|
|
29
|
+
}) => Promise<ISendResponse<TResult>>;
|
|
25
30
|
getNetworkService(): DefaultNetworkRequestService;
|
|
26
31
|
/** Spread into an `HttpDataSource`: the repository then sends what this provider sends. */
|
|
27
32
|
getDataSourceAuth(): IDataSourceAuth;
|
|
28
33
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
redirectTo?: string | boolean;
|
|
32
|
-
} | void | AnyType>;
|
|
33
|
-
logout: (params: AnyType) => Promise<void | false | string>;
|
|
34
|
-
checkAuth: (params: AnyType & QueryFunctionContext) => Promise<void>;
|
|
35
|
-
checkError: (error: AnyType) => Promise<void>;
|
|
36
|
-
getIdentity?: (params?: QueryFunctionContext) => Promise<UserIdentity>;
|
|
37
|
-
getPermissions: (params: AnyType & QueryFunctionContext) => Promise<AnyType>;
|
|
38
|
-
/** Present only when the application binds `CoreBindings.PERMISSION_PROVIDER`. */
|
|
39
|
-
canAccess?: (params: {
|
|
40
|
-
resource: string;
|
|
41
|
-
action: string;
|
|
42
|
-
record?: unknown;
|
|
43
|
-
signal?: AbortSignal;
|
|
44
|
-
}) => Promise<boolean>;
|
|
45
|
-
}
|
|
34
|
+
/** The auth methods of react-admin, as ra-core declares them; `getPermissions` is required here. */
|
|
35
|
+
export type IReactAdminAuthProvider = Required<Pick<AuthProvider, 'login' | 'logout' | 'checkAuth' | 'checkError' | 'getPermissions'>> & Pick<AuthProvider, 'getIdentity' | 'canAccess'>;
|
|
46
36
|
export interface IAuthProvider extends IReactAdminAuthProvider {
|
|
47
|
-
getRoles: (params?:
|
|
48
|
-
|
|
37
|
+
getRoles: (params?: unknown) => Promise<Set<string>>;
|
|
38
|
+
/** `true` when the session was refreshed, `false` when there is no refresh to make. */
|
|
39
|
+
refreshToken: () => Promise<boolean>;
|
|
49
40
|
}
|
|
50
41
|
export interface II18nProviderOptions {
|
|
51
|
-
|
|
42
|
+
/** Messages by locale, merged over the English ones: a source may hold only the keys it relabels. */
|
|
43
|
+
i18nSources?: Record<string, object>;
|
|
52
44
|
languages?: Array<Locale>;
|
|
53
45
|
}
|
|
54
46
|
export interface IApplication extends Omit<CoreAdminProps, 'children'> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgFpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAgFpD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA8EnD,CAAC"}
|
|
@@ -57,7 +57,8 @@ export const ArdorApplication = (props) => {
|
|
|
57
57
|
const mounted = React.useMemo(() => {
|
|
58
58
|
return Features.mount({ features, resources, routes });
|
|
59
59
|
}, [features, resources, routes]);
|
|
60
|
-
|
|
60
|
+
// Resolved once per container: the props below are a new object on every render.
|
|
61
|
+
const providers = React.useMemo(() => {
|
|
61
62
|
const dataProvider = container.get({
|
|
62
63
|
key: CoreBindings.DEFAULT_REST_DATA_PROVIDER,
|
|
63
64
|
});
|
|
@@ -70,23 +71,19 @@ export const ArdorApplication = (props) => {
|
|
|
70
71
|
const i18nProvider = container.get({
|
|
71
72
|
key: CoreBindings.DEFAULT_I18N_PROVIDER,
|
|
72
73
|
});
|
|
73
|
-
return {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
i18nProvider,
|
|
77
|
-
...reactAdminProps,
|
|
78
|
-
};
|
|
79
|
-
}, [container, reactAdminProps]);
|
|
74
|
+
return { dataProvider, ...(authProvider ? { authProvider } : {}), i18nProvider };
|
|
75
|
+
}, [container]);
|
|
76
|
+
const adminProps = { ...providers, ...reactAdminProps };
|
|
80
77
|
const isMessagesReady = useFeatureMessagesReady({
|
|
81
78
|
features,
|
|
82
|
-
i18nProvider:
|
|
79
|
+
i18nProvider: providers.i18nProvider,
|
|
83
80
|
});
|
|
84
81
|
if (!isMessagesReady) {
|
|
85
82
|
return (_jsx(Wrapper, { container: container, reduxStore: reduxStore, suspense: suspense, enableDebug: enableDebug, children: suspense }));
|
|
86
83
|
}
|
|
87
|
-
return (_jsx(Wrapper, { container: container, reduxStore: reduxStore, suspense: suspense, enableDebug: enableDebug, children: _jsxs(CoreAdmin, { ...adminProps, children: [mounted.resources.map(resource => {
|
|
84
|
+
return (_jsx(Wrapper, { container: container, reduxStore: reduxStore, suspense: suspense, enableDebug: enableDebug, children: _jsxs(CoreAdmin, { ...adminProps, children: [mounted.resources.map((resource) => {
|
|
88
85
|
return _jsx(Resource, { ...resource }, resource.name);
|
|
89
|
-
}), _jsx(CustomRoutes, { children: mounted.routes.map(route => {
|
|
86
|
+
}), _jsx(CustomRoutes, { children: mounted.routes.map((route) => {
|
|
90
87
|
return _jsx(Route, { ...route }, route.id ?? route.path);
|
|
91
88
|
}) })] }) }));
|
|
92
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/components/application.tsx"],"names":[],"mappings":"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"}
|
package/dist/features/feature.js
CHANGED
|
@@ -36,8 +36,8 @@ export class Features {
|
|
|
36
36
|
claim({ owner: feature.name, resources: feature.resources ?? [] });
|
|
37
37
|
}
|
|
38
38
|
return {
|
|
39
|
-
resources: [...resources, ...features.flatMap(feature => feature.resources ?? [])],
|
|
40
|
-
routes: [...routes, ...features.flatMap(feature => feature.routes ?? [])],
|
|
39
|
+
resources: [...resources, ...features.flatMap((feature) => feature.resources ?? [])],
|
|
40
|
+
routes: [...routes, ...features.flatMap((feature) => feature.routes ?? [])],
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAkBxE,MAAM,OAAO,QAAQ;IACnB,sDAAsD;IACtD,MAAM,CAAC,MAAM,CACX,OAA6B;QAE7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAoC,IAA8B;QAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAe,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAIZ;QACC,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,KAAyD,EAAE,EAAE;YAC1E,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,CAAC;wBACb,OAAO,EAAE,wBAAwB,QAAQ,CAAC,IAAI,yBAAyB,KAAK,UAAU,KAAK,CAAC,KAAK,qDAAqD;qBACvJ,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO;YACL,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/features/feature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,0BAA0B,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AAkBxE,MAAM,OAAO,QAAQ;IACnB,sDAAsD;IACtD,MAAM,CAAC,MAAM,CACX,OAA6B;QAE7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAoC,IAA8B;QAC3E,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAE3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,SAAS,CAAC,GAAG,CAAe,EAAE,GAAG,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAIZ;QACC,MAAM,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAEvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,KAAyD,EAAE,EAAE;YAC1E,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,CAAC;wBACb,OAAO,EAAE,wBAAwB,QAAQ,CAAC,IAAI,yBAAyB,KAAK,UAAU,KAAK,CAAC,KAAK,qDAAqD;qBACvJ,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO;YACL,SAAS,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACpF,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SAC5E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -14,7 +14,7 @@ export class FeatureMessages {
|
|
|
14
14
|
/** Whether some feature in the list loads this locale lazily. */
|
|
15
15
|
static hasLoader(opts) {
|
|
16
16
|
const { features, locale } = opts;
|
|
17
|
-
return features.some(feature => typeof feature.messages?.[locale] === 'function');
|
|
17
|
+
return features.some((feature) => typeof feature.messages?.[locale] === 'function');
|
|
18
18
|
}
|
|
19
19
|
/** Whether a lazy bundle for the locale is still unloaded. */
|
|
20
20
|
isPending(opts) {
|
|
@@ -31,7 +31,7 @@ export class FeatureMessages {
|
|
|
31
31
|
}
|
|
32
32
|
return FeatureMessages.combine({
|
|
33
33
|
locale,
|
|
34
|
-
bundles: this.opts.features.map(feature => {
|
|
34
|
+
bundles: this.opts.features.map((feature) => {
|
|
35
35
|
const messages = feature.messages?.[locale];
|
|
36
36
|
return {
|
|
37
37
|
feature: feature.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/features/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,MAAM,iBAAiB,CAAC;AASpC;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAG1B,YAA6B,IAAmC;QAAnC,SAAI,GAAJ,IAAI,CAA+B;QAF/C,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEe,CAAC;IAEpE,iEAAiE;IACjE,MAAM,CAAC,SAAS,CAAC,IAAmD;QAClE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/features/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,MAAM,iBAAiB,CAAC;AASpC;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAG1B,YAA6B,IAAmC;QAAnC,SAAI,GAAJ,IAAI,CAA+B;QAF/C,WAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEe,CAAC;IAEpE,iEAAiE;IACjE,MAAM,CAAC,SAAS,CAAC,IAAmD;QAClE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;IACtF,CAAC;IAED,8DAA8D;IAC9D,SAAS,CAAC,IAAwB;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxB,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YACxB,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CACpE,CAAC;IACJ,CAAC;IAED,+FAA+F;IAC/F,OAAO,CAAC,IAAwB;QAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,eAAe,CAAC,OAAO,CAAC;YAC7B,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAE,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;iBAC9D,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,IAAI,CAAC,IAAwB;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,MAAM,EAAE,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ;aACrE,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,IAAwD;QAC7E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,CAAC;wBACb,OAAO,EAAE,uBAAuB,GAAG,MAAM,MAAM,yBAAyB,KAAK,UAAU,OAAO,wFAAwF;qBACvL,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,IAAyC;QAC/D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAE/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC/E,OAAO,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const useRefreshToken: () => TRefreshToken;
|
|
2
|
-
|
|
2
|
+
/** `true` when the session was refreshed, `false` when there is no auth provider or no refresh to make. */
|
|
3
|
+
type TRefreshToken = () => Promise<boolean>;
|
|
3
4
|
export {};
|
|
4
5
|
//# sourceMappingURL=use-refresh-token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-refresh-token.d.ts","sourceRoot":"","sources":["../../src/hooks/use-refresh-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-refresh-token.d.ts","sourceRoot":"","sources":["../../src/hooks/use-refresh-token.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,eAAe,QAAO,aAqBlC,CAAC;AAEF,2GAA2G;AAC3G,KAAK,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useQueryClient } from '@tanstack/react-query';
|
|
3
3
|
import { useAuthProvider } from 'ra-core';
|
|
4
|
+
import { Logger } from '@venizia/ardor-kernel';
|
|
5
|
+
const logger = Logger.getInstance({ scope: 'useRefreshToken' });
|
|
4
6
|
export const useRefreshToken = () => {
|
|
5
7
|
const authProvider = useAuthProvider();
|
|
6
8
|
const queryClient = useQueryClient();
|
|
7
9
|
const refreshToken = React.useCallback(() => {
|
|
8
10
|
if (!authProvider) {
|
|
9
|
-
return Promise.resolve();
|
|
11
|
+
return Promise.resolve(false);
|
|
10
12
|
}
|
|
11
|
-
return authProvider.refreshToken().then((
|
|
13
|
+
return authProvider.refreshToken().then((isRefreshed) => {
|
|
12
14
|
queryClient
|
|
13
15
|
.invalidateQueries({ queryKey: ['auth', 'getPermissions'] })
|
|
14
16
|
.catch((error) => {
|
|
15
|
-
|
|
17
|
+
logger.error('[refreshToken] Failed to invalidate permissions cache | error: %s', error);
|
|
16
18
|
});
|
|
17
|
-
return
|
|
19
|
+
return isRefreshed;
|
|
18
20
|
});
|
|
19
21
|
}, [authProvider, queryClient]);
|
|
20
22
|
return refreshToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-refresh-token.js","sourceRoot":"","sources":["../../src/hooks/use-refresh-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"use-refresh-token.js","sourceRoot":"","sources":["../../src/hooks/use-refresh-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAkB,EAAE;IACjD,MAAM,YAAY,GAAG,eAAe,EAAiB,CAAC;IAEtD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;YACtD,WAAW;iBACR,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;iBAC3D,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACxB,MAAM,CAAC,KAAK,CAAC,mEAAmE,EAAE,KAAK,CAAC,CAAC;YAC3F,CAAC,CAAC,CAAC;YACL,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type I18nProvider } from 'ra-core';
|
|
2
|
+
import type { TFullPaths } from '@venizia/ardor-kernel';
|
|
2
3
|
import type { englishMessages } from '../common/locales/index.js';
|
|
3
4
|
export interface IUseTranslateKeysOverrides {
|
|
4
5
|
}
|
|
5
6
|
export type TUseTranslateKeysDefault = TFullPaths<typeof englishMessages>;
|
|
6
7
|
export type TUseTranslateKeys = TUseTranslateKeysDefault | keyof IUseTranslateKeysOverrides;
|
|
7
|
-
|
|
8
|
-
export
|
|
8
|
+
/** The options react-admin's `translate` takes (`smart_count`, `_` for a default text, ...). */
|
|
9
|
+
export type TUseTranslateOptions = Parameters<I18nProvider['translate']>[1];
|
|
10
|
+
export type TUseTranslateFn = (key: TUseTranslateKeys, options?: TUseTranslateOptions) => string;
|
|
11
|
+
export declare const useTranslate: () => TUseTranslateFn;
|
|
9
12
|
//# sourceMappingURL=use-translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-translate.d.ts","sourceRoot":"","sources":["../../src/hooks/use-translate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-translate.d.ts","sourceRoot":"","sources":["../../src/hooks/use-translate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,SAAS,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,0BAA0B;CAAG;AAE9C,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,GAAG,MAAM,0BAA0B,CAAC;AAE5F,gGAAgG;AAChG,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,MAAM,CAAC;AAIjG,eAAO,MAAM,YAAY,QAAO,eAW/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-translate.js","sourceRoot":"","sources":["../../src/hooks/use-translate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"use-translate.js","sourceRoot":"","sources":["../../src/hooks/use-translate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAC;AAgB7D,MAAM,QAAQ,GAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAoB,EAAE;IAChD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,MAAM,SAAS,GAAoB,KAAK,CAAC,WAAW,CAClD,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACf,OAAO,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7C,CAAC,CAAC"}
|
package/dist/providers/auth.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { type Container } from '@venizia/ignis-inversion';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseProvider, type DefaultAuthService, type IAuthProviderOptions, type ISignInSession, type IPermissionProvider } from '@venizia/ardor-kernel';
|
|
3
3
|
import type { IAuthProvider, IDataProvider } from '../common/index.js';
|
|
4
|
+
/** What the login form hands to `login`: the user name and the password, and whatever else the form holds. */
|
|
5
|
+
export interface ILoginParams {
|
|
6
|
+
username?: string;
|
|
7
|
+
password?: string;
|
|
8
|
+
[field: string]: unknown;
|
|
9
|
+
}
|
|
4
10
|
/**
|
|
5
|
-
* The options hold data (`paths`); behaviour is in the protected hooks
|
|
6
|
-
*
|
|
7
|
-
* `readSignInSession` around `login`, and the page paths (`signInPath`, `afterLoginPath`,
|
|
8
|
-
* `loginPagePath`, `unauthorizedPagePath`).
|
|
11
|
+
* The options hold data (`paths`); behaviour is in the protected hooks around `login` and the page
|
|
12
|
+
* paths, each taking one `opts` object, which a subclass overrides.
|
|
9
13
|
*/
|
|
10
14
|
export declare class DefaultAuthProvider<TResource extends string = string> extends BaseProvider<IAuthProvider> {
|
|
11
15
|
protected restDataProvider: IDataProvider<TResource>;
|
|
@@ -27,15 +31,12 @@ export declare class DefaultAuthProvider<TResource extends string = string> exte
|
|
|
27
31
|
* the login form unchanged.
|
|
28
32
|
*/
|
|
29
33
|
protected buildSignInBody(opts: {
|
|
30
|
-
params:
|
|
34
|
+
params: ILoginParams;
|
|
31
35
|
}): unknown;
|
|
32
36
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* itself (`userId`, else `sub`). Roles come from the response, else from the token's `roles`
|
|
37
|
-
* claim. A response with no token or no user id throws: storing `undefined` would pass `login`
|
|
38
|
-
* and fail every check after it.
|
|
37
|
+
* Reads `{ userId, roles?, token: { value, type } }` or `{ token: '<jwt>' }` (the user id is then a
|
|
38
|
+
* claim of the token: `userId`, else `sub`). No token or no user id throws: storing `undefined`
|
|
39
|
+
* would pass `login` and fail every check after it.
|
|
39
40
|
*/
|
|
40
41
|
protected readSignInSession(opts: {
|
|
41
42
|
data: unknown;
|
|
@@ -53,7 +54,7 @@ export declare class DefaultAuthProvider<TResource extends string = string> exte
|
|
|
53
54
|
}): Array<string>;
|
|
54
55
|
/** The username `login` remembers with the identity. Default: `params.username`. */
|
|
55
56
|
protected resolveUsername(opts: {
|
|
56
|
-
params:
|
|
57
|
+
params: ILoginParams;
|
|
57
58
|
}): string;
|
|
58
59
|
/**
|
|
59
60
|
* Runs once the sign-in response is read and before the session is saved. A throw or a rejection
|
|
@@ -62,7 +63,7 @@ export declare class DefaultAuthProvider<TResource extends string = string> exte
|
|
|
62
63
|
*/
|
|
63
64
|
protected beforeSaveSession(_opts: {
|
|
64
65
|
session: ISignInSession;
|
|
65
|
-
params:
|
|
66
|
+
params: ILoginParams;
|
|
66
67
|
}): Promise<void>;
|
|
67
68
|
/**
|
|
68
69
|
* Saves the session where `checkAuth`, `getIdentity` and `getRoles` read it. A provider that
|
|
@@ -72,23 +73,20 @@ export declare class DefaultAuthProvider<TResource extends string = string> exte
|
|
|
72
73
|
session: ISignInSession;
|
|
73
74
|
username: string;
|
|
74
75
|
}): void;
|
|
75
|
-
/**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
getIdentity(_params: AnyType): Promise<any>;
|
|
84
|
-
getPermissions(_params: AnyType): Promise<void>;
|
|
85
|
-
getRoles(_params: AnyType): Promise<Set<string>>;
|
|
76
|
+
/** Typed `Promise<unknown>` so that a subclass override of `login` keeps compiling. */
|
|
77
|
+
login(params: ILoginParams): Promise<unknown>;
|
|
78
|
+
logout(_params?: unknown): Promise<void>;
|
|
79
|
+
checkAuth(_params?: unknown): Promise<void>;
|
|
80
|
+
checkError(error: unknown): Promise<void>;
|
|
81
|
+
getIdentity(_params?: unknown): Promise<any>;
|
|
82
|
+
getPermissions(_params?: unknown): Promise<void>;
|
|
83
|
+
getRoles(_params?: unknown): Promise<Set<string>>;
|
|
86
84
|
/**
|
|
87
85
|
* Refreshes the session through the network service's `refresh`, the one place a refresh is made:
|
|
88
86
|
* `true` when it was refreshed, `false` when the service has no refresh to make. The `401`
|
|
89
87
|
* recovery calls the same method, so one burst of 401s and this call share one refresh.
|
|
90
88
|
*/
|
|
91
|
-
refreshToken(): Promise<
|
|
89
|
+
refreshToken(): Promise<boolean>;
|
|
92
90
|
value(container: Container): IAuthProvider;
|
|
93
91
|
}
|
|
94
92
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/providers/auth.js
CHANGED
|
@@ -14,11 +14,17 @@ var DefaultAuthProvider_1;
|
|
|
14
14
|
import { getError, inject } from '@venizia/ignis-inversion';
|
|
15
15
|
import { removeDoubleSlashes } from 'ra-core';
|
|
16
16
|
import { BaseProvider, CoreBindings, RequestMethods, } from '@venizia/ardor-kernel';
|
|
17
|
+
/** The status of a failure: react-admin's `HttpError` has `status`, the data provider's `ApplicationError` has `statusCode`. */
|
|
18
|
+
const readStatus = (error) => {
|
|
19
|
+
if (typeof error !== 'object' || error === null) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const { status, statusCode } = error;
|
|
23
|
+
return status ?? statusCode;
|
|
24
|
+
};
|
|
17
25
|
/**
|
|
18
|
-
* The options hold data (`paths`); behaviour is in the protected hooks
|
|
19
|
-
*
|
|
20
|
-
* `readSignInSession` around `login`, and the page paths (`signInPath`, `afterLoginPath`,
|
|
21
|
-
* `loginPagePath`, `unauthorizedPagePath`).
|
|
26
|
+
* The options hold data (`paths`); behaviour is in the protected hooks around `login` and the page
|
|
27
|
+
* paths, each taking one `opts` object, which a subclass overrides.
|
|
22
28
|
*/
|
|
23
29
|
let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider extends BaseProvider {
|
|
24
30
|
constructor(restDataProvider, authProviderOptions, authService, permissionProvider) {
|
|
@@ -58,12 +64,9 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
58
64
|
};
|
|
59
65
|
}
|
|
60
66
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* itself (`userId`, else `sub`). Roles come from the response, else from the token's `roles`
|
|
65
|
-
* claim. A response with no token or no user id throws: storing `undefined` would pass `login`
|
|
66
|
-
* and fail every check after it.
|
|
67
|
+
* Reads `{ userId, roles?, token: { value, type } }` or `{ token: '<jwt>' }` (the user id is then a
|
|
68
|
+
* claim of the token: `userId`, else `sub`). No token or no user id throws: storing `undefined`
|
|
69
|
+
* would pass `login` and fail every check after it.
|
|
67
70
|
*/
|
|
68
71
|
readSignInSession(opts) {
|
|
69
72
|
const { userId, token, roles } = (opts.data ?? {});
|
|
@@ -101,13 +104,15 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
101
104
|
return undefined;
|
|
102
105
|
}
|
|
103
106
|
try {
|
|
104
|
-
const bytes = Uint8Array.from(atob(segment.replace(/-/g, '+').replace(/_/g, '/')), char => char.charCodeAt(0));
|
|
107
|
+
const bytes = Uint8Array.from(atob(segment.replace(/-/g, '+').replace(/_/g, '/')), (char) => char.charCodeAt(0));
|
|
105
108
|
const claims = JSON.parse(new TextDecoder().decode(bytes));
|
|
106
109
|
return typeof claims === 'object' && claims !== null
|
|
107
110
|
? claims
|
|
108
111
|
: undefined;
|
|
109
112
|
}
|
|
110
|
-
catch {
|
|
113
|
+
catch (error) {
|
|
114
|
+
// The name only: the message of a JSON parse error quotes the payload it could not parse.
|
|
115
|
+
this.logger.debug('[decodeJwtClaims] The token payload cannot be decoded, reading no claims | error: %s', error instanceof Error ? error.name : typeof error);
|
|
111
116
|
return undefined;
|
|
112
117
|
}
|
|
113
118
|
}
|
|
@@ -124,7 +129,7 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
124
129
|
const named = typeof role === 'object' && role !== null ? role : {};
|
|
125
130
|
const name = typeof role === 'string'
|
|
126
131
|
? role
|
|
127
|
-
: [named.identifier, named.name].find(v => typeof v === 'string');
|
|
132
|
+
: [named.identifier, named.name].find((v) => typeof v === 'string');
|
|
128
133
|
if (typeof name === 'string' && name.length > 0) {
|
|
129
134
|
names.push(name);
|
|
130
135
|
}
|
|
@@ -157,26 +162,23 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
157
162
|
});
|
|
158
163
|
}
|
|
159
164
|
// --- react-admin's auth provider -------------------------------------------------------------
|
|
160
|
-
/**
|
|
161
|
-
* Typed `Promise<unknown>`, as it was before it became async: a subclass that overrides `login`
|
|
162
|
-
* with that signature keeps compiling.
|
|
163
|
-
*/
|
|
165
|
+
/** Typed `Promise<unknown>` so that a subclass override of `login` keeps compiling. */
|
|
164
166
|
async login(params) {
|
|
165
|
-
const
|
|
167
|
+
const response = await this.restDataProvider.send({
|
|
166
168
|
resource: this.signInPath,
|
|
167
169
|
params: { method: RequestMethods.POST, body: this.buildSignInBody({ params }) },
|
|
168
170
|
});
|
|
169
|
-
const session = this.readSignInSession({ data:
|
|
171
|
+
const session = this.readSignInSession({ data: response.data });
|
|
170
172
|
// Before anything is saved, so a throw here leaves no session behind.
|
|
171
173
|
await this.beforeSaveSession({ session, params });
|
|
172
174
|
this.saveSession({ session, username: this.resolveUsername({ params }) });
|
|
173
175
|
return {
|
|
174
|
-
...
|
|
176
|
+
...response,
|
|
175
177
|
redirectTo: removeDoubleSlashes(`/${this.afterLoginPath}`),
|
|
176
178
|
};
|
|
177
179
|
}
|
|
178
180
|
logout(_params) {
|
|
179
|
-
return new Promise(resolve => {
|
|
181
|
+
return new Promise((resolve) => {
|
|
180
182
|
this.authService.cleanUp();
|
|
181
183
|
resolve();
|
|
182
184
|
});
|
|
@@ -189,18 +191,17 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
189
191
|
if (!this.authProviderOptions.paths?.checkAuth) {
|
|
190
192
|
return Promise.resolve();
|
|
191
193
|
}
|
|
192
|
-
const
|
|
194
|
+
const response = await this.restDataProvider.send({
|
|
193
195
|
resource: this.authProviderOptions.paths.checkAuth,
|
|
194
196
|
params: { method: RequestMethods.GET },
|
|
195
197
|
});
|
|
196
|
-
if (!
|
|
198
|
+
if (!response?.data) {
|
|
197
199
|
return Promise.reject({ redirectTo: this.loginPagePath });
|
|
198
200
|
}
|
|
199
201
|
return Promise.resolve();
|
|
200
202
|
}
|
|
201
|
-
checkError(
|
|
202
|
-
|
|
203
|
-
const status = params?.status ?? params?.statusCode;
|
|
203
|
+
checkError(error) {
|
|
204
|
+
const status = readStatus(error);
|
|
204
205
|
if (status === 401) {
|
|
205
206
|
this.authService.cleanUp();
|
|
206
207
|
return Promise.reject({ redirectTo: this.loginPagePath });
|
|
@@ -244,7 +245,7 @@ let DefaultAuthProvider = DefaultAuthProvider_1 = class DefaultAuthProvider exte
|
|
|
244
245
|
return {
|
|
245
246
|
login: (params) => this.login(params),
|
|
246
247
|
logout: (params) => this.logout(params),
|
|
247
|
-
checkError: (
|
|
248
|
+
checkError: (error) => this.checkError(error),
|
|
248
249
|
checkAuth: (params) => this.checkAuth(params),
|
|
249
250
|
getIdentity: (params) => this.getIdentity(params),
|
|
250
251
|
getPermissions: (params) => this.getPermissions(params),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/providers/auth.ts"],"names":[],"mappings":"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"}
|