ra-auth-auth0 1.1.0 → 1.1.1

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/Readme.md CHANGED
@@ -20,6 +20,7 @@ npm install --save ra-auth-auth0
20
20
  // in src/App.tsx
21
21
  import React, { useEffect, useRef, useState } from 'react';
22
22
  import { Admin, Resource } from 'react-admin';
23
+ import { BrowserRouter } from 'react-router-dom';
23
24
  import { Auth0AuthProvider } from 'ra-auth-auth0';
24
25
  import { Auth0Client } from '@auth0/auth0-spa-js';
25
26
  import dataProvider from './dataProvider';
@@ -41,17 +42,21 @@ const authProvider = Auth0AuthProvider(auth0, {
41
42
 
42
43
  const App = () => {
43
44
  return (
44
- <Admin
45
- authProvider={authProvider}
46
- dataProvider={dataProvider}
47
- >
48
- <Resource name="posts" {...posts} />
49
- </Admin>
45
+ <BrowserRouter>
46
+ <Admin
47
+ authProvider={authProvider}
48
+ dataProvider={dataProvider}
49
+ >
50
+ <Resource name="posts" {...posts} />
51
+ </Admin>
52
+ </BrowserRouter>
50
53
  );
51
54
  };
52
55
  export default App;
53
56
  ```
54
57
 
58
+ **Note:** You need to wrap your app in a [`BrowserRouter`](https://reactrouter.com/en/6/router-components/browser-router) component from `react-router-dom` for the `Auth0AuthProvider` to work.
59
+
55
60
  ## `Auth0AuthProvider` Parameters
56
61
 
57
62
  - `loginRedirectUri` - _optional_ - URI used to override the redirect URI after successful login. Defaults to react-admin `/auth-callback` route.
@@ -7,6 +7,7 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
7
7
  * ```tsx
8
8
  * import React from 'react';
9
9
  * import { Admin, Resource } from 'react-admin';
10
+ * import { BrowserRouter } from 'react-router-dom';
10
11
  * import { Auth0AuthProvider } from 'ra-auth-auth0';
11
12
  * import { Auth0Client } from '@auth0/auth0-spa-js';
12
13
  * import dataProvider from './dataProvider';
@@ -28,13 +29,15 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
28
29
  *
29
30
  * const App = () => {
30
31
  * return (
32
+ * <BrowserRouter>
31
33
  * <Admin
32
- * authProvider={authProvider}
33
- * dataProvider={dataProvider}
34
- * title="Example Admin"
35
- * >
36
- * <Resource name="posts" {...posts} />
37
- * </Admin>
34
+ * authProvider={authProvider}
35
+ * dataProvider={dataProvider}
36
+ * title="Example Admin"
37
+ * >
38
+ * <Resource name="posts" {...posts} />
39
+ * </Admin>
40
+ * <BrowserRouter>
38
41
  * );
39
42
  * };
40
43
  * export default App;
@@ -1 +1 @@
1
- {"version":3,"file":"authProvider.d.ts","sourceRoot":"","sources":["../src/authProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,iBAAiB,WAClB,WAAW;uBAMI,MAAM;wBACL,MAAM;0BACJ,OAAO;MAIlC,YAqFD,CAAC"}
1
+ {"version":3,"file":"authProvider.d.ts","sourceRoot":"","sources":["../src/authProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,iBAAiB,WAClB,WAAW;uBAMI,MAAM;wBACL,MAAM;0BACJ,OAAO;MAIlC,YAoFD,CAAC"}
@@ -42,6 +42,7 @@ import { PreviousLocationStorageKey } from 'ra-core';
42
42
  * ```tsx
43
43
  * import React from 'react';
44
44
  * import { Admin, Resource } from 'react-admin';
45
+ * import { BrowserRouter } from 'react-router-dom';
45
46
  * import { Auth0AuthProvider } from 'ra-auth-auth0';
46
47
  * import { Auth0Client } from '@auth0/auth0-spa-js';
47
48
  * import dataProvider from './dataProvider';
@@ -63,13 +64,15 @@ import { PreviousLocationStorageKey } from 'ra-core';
63
64
  *
64
65
  * const App = () => {
65
66
  * return (
67
+ * <BrowserRouter>
66
68
  * <Admin
67
- * authProvider={authProvider}
68
- * dataProvider={dataProvider}
69
- * title="Example Admin"
70
- * >
71
- * <Resource name="posts" {...posts} />
72
- * </Admin>
69
+ * authProvider={authProvider}
70
+ * dataProvider={dataProvider}
71
+ * title="Example Admin"
72
+ * >
73
+ * <Resource name="posts" {...posts} />
74
+ * </Admin>
75
+ * <BrowserRouter>
73
76
  * );
74
77
  * };
75
78
  * export default App;
@@ -105,13 +108,16 @@ export var Auth0AuthProvider = function (client, _a) {
105
108
  logout: function () {
106
109
  return __awaiter(this, void 0, void 0, function () {
107
110
  return __generator(this, function (_a) {
108
- return [2 /*return*/, client
109
- .logout({
110
- logoutParams: {
111
- returnTo: logoutRedirectUri || window.location.origin,
112
- },
113
- })
114
- .then(function () { return logoutRedirectUri || '/'; })];
111
+ switch (_a.label) {
112
+ case 0: return [4 /*yield*/, client.logout({
113
+ logoutParams: {
114
+ returnTo: logoutRedirectUri || window.location.origin,
115
+ },
116
+ })];
117
+ case 1:
118
+ _a.sent();
119
+ return [2 /*return*/, false];
120
+ }
115
121
  });
116
122
  });
117
123
  },
@@ -1 +1 @@
1
- {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,UAAU,gBAAiB,GAAG,WAClC,GAAG,WACC,WAAW,OAAO,GAAG,SAAS;;;;;EAQ1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACjB,MAAM,GAAG,IAAI,WACX,WAAW,OAAO,GAAG,SAAS,KACxC,OASF,CAAC"}
1
+ {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,UAAU,gBAAiB,GAAG,WAClC,GAAG,WACC,WAAW,OAAO,GAAG,SAAS;;;;;EAa1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACjB,MAAM,GAAG,IAAI,WACX,WAAW,OAAO,GAAG,SAAS,KACxC,OASF,CAAC"}
package/esm/httpClient.js CHANGED
@@ -52,12 +52,22 @@ import { fetchUtils } from 'ra-core';
52
52
  * @returns a function with the same definition as `httpClient` that adds an `Authorization` header containing the Auth0 token.
53
53
  */
54
54
  export var httpClient = function (auth0Client) { return function (url, options) { return __awaiter(void 0, void 0, void 0, function () {
55
- var token, requestHeaders;
55
+ var token, error_1, requestHeaders;
56
56
  return __generator(this, function (_a) {
57
57
  switch (_a.label) {
58
- case 0: return [4 /*yield*/, auth0Client.getTokenSilently()];
58
+ case 0:
59
+ token = null;
60
+ _a.label = 1;
59
61
  case 1:
62
+ _a.trys.push([1, 3, , 4]);
63
+ return [4 /*yield*/, auth0Client.getTokenSilently()];
64
+ case 2:
60
65
  token = _a.sent();
66
+ return [3 /*break*/, 4];
67
+ case 3:
68
+ error_1 = _a.sent();
69
+ return [3 /*break*/, 4];
70
+ case 4:
61
71
  requestHeaders = getAuth0Headers(token, options);
62
72
  return [2 /*return*/, fetchUtils.fetchJson(url, __assign(__assign({}, options), { headers: requestHeaders }))];
63
73
  }
@@ -7,6 +7,7 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
7
7
  * ```tsx
8
8
  * import React from 'react';
9
9
  * import { Admin, Resource } from 'react-admin';
10
+ * import { BrowserRouter } from 'react-router-dom';
10
11
  * import { Auth0AuthProvider } from 'ra-auth-auth0';
11
12
  * import { Auth0Client } from '@auth0/auth0-spa-js';
12
13
  * import dataProvider from './dataProvider';
@@ -28,13 +29,15 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
28
29
  *
29
30
  * const App = () => {
30
31
  * return (
32
+ * <BrowserRouter>
31
33
  * <Admin
32
- * authProvider={authProvider}
33
- * dataProvider={dataProvider}
34
- * title="Example Admin"
35
- * >
36
- * <Resource name="posts" {...posts} />
37
- * </Admin>
34
+ * authProvider={authProvider}
35
+ * dataProvider={dataProvider}
36
+ * title="Example Admin"
37
+ * >
38
+ * <Resource name="posts" {...posts} />
39
+ * </Admin>
40
+ * <BrowserRouter>
38
41
  * );
39
42
  * };
40
43
  * export default App;
@@ -1 +1 @@
1
- {"version":3,"file":"authProvider.d.ts","sourceRoot":"","sources":["../src/authProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,iBAAiB,WAClB,WAAW;uBAMI,MAAM;wBACL,MAAM;0BACJ,OAAO;MAIlC,YAqFD,CAAC"}
1
+ {"version":3,"file":"authProvider.d.ts","sourceRoot":"","sources":["../src/authProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8B,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,iBAAiB,WAClB,WAAW;uBAMI,MAAM;wBACL,MAAM;0BACJ,OAAO;MAIlC,YAoFD,CAAC"}
@@ -45,6 +45,7 @@ var ra_core_1 = require("ra-core");
45
45
  * ```tsx
46
46
  * import React from 'react';
47
47
  * import { Admin, Resource } from 'react-admin';
48
+ * import { BrowserRouter } from 'react-router-dom';
48
49
  * import { Auth0AuthProvider } from 'ra-auth-auth0';
49
50
  * import { Auth0Client } from '@auth0/auth0-spa-js';
50
51
  * import dataProvider from './dataProvider';
@@ -66,13 +67,15 @@ var ra_core_1 = require("ra-core");
66
67
  *
67
68
  * const App = () => {
68
69
  * return (
70
+ * <BrowserRouter>
69
71
  * <Admin
70
- * authProvider={authProvider}
71
- * dataProvider={dataProvider}
72
- * title="Example Admin"
73
- * >
74
- * <Resource name="posts" {...posts} />
75
- * </Admin>
72
+ * authProvider={authProvider}
73
+ * dataProvider={dataProvider}
74
+ * title="Example Admin"
75
+ * >
76
+ * <Resource name="posts" {...posts} />
77
+ * </Admin>
78
+ * <BrowserRouter>
76
79
  * );
77
80
  * };
78
81
  * export default App;
@@ -108,13 +111,16 @@ var Auth0AuthProvider = function (client, _a) {
108
111
  logout: function () {
109
112
  return __awaiter(this, void 0, void 0, function () {
110
113
  return __generator(this, function (_a) {
111
- return [2 /*return*/, client
112
- .logout({
113
- logoutParams: {
114
- returnTo: logoutRedirectUri || window.location.origin,
115
- },
116
- })
117
- .then(function () { return logoutRedirectUri || '/'; })];
114
+ switch (_a.label) {
115
+ case 0: return [4 /*yield*/, client.logout({
116
+ logoutParams: {
117
+ returnTo: logoutRedirectUri || window.location.origin,
118
+ },
119
+ })];
120
+ case 1:
121
+ _a.sent();
122
+ return [2 /*return*/, false];
123
+ }
118
124
  });
119
125
  });
120
126
  },
@@ -1 +1 @@
1
- {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,UAAU,gBAAiB,GAAG,WAClC,GAAG,WACC,WAAW,OAAO,GAAG,SAAS;;;;;EAQ1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACjB,MAAM,GAAG,IAAI,WACX,WAAW,OAAO,GAAG,SAAS,KACxC,OASF,CAAC"}
1
+ {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,UAAU,gBAAiB,GAAG,WAClC,GAAG,WACC,WAAW,OAAO,GAAG,SAAS;;;;;EAa1C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACjB,MAAM,GAAG,IAAI,WACX,WAAW,OAAO,GAAG,SAAS,KACxC,OASF,CAAC"}
package/lib/httpClient.js CHANGED
@@ -55,12 +55,22 @@ var ra_core_1 = require("ra-core");
55
55
  * @returns a function with the same definition as `httpClient` that adds an `Authorization` header containing the Auth0 token.
56
56
  */
57
57
  var httpClient = function (auth0Client) { return function (url, options) { return __awaiter(void 0, void 0, void 0, function () {
58
- var token, requestHeaders;
58
+ var token, error_1, requestHeaders;
59
59
  return __generator(this, function (_a) {
60
60
  switch (_a.label) {
61
- case 0: return [4 /*yield*/, auth0Client.getTokenSilently()];
61
+ case 0:
62
+ token = null;
63
+ _a.label = 1;
62
64
  case 1:
65
+ _a.trys.push([1, 3, , 4]);
66
+ return [4 /*yield*/, auth0Client.getTokenSilently()];
67
+ case 2:
63
68
  token = _a.sent();
69
+ return [3 /*break*/, 4];
70
+ case 3:
71
+ error_1 = _a.sent();
72
+ return [3 /*break*/, 4];
73
+ case 4:
64
74
  requestHeaders = (0, exports.getAuth0Headers)(token, options);
65
75
  return [2 /*return*/, ra_core_1.fetchUtils.fetchJson(url, __assign(__assign({}, options), { headers: requestHeaders }))];
66
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ra-auth-auth0",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "repository": "git@github.com:marmelab/ra-auth-auth0.git",
5
5
  "author": "Anthony Rimet <anthony@marmelab.com> (https://marmelab.com/)",
6
6
  "license": "MIT",
@@ -8,6 +8,7 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
8
8
  * ```tsx
9
9
  * import React from 'react';
10
10
  * import { Admin, Resource } from 'react-admin';
11
+ * import { BrowserRouter } from 'react-router-dom';
11
12
  * import { Auth0AuthProvider } from 'ra-auth-auth0';
12
13
  * import { Auth0Client } from '@auth0/auth0-spa-js';
13
14
  * import dataProvider from './dataProvider';
@@ -29,13 +30,15 @@ import { Auth0Client } from '@auth0/auth0-spa-js';
29
30
  *
30
31
  * const App = () => {
31
32
  * return (
33
+ * <BrowserRouter>
32
34
  * <Admin
33
- * authProvider={authProvider}
34
- * dataProvider={dataProvider}
35
- * title="Example Admin"
36
- * >
37
- * <Resource name="posts" {...posts} />
38
- * </Admin>
35
+ * authProvider={authProvider}
36
+ * dataProvider={dataProvider}
37
+ * title="Example Admin"
38
+ * >
39
+ * <Resource name="posts" {...posts} />
40
+ * </Admin>
41
+ * <BrowserRouter>
39
42
  * );
40
43
  * };
41
44
  * export default App;
@@ -75,13 +78,12 @@ export const Auth0AuthProvider = (
75
78
  },
76
79
  // called when the user clicks on the logout button
77
80
  async logout() {
78
- return client
79
- .logout({
80
- logoutParams: {
81
- returnTo: logoutRedirectUri || window.location.origin,
82
- },
83
- })
84
- .then(() => logoutRedirectUri || '/');
81
+ await client.logout({
82
+ logoutParams: {
83
+ returnTo: logoutRedirectUri || window.location.origin,
84
+ },
85
+ });
86
+ return false;
85
87
  },
86
88
  // called when the API returns an error
87
89
  async checkError({ status }) {
package/src/httpClient.ts CHANGED
@@ -9,7 +9,12 @@ export const httpClient = (auth0Client: any) => async (
9
9
  url: any,
10
10
  options: fetchUtils.Options | undefined
11
11
  ) => {
12
- const token = await auth0Client.getTokenSilently();
12
+ let token: string | null = null;
13
+ try {
14
+ token = await auth0Client.getTokenSilently();
15
+ } catch (error) {
16
+ // Nothing to do, we just won't set the Authorization header
17
+ }
13
18
  const requestHeaders = getAuth0Headers(token, options);
14
19
  return fetchUtils.fetchJson(url, {
15
20
  ...options,