@axa-fr/react-oidc 5.7.0-alpha0

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.
Files changed (160) hide show
  1. package/README.md +502 -0
  2. package/dist/FetchToken.d.ts +10 -0
  3. package/dist/FetchToken.d.ts.map +1 -0
  4. package/dist/FetchToken.js +107 -0
  5. package/dist/FetchToken.js.map +1 -0
  6. package/dist/OidcProvider.d.ts +25 -0
  7. package/dist/OidcProvider.d.ts.map +1 -0
  8. package/dist/OidcProvider.js +133 -0
  9. package/dist/OidcProvider.js.map +1 -0
  10. package/dist/OidcSecure.d.ts +10 -0
  11. package/dist/OidcSecure.d.ts.map +1 -0
  12. package/dist/OidcSecure.js +68 -0
  13. package/dist/OidcSecure.js.map +1 -0
  14. package/dist/OidcServiceWorker.js +272 -0
  15. package/dist/OidcTrustedDomains.js +6 -0
  16. package/dist/ReactOidc.d.ts +17 -0
  17. package/dist/ReactOidc.d.ts.map +1 -0
  18. package/dist/ReactOidc.js +106 -0
  19. package/dist/ReactOidc.js.map +1 -0
  20. package/dist/User.d.ts +15 -0
  21. package/dist/User.d.ts.map +1 -0
  22. package/dist/User.js +48 -0
  23. package/dist/User.js.map +1 -0
  24. package/dist/core/default-component/AuthenticateError.component.d.ts +4 -0
  25. package/dist/core/default-component/AuthenticateError.component.d.ts.map +1 -0
  26. package/dist/core/default-component/AuthenticateError.component.js +32 -0
  27. package/dist/core/default-component/AuthenticateError.component.js.map +1 -0
  28. package/dist/core/default-component/Authenticating.component.d.ts +4 -0
  29. package/dist/core/default-component/Authenticating.component.d.ts.map +1 -0
  30. package/dist/core/default-component/Authenticating.component.js +32 -0
  31. package/dist/core/default-component/Authenticating.component.js.map +1 -0
  32. package/dist/core/default-component/Callback.component.d.ts +5 -0
  33. package/dist/core/default-component/Callback.component.d.ts.map +1 -0
  34. package/dist/core/default-component/Callback.component.js +118 -0
  35. package/dist/core/default-component/Callback.component.js.map +1 -0
  36. package/dist/core/default-component/Loading.component.d.ts +4 -0
  37. package/dist/core/default-component/Loading.component.d.ts.map +1 -0
  38. package/dist/core/default-component/Loading.component.js +29 -0
  39. package/dist/core/default-component/Loading.component.js.map +1 -0
  40. package/dist/core/default-component/ServiceWorkerInstall.component.d.ts +4 -0
  41. package/dist/core/default-component/ServiceWorkerInstall.component.d.ts.map +1 -0
  42. package/dist/core/default-component/ServiceWorkerInstall.component.js +122 -0
  43. package/dist/core/default-component/ServiceWorkerInstall.component.js.map +1 -0
  44. package/dist/core/default-component/ServiceWorkerNotSupported.component.d.ts +4 -0
  45. package/dist/core/default-component/ServiceWorkerNotSupported.component.d.ts.map +1 -0
  46. package/dist/core/default-component/ServiceWorkerNotSupported.component.js +32 -0
  47. package/dist/core/default-component/ServiceWorkerNotSupported.component.js.map +1 -0
  48. package/dist/core/default-component/SessionLost.component.d.ts +4 -0
  49. package/dist/core/default-component/SessionLost.component.d.ts.map +1 -0
  50. package/dist/core/default-component/SessionLost.component.js +14 -0
  51. package/dist/core/default-component/SessionLost.component.js.map +1 -0
  52. package/dist/core/default-component/SilentCallback.component.d.ts +4 -0
  53. package/dist/core/default-component/SilentCallback.component.d.ts.map +1 -0
  54. package/dist/core/default-component/SilentCallback.component.js +96 -0
  55. package/dist/core/default-component/SilentCallback.component.js.map +1 -0
  56. package/dist/core/default-component/index.d.ts +7 -0
  57. package/dist/core/default-component/index.d.ts.map +1 -0
  58. package/dist/core/default-component/index.js +20 -0
  59. package/dist/core/default-component/index.js.map +1 -0
  60. package/dist/core/routes/OidcRoutes.d.ts +12 -0
  61. package/dist/core/routes/OidcRoutes.d.ts.map +1 -0
  62. package/dist/core/routes/OidcRoutes.js +71 -0
  63. package/dist/core/routes/OidcRoutes.js.map +1 -0
  64. package/dist/core/routes/index.d.ts +3 -0
  65. package/dist/core/routes/index.d.ts.map +1 -0
  66. package/dist/core/routes/index.js +9 -0
  67. package/dist/core/routes/index.js.map +1 -0
  68. package/dist/core/routes/route-utils.d.ts +2 -0
  69. package/dist/core/routes/route-utils.d.ts.map +1 -0
  70. package/dist/core/routes/route-utils.js +32 -0
  71. package/dist/core/routes/route-utils.js.map +1 -0
  72. package/dist/core/routes/withRouter.d.ts +19 -0
  73. package/dist/core/routes/withRouter.d.ts.map +1 -0
  74. package/dist/core/routes/withRouter.js +33 -0
  75. package/dist/core/routes/withRouter.js.map +1 -0
  76. package/dist/index.d.ts +6 -0
  77. package/dist/index.d.ts.map +1 -0
  78. package/dist/index.js +19 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/vanilla/index.d.ts +2 -0
  81. package/dist/vanilla/index.d.ts.map +1 -0
  82. package/dist/vanilla/index.js +6 -0
  83. package/dist/vanilla/index.js.map +1 -0
  84. package/dist/vanilla/initSession.d.ts +11 -0
  85. package/dist/vanilla/initSession.d.ts.map +1 -0
  86. package/dist/vanilla/initSession.js +72 -0
  87. package/dist/vanilla/initSession.js.map +1 -0
  88. package/dist/vanilla/initWorker.d.ts +13 -0
  89. package/dist/vanilla/initWorker.d.ts.map +1 -0
  90. package/dist/vanilla/initWorker.js +211 -0
  91. package/dist/vanilla/initWorker.js.map +1 -0
  92. package/dist/vanilla/memoryStorageBackend.d.ts +10 -0
  93. package/dist/vanilla/memoryStorageBackend.d.ts.map +1 -0
  94. package/dist/vanilla/memoryStorageBackend.js +33 -0
  95. package/dist/vanilla/memoryStorageBackend.js.map +1 -0
  96. package/dist/vanilla/noHashQueryStringUtils.d.ts +5 -0
  97. package/dist/vanilla/noHashQueryStringUtils.d.ts.map +1 -0
  98. package/dist/vanilla/noHashQueryStringUtils.js +31 -0
  99. package/dist/vanilla/noHashQueryStringUtils.js.map +1 -0
  100. package/dist/vanilla/oidc.d.ts +77 -0
  101. package/dist/vanilla/oidc.d.ts.map +1 -0
  102. package/dist/vanilla/oidc.js +814 -0
  103. package/dist/vanilla/oidc.js.map +1 -0
  104. package/dist/vanilla/timer.d.ts +8 -0
  105. package/dist/vanilla/timer.d.ts.map +1 -0
  106. package/dist/vanilla/timer.js +135 -0
  107. package/dist/vanilla/timer.js.map +1 -0
  108. package/package.json +73 -0
  109. package/src/App.css +38 -0
  110. package/src/App.specold.tsx +46 -0
  111. package/src/App.tsx +61 -0
  112. package/src/FetchUser.tsx +53 -0
  113. package/src/Home.tsx +20 -0
  114. package/src/MultiAuth.tsx +114 -0
  115. package/src/Profile.tsx +77 -0
  116. package/src/configurations.ts +53 -0
  117. package/src/index.css +13 -0
  118. package/src/index.tsx +9 -0
  119. package/src/logo.svg +7 -0
  120. package/src/oidc/FetchToken.tsx +51 -0
  121. package/src/oidc/OidcProvider.tsx +165 -0
  122. package/src/oidc/OidcSecure.tsx +32 -0
  123. package/src/oidc/ReactOidc.tsx +112 -0
  124. package/src/oidc/User.ts +38 -0
  125. package/src/oidc/core/default-component/AuthenticateError.component.tsx +13 -0
  126. package/src/oidc/core/default-component/Authenticating.component.tsx +13 -0
  127. package/src/oidc/core/default-component/Callback.component.tsx +49 -0
  128. package/src/oidc/core/default-component/Loading.component.tsx +10 -0
  129. package/src/oidc/core/default-component/ServiceWorkerInstall.component.tsx +51 -0
  130. package/src/oidc/core/default-component/ServiceWorkerNotSupported.component.tsx +13 -0
  131. package/src/oidc/core/default-component/SessionLost.component.tsx +14 -0
  132. package/src/oidc/core/default-component/SilentCallback.component.tsx +31 -0
  133. package/src/oidc/core/default-component/index.ts +6 -0
  134. package/src/oidc/core/routes/OidcRoutes.spec.tsx +16 -0
  135. package/src/oidc/core/routes/OidcRoutes.tsx +69 -0
  136. package/src/oidc/core/routes/__snapshots__/OidcRoutes.spec.tsx.snap +7 -0
  137. package/src/oidc/core/routes/index.ts +2 -0
  138. package/src/oidc/core/routes/route-utils.spec.ts +9 -0
  139. package/src/oidc/core/routes/route-utils.ts +34 -0
  140. package/src/oidc/core/routes/withRouter.spec.tsx +48 -0
  141. package/src/oidc/core/routes/withRouter.tsx +60 -0
  142. package/src/oidc/index.ts +5 -0
  143. package/src/oidc/vanilla/OidcServiceWorker.js +272 -0
  144. package/src/oidc/vanilla/OidcTrustedDomains.js +6 -0
  145. package/src/oidc/vanilla/index.ts +1 -0
  146. package/src/oidc/vanilla/initSession.ts +36 -0
  147. package/src/oidc/vanilla/initWorker.ts +153 -0
  148. package/src/oidc/vanilla/memoryStorageBackend.ts +33 -0
  149. package/src/oidc/vanilla/noHashQueryStringUtils.ts +7 -0
  150. package/src/oidc/vanilla/oidc.ts +600 -0
  151. package/src/oidc/vanilla/timer.ts +157 -0
  152. package/src/override/AuthenticateError.component.tsx +14 -0
  153. package/src/override/Authenticating.component.tsx +14 -0
  154. package/src/override/Callback.component.tsx +13 -0
  155. package/src/override/Loading.component.tsx +13 -0
  156. package/src/override/ServiceWorkerNotSupported.component.tsx +15 -0
  157. package/src/override/SessionLost.component.tsx +21 -0
  158. package/src/override/style.ts +10 -0
  159. package/src/setupTests.js +5 -0
  160. package/tsconfig.json +38 -0
@@ -0,0 +1,36 @@
1
+ export const initSession = (configurationName) => {
2
+
3
+ const saveItemsAsync =(items) =>{
4
+ sessionStorage.items = JSON.stringify(items);
5
+ return Promise.resolve();
6
+ }
7
+
8
+ const loadItemsAsync=() =>{
9
+ return Promise.resolve(JSON.parse(sessionStorage.items));
10
+ }
11
+
12
+ const clearAsync=() =>{
13
+ sessionStorage[configurationName] = JSON.stringify({tokens:null});
14
+ return Promise.resolve();
15
+ }
16
+
17
+ const initAsync=async () => {
18
+ if(!sessionStorage[configurationName]){
19
+ sessionStorage[configurationName] = JSON.stringify({tokens:null});
20
+ }
21
+ return Promise.resolve({ tokens : JSON.parse(sessionStorage[configurationName]).tokens });
22
+ }
23
+
24
+ const setTokens = (tokens) => {
25
+ sessionStorage[configurationName] = JSON.stringify({tokens});
26
+ }
27
+
28
+ const getTokens = () => {
29
+ if(!sessionStorage[configurationName]){
30
+ return null;
31
+ }
32
+ return JSON.stringify({ tokens : JSON.parse(sessionStorage[configurationName]).tokens });
33
+ }
34
+
35
+ return { saveItemsAsync, loadItemsAsync, clearAsync, initAsync, setTokens, getTokens };
36
+ }
@@ -0,0 +1,153 @@
1
+ import timer from "./timer"
2
+
3
+ function get_browser() {
4
+ let ua = navigator.userAgent, tem,
5
+ M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
6
+ if(/trident/i.test(M[1])){
7
+ tem=/\brv[ :]+(\d+)/g.exec(ua) || [];
8
+ return {name:'ie',version:(tem[1]||'')};
9
+ }
10
+ if(M[1]==='Chrome'){
11
+ tem=ua.match(/\bOPR|Edge\/(\d+)/);
12
+
13
+ if(tem!=null) {
14
+ let version = tem[1];
15
+ if(!version){
16
+ const splits = ua.split(tem[0]+"/");
17
+ if(splits.length>1){
18
+ version = splits[1];
19
+ }
20
+ }
21
+
22
+ return {name:'opera', version};
23
+ }
24
+ }
25
+ M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
26
+ if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);}
27
+ return {
28
+ name: M[0].toLowerCase(),
29
+ version: M[1]
30
+ };
31
+ }
32
+
33
+ let keepAliveServiceWorkerTimeoutId = null;
34
+
35
+ export const sleepAsync = (milliseconds) => {
36
+ return new Promise(resolve => timer.setTimeout(resolve, milliseconds))
37
+ }
38
+
39
+ const keepAlive = () => {
40
+ const currentTimeUnixSecond = new Date().getTime() /1000;
41
+ fetch('/OidcKeepAliveServiceWorker.json').then(() => {
42
+ const newTimeUnixSecond = new Date().getTime() /1000;
43
+ if((newTimeUnixSecond - currentTimeUnixSecond) >4){
44
+ keepAlive();
45
+ } else{
46
+ // security if service worker does not catch the request
47
+ sleepAsync(2000).then(keepAlive);
48
+ }
49
+ })
50
+ }
51
+
52
+ const isServiceWorkerProxyActiveAsync = () => {
53
+ return fetch('/OidcKeepAliveServiceWorker.json', {
54
+ headers: {
55
+ 'oidc-vanilla': "true"
56
+ }})
57
+ .then((response) => {
58
+ return response.statusText === 'oidc-service-worker';
59
+ });
60
+ };
61
+
62
+ const sendMessageAsync = (registration) => (data) =>{
63
+ return new Promise(function(resolve, reject) {
64
+ const messageChannel = new MessageChannel();
65
+ messageChannel.port1.onmessage = function (event) {
66
+ if (event.data && event.data.error) {
67
+ reject(event.data.error);
68
+ } else {
69
+ resolve(event.data);
70
+ }
71
+ };
72
+ registration.active.postMessage(data, [messageChannel.port2]);
73
+ });
74
+ }
75
+
76
+ export const initWorkerAsync = async(serviceWorkerRelativeUrl, configurationName) => {
77
+
78
+ if(!navigator.serviceWorker||!serviceWorkerRelativeUrl){
79
+ return null;
80
+ }
81
+ const {name, version} = get_browser();
82
+ if(name == "chrome" && parseInt(version)<90){
83
+ return null;
84
+ }
85
+ if(name == "opera"){
86
+ if(!version) {
87
+ return null;
88
+ }
89
+ if(parseInt(version.split(".")[0])< 80) {
90
+ return null;
91
+ }
92
+ }
93
+ if(name == "ie"){
94
+ return null;
95
+ }
96
+
97
+ const registration = await navigator.serviceWorker.register(serviceWorkerRelativeUrl);
98
+
99
+ try {
100
+ await navigator.serviceWorker.ready
101
+ }
102
+ catch(err) {
103
+ return null;
104
+ }
105
+
106
+ const saveItemsAsync =(items) =>{
107
+ return sendMessageAsync(registration)({type: "saveItems", data: items, configurationName});
108
+ }
109
+
110
+ const loadItemsAsync=() =>{
111
+ return sendMessageAsync(registration)({type: "loadItems", data: null, configurationName});
112
+ }
113
+
114
+ const getAccessTokenPayloadAsync=async () => {
115
+ const result = await sendMessageAsync(registration)({
116
+ type: "getAccessTokenPayload",
117
+ data: null,
118
+ configurationName
119
+ });
120
+ // @ts-ignore
121
+ return result.accessTokenPayload;
122
+ }
123
+
124
+ const clearAsync=() =>{
125
+ return sendMessageAsync(registration)({type: "clear", data: null, configurationName});
126
+ }
127
+ const initAsync= async (oidcServerConfiguration, where) => {
128
+ const result = await sendMessageAsync(registration)({
129
+ type: "init",
130
+ data: {oidcServerConfiguration, where},
131
+ configurationName
132
+ });
133
+ // @ts-ignore
134
+ return { tokens : result.tokens};
135
+ }
136
+
137
+ const startKeepAliveServiceWorker = () => {
138
+ if (keepAliveServiceWorkerTimeoutId == null) {
139
+ keepAliveServiceWorkerTimeoutId = "not_null";
140
+ keepAlive();
141
+ }
142
+ }
143
+
144
+ return {
145
+ saveItemsAsync,
146
+ loadItemsAsync,
147
+ clearAsync,
148
+ initAsync,
149
+ getAccessTokenPayloadAsync,
150
+ startKeepAliveServiceWorker,
151
+ isServiceWorkerProxyActiveAsync
152
+ };
153
+ }
@@ -0,0 +1,33 @@
1
+ export class MemoryStorageBackend {
2
+ public items: any;
3
+ private saveItemsAsync: Function;
4
+
5
+ constructor(saveItemsAsync, items = {}) {
6
+ this.items = items;
7
+ this.saveItemsAsync = saveItemsAsync;
8
+ this.saveItemsAsync.bind(this);
9
+ this.getItem.bind(this);
10
+ this.removeItem.bind(this);
11
+ this.clear.bind(this);
12
+ this.setItem.bind(this);
13
+ }
14
+
15
+ getItem(name) {
16
+ return Promise.resolve(this.items[name]);
17
+ }
18
+
19
+ removeItem(name) {
20
+ delete this.items[name];
21
+ return this.saveItemsAsync(this.items);
22
+ }
23
+
24
+ clear() {
25
+ this.items = {};
26
+ return this.saveItemsAsync(this.items);
27
+ }
28
+
29
+ setItem(name, value) {
30
+ this.items[name] = value;
31
+ return this.saveItemsAsync(this.items);
32
+ }
33
+ }
@@ -0,0 +1,7 @@
1
+ import {BasicQueryStringUtils} from '@openid/appauth';
2
+
3
+ export class NoHashQueryStringUtils extends BasicQueryStringUtils {
4
+ parse(input, useHash) {
5
+ return super.parse(input, false /* never use hash */);
6
+ }
7
+ }