@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (296) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  3. package/dist/ApiClient/ApiClientBase.js +13 -13
  4. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  5. package/dist/ApiClient/ReadApiClient.js +24 -24
  6. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  7. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  8. package/dist/AppServices/AppService.d.ts +46 -46
  9. package/dist/AppServices/AppService.js +25 -25
  10. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  11. package/dist/AppServices/Config/ConfigModel.js +28 -17
  12. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  13. package/dist/AppServices/Config/ConfigService.js +49 -53
  14. package/dist/AppServices/Module.d.ts +11 -11
  15. package/dist/AppServices/Module.js +13 -13
  16. package/dist/AppServices/NeoContainer.d.ts +22 -22
  17. package/dist/AppServices/NeoContainer.js +42 -42
  18. package/dist/AppServices/NeoModule.d.ts +3 -3
  19. package/dist/AppServices/NeoModule.js +30 -30
  20. package/dist/AppServices/NeoTypes.d.ts +61 -61
  21. package/dist/AppServices/NeoTypes.js +42 -42
  22. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  23. package/dist/AppServices/ServiceIdentifier.js +38 -39
  24. package/dist/AppServices/index.d.ts +7 -7
  25. package/dist/AppServices/index.js +7 -7
  26. package/dist/Components/AnimationHelper.d.ts +69 -69
  27. package/dist/Components/AnimationHelper.js +182 -182
  28. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  29. package/dist/Components/BootstrapHelpers.js +30 -30
  30. package/dist/Components/BootstrapTypes.d.ts +35 -35
  31. package/dist/Components/BootstrapTypes.js +1 -1
  32. package/dist/Components/ButtonOptions.d.ts +63 -61
  33. package/dist/Components/ButtonOptions.js +1 -1
  34. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  35. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  36. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  37. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  38. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  39. package/dist/Components/DatePicker/DatePicker.js +502 -487
  40. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  41. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  42. package/dist/Components/ErrorHandler.d.ts +59 -55
  43. package/dist/Components/ErrorHandler.js +210 -138
  44. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  45. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  46. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  47. package/dist/Components/FileManager/FileManager.js +277 -257
  48. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  49. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  50. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  51. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  52. package/dist/Components/FormOptions.d.ts +34 -34
  53. package/dist/Components/FormOptions.js +1 -1
  54. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  55. package/dist/Components/ICollapsableOptions.js +1 -1
  56. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  57. package/dist/Components/Modal/ModalHelper.js +174 -174
  58. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  59. package/dist/Components/Modal/ModalOptions.js +1 -1
  60. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  61. package/dist/Components/Modal/ModalStore.js +82 -82
  62. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  63. package/dist/Components/Modal/ModalUtils.js +109 -109
  64. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  65. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  66. package/dist/Components/Notifications/Notification.d.ts +32 -32
  67. package/dist/Components/Notifications/Notification.js +26 -27
  68. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  69. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  70. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  71. package/dist/Components/Notifications/NotificationStore.js +78 -79
  72. package/dist/Components/PositionHelper.d.ts +10 -10
  73. package/dist/Components/PositionHelper.js +43 -43
  74. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  75. package/dist/Components/TaskRunner/Decorators.js +24 -24
  76. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  77. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  78. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  79. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  80. package/dist/Components/TooltipOptions.d.ts +8 -8
  81. package/dist/Components/TooltipOptions.js +1 -1
  82. package/dist/Components/index.d.ts +22 -22
  83. package/dist/Components/index.js +13 -13
  84. package/dist/ConnectionManager.d.ts +45 -45
  85. package/dist/ConnectionManager.js +60 -61
  86. package/dist/Data/ApiDataSource.d.ts +46 -46
  87. package/dist/Data/ApiDataSource.js +140 -144
  88. package/dist/Data/AsyncDataSource.d.ts +35 -35
  89. package/dist/Data/AsyncDataSource.js +79 -80
  90. package/dist/Data/CacheService.d.ts +40 -40
  91. package/dist/Data/CacheService.js +63 -64
  92. package/dist/Data/DataCacheEntry.d.ts +42 -42
  93. package/dist/Data/DataCacheEntry.js +80 -80
  94. package/dist/Data/DataView.d.ts +43 -43
  95. package/dist/Data/DataView.js +173 -172
  96. package/dist/Data/Deserialiser.d.ts +42 -42
  97. package/dist/Data/Deserialiser.js +255 -255
  98. package/dist/Data/Paging/PageManager.d.ts +167 -167
  99. package/dist/Data/Paging/PageManager.js +323 -323
  100. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  101. package/dist/Data/Paging/PageRequest.js +38 -39
  102. package/dist/Data/Paging/PageResult.d.ts +10 -10
  103. package/dist/Data/Paging/PageResult.js +14 -14
  104. package/dist/Data/Serialiser.d.ts +41 -41
  105. package/dist/Data/Serialiser.js +201 -201
  106. package/dist/Data/SortOperation.d.ts +8 -8
  107. package/dist/Data/SortOperation.js +26 -26
  108. package/dist/Data/StaticDataSource.d.ts +9 -9
  109. package/dist/Data/StaticDataSource.js +27 -27
  110. package/dist/Data/WindowedDataView.d.ts +8 -8
  111. package/dist/Data/WindowedDataView.js +49 -50
  112. package/dist/Data/index.d.ts +15 -15
  113. package/dist/Data/index.js +15 -15
  114. package/dist/Dates/DateUtils.d.ts +47 -47
  115. package/dist/Dates/DateUtils.js +226 -226
  116. package/dist/Dates/TimeSpan.d.ts +24 -24
  117. package/dist/Dates/TimeSpan.js +46 -46
  118. package/dist/DebounceHelper.d.ts +44 -38
  119. package/dist/DebounceHelper.js +122 -95
  120. package/dist/Extensions.d.ts +82 -82
  121. package/dist/Extensions.js +182 -182
  122. package/dist/FileUtils.d.ts +6 -6
  123. package/dist/FileUtils.js +37 -37
  124. package/dist/Globals.d.ts +19 -19
  125. package/dist/Globals.js +41 -41
  126. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  127. package/dist/JsonSchema/ClassMetadata.js +53 -53
  128. package/dist/JsonSchema/JsonData.d.ts +16 -16
  129. package/dist/JsonSchema/JsonData.js +97 -97
  130. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  131. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  132. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  133. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  134. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  135. package/dist/JsonSchema/TypeCache.js +44 -44
  136. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  137. package/dist/JsonSchema/TypeMetadata.js +170 -170
  138. package/dist/JsonSchema/index.d.ts +7 -7
  139. package/dist/JsonSchema/index.js +6 -6
  140. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  141. package/dist/Localisation/ILocalisationService.js +1 -1
  142. package/dist/Localisation/LocalisationService.d.ts +4 -4
  143. package/dist/Localisation/LocalisationService.js +17 -17
  144. package/dist/Localisation/index.d.ts +1 -1
  145. package/dist/Localisation/index.js +1 -1
  146. package/dist/Misc.d.ts +6 -6
  147. package/dist/Misc.js +6 -6
  148. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  149. package/dist/Model/BaseModels/AuditValues.js +46 -48
  150. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  151. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  152. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  153. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  154. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  155. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  156. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  157. package/dist/Model/BaseModels/UserEvent.js +36 -32
  158. package/dist/Model/BindableBase.d.ts +46 -40
  159. package/dist/Model/BindableBase.js +79 -76
  160. package/dist/Model/Decorators.d.ts +47 -44
  161. package/dist/Model/Decorators.js +182 -177
  162. package/dist/Model/EnumHelper.d.ts +54 -54
  163. package/dist/Model/EnumHelper.js +104 -100
  164. package/dist/Model/IAutoRunner.d.ts +5 -5
  165. package/dist/Model/IAutoRunner.js +1 -1
  166. package/dist/Model/IModelBase.d.ts +92 -79
  167. package/dist/Model/IModelBase.js +1 -1
  168. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  169. package/dist/Model/IModelCreatorBase.js +1 -1
  170. package/dist/Model/List.d.ts +79 -77
  171. package/dist/Model/List.js +208 -198
  172. package/dist/Model/LookupBase.d.ts +13 -6
  173. package/dist/Model/LookupBase.js +19 -10
  174. package/dist/Model/Misc.d.ts +83 -81
  175. package/dist/Model/Misc.js +59 -59
  176. package/dist/Model/ModelBase.d.ts +88 -86
  177. package/dist/Model/ModelBase.js +182 -180
  178. package/dist/Model/ModelCreatorBase.d.ts +24 -23
  179. package/dist/Model/ModelCreatorBase.js +92 -92
  180. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  181. package/dist/Model/ModelFieldInfo.js +35 -26
  182. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  183. package/dist/Model/ModelGraphTraverser.js +101 -99
  184. package/dist/Model/NeoModel.d.ts +6 -6
  185. package/dist/Model/NeoModel.js +13 -13
  186. package/dist/Model/NeoTypeInfo.d.ts +52 -41
  187. package/dist/Model/NeoTypeInfo.js +300 -250
  188. package/dist/Model/ObservableProperty.d.ts +8 -8
  189. package/dist/Model/ObservableProperty.js +41 -41
  190. package/dist/Model/ObservableValue.d.ts +9 -9
  191. package/dist/Model/ObservableValue.js +25 -26
  192. package/dist/Model/PropertyInfo.d.ts +83 -81
  193. package/dist/Model/PropertyInfo.js +138 -137
  194. package/dist/Model/PropertyInstance.d.ts +84 -48
  195. package/dist/Model/PropertyInstance.js +173 -113
  196. package/dist/Model/ValueObject.d.ts +3 -3
  197. package/dist/Model/ValueObject.js +10 -10
  198. package/dist/Model/index.d.ts +15 -14
  199. package/dist/Model/index.js +13 -12
  200. package/dist/NumberUtils.d.ts +63 -49
  201. package/dist/NumberUtils.js +247 -197
  202. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  203. package/dist/Routing/IMenuItemProvider.js +1 -1
  204. package/dist/Routing/IMenuRoute.d.ts +18 -18
  205. package/dist/Routing/IMenuRoute.js +1 -1
  206. package/dist/Routing/INavigationHelper.d.ts +7 -7
  207. package/dist/Routing/INavigationHelper.js +1 -1
  208. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  209. package/dist/Routing/IPageLeaveHandler.js +7 -7
  210. package/dist/Routing/IRoute.d.ts +27 -27
  211. package/dist/Routing/IRoute.js +1 -1
  212. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  213. package/dist/Routing/IRouteSecurityService.js +1 -1
  214. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  215. package/dist/Routing/MenuItemProvider.js +53 -54
  216. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  217. package/dist/Routing/RouteSecurityService.js +35 -36
  218. package/dist/Routing/index.d.ts +7 -7
  219. package/dist/Routing/index.js +3 -3
  220. package/dist/Security/IAuthenticationService.d.ts +41 -36
  221. package/dist/Security/IAuthenticationService.js +1 -1
  222. package/dist/Security/IAuthorisationService.d.ts +11 -11
  223. package/dist/Security/IAuthorisationService.js +1 -1
  224. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  225. package/dist/Security/ILoginErrorHandler.js +1 -1
  226. package/dist/Security/ISecurityService.d.ts +10 -10
  227. package/dist/Security/ISecurityService.js +1 -1
  228. package/dist/Security/IUser.d.ts +10 -10
  229. package/dist/Security/IUser.js +1 -1
  230. package/dist/Security/IUserRole.d.ts +6 -6
  231. package/dist/Security/IUserRole.js +1 -1
  232. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  233. package/dist/Security/LoginErrorHandler.js +97 -98
  234. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  235. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  236. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  237. package/dist/Security/Oidc/OidcTypes.js +1 -1
  238. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  239. package/dist/Security/Oidc/OidcUser.js +33 -33
  240. package/dist/Security/SecurityService.d.ts +12 -12
  241. package/dist/Security/SecurityService.js +33 -34
  242. package/dist/Security/SignInResult.d.ts +13 -13
  243. package/dist/Security/SignInResult.js +8 -8
  244. package/dist/Security/User.d.ts +12 -12
  245. package/dist/Security/User.js +24 -24
  246. package/dist/Security/index.d.ts +10 -10
  247. package/dist/Security/index.js +5 -5
  248. package/dist/Settings.d.ts +71 -57
  249. package/dist/Settings.js +100 -87
  250. package/dist/SignalR/HubBase.d.ts +70 -70
  251. package/dist/SignalR/HubBase.js +164 -164
  252. package/dist/SignalR/HubReceiver.d.ts +11 -11
  253. package/dist/SignalR/HubReceiver.js +25 -25
  254. package/dist/SignalR/HubSubscription.d.ts +12 -12
  255. package/dist/SignalR/HubSubscription.js +14 -14
  256. package/dist/SignalR/index.d.ts +3 -3
  257. package/dist/SignalR/index.js +1 -1
  258. package/dist/StringUtils.d.ts +7 -7
  259. package/dist/StringUtils.js +24 -24
  260. package/dist/Utils.d.ts +81 -80
  261. package/dist/Utils.js +220 -218
  262. package/dist/Validation/Decorators.d.ts +12 -12
  263. package/dist/Validation/Decorators.js +52 -52
  264. package/dist/Validation/DisplayHelper.d.ts +20 -19
  265. package/dist/Validation/DisplayHelper.js +104 -104
  266. package/dist/Validation/Misc.d.ts +10 -10
  267. package/dist/Validation/Misc.js +11 -11
  268. package/dist/Validation/ModelProxy.d.ts +20 -20
  269. package/dist/Validation/ModelProxy.js +46 -46
  270. package/dist/Validation/RuleContext.d.ts +86 -86
  271. package/dist/Validation/RuleContext.js +130 -130
  272. package/dist/Validation/Rules.d.ts +70 -70
  273. package/dist/Validation/Rules.js +177 -177
  274. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  275. package/dist/Validation/ValidationHelpers.js +57 -57
  276. package/dist/Validation/ValidationRules.d.ts +18 -18
  277. package/dist/Validation/ValidationRules.js +34 -34
  278. package/dist/Validation/ValidationState.d.ts +42 -42
  279. package/dist/Validation/ValidationState.js +74 -74
  280. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  281. package/dist/Validation/Validators/IModelValidator.js +1 -1
  282. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  283. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  284. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  285. package/dist/Validation/Validators/ModelValidator.js +143 -137
  286. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  287. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  288. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  289. package/dist/Validation/Validators/RuleValidator.js +51 -55
  290. package/dist/Validation/index.d.ts +9 -9
  291. package/dist/Validation/index.js +7 -7
  292. package/dist/Views/IViewBase.d.ts +5 -5
  293. package/dist/Views/IViewBase.js +1 -1
  294. package/dist/index.d.ts +37 -36
  295. package/dist/index.js +44 -43
  296. package/package.json +11 -10
@@ -1,189 +1,216 @@
1
- import { __awaiter, __decorate, __generator, __metadata } from "tslib";
2
- import { Observable } from '../../Model/Decorators';
3
- import OidcUser from './OidcUser';
4
- import { SignInResult } from '../SignInResult';
5
- import { Misc } from '../../';
6
- import { NeoTypes } from '../../AppServices';
7
- /**
8
- * Oidc authentication service base class.
9
- * You must override this class and provide the user manager implementation from the oidc library.
10
- */
11
- var OidcAuthService = /** @class */ (function () {
12
- /**
13
- * Creates an Oidc auth service
14
- * @param userManager Oidc-client user manager instance
15
- * @param user User which existed in storage at startup
16
- */
17
- function OidcAuthService(userManager, axios) {
18
- this.userManager = userManager;
19
- this.axios = axios;
20
- this._user = null;
21
- this.userManager = userManager;
22
- this.userManager.events.addUserLoaded(this.onUserLoaded.bind(this));
23
- this.userManager.events.addUserUnloaded(this.onUserUnloaded.bind(this));
24
- this.userManager.events.addAccessTokenExpiring(this.signinSilent.bind(this));
25
- }
26
- OidcAuthService.prototype.loadUserFromToken = function () {
27
- return this.loadUserFromSession();
28
- };
29
- OidcAuthService.prototype.loadUserFromSession = function () {
30
- return __awaiter(this, void 0, void 0, function () {
31
- var user;
32
- return __generator(this, function (_a) {
33
- switch (_a.label) {
34
- case 0: return [4 /*yield*/, this.userManager.getUser()];
35
- case 1:
36
- user = _a.sent();
37
- if (user) {
38
- // Get user does not raise the onUserLoaded event, so we call it manually.
39
- this.onUserLoaded(user);
40
- }
41
- return [2 /*return*/, this.user];
42
- }
43
- });
44
- });
45
- };
46
- /**
47
- * Redirect to identity server to get the auth token.
48
- * @param redirectPath Local path to redirect to once login is complete.
49
- */
50
- OidcAuthService.prototype.beginSignIn = function (redirectPath) {
51
- return this.userManager.signinRedirect({ state: redirectPath });
52
- };
53
- ;
54
- /**
55
- * Reads the access token from the query string and returns the redirect path.
56
- */
57
- OidcAuthService.prototype.endSignIn = function () {
58
- return __awaiter(this, void 0, void 0, function () {
59
- var user, e_1;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0:
63
- _a.trys.push([0, 2, , 3]);
64
- return [4 /*yield*/, this.userManager.signinRedirectCallback()];
65
- case 1:
66
- user = _a.sent();
67
- return [2 /*return*/, Promise.resolve(user.state || "")];
68
- case 2:
69
- e_1 = _a.sent();
70
- console.error(e_1);
71
- return [2 /*return*/, Promise.reject(e_1)];
72
- case 3: return [2 /*return*/];
73
- }
74
- });
75
- });
76
- };
77
- /**
78
- * Checks if the login state exists, and logs in the user.
79
- * Result.success will be false if an error occurs. Errors will be handled by the service bound to NeoTypes.Security.LoginErrorHandler.
80
- */
81
- OidcAuthService.prototype.tryCompleteSignIn = function () {
82
- return __awaiter(this, void 0, void 0, function () {
83
- var queryParams, stateKey, loginErrorHandler, redirectPath, e_2;
84
- return __generator(this, function (_a) {
85
- switch (_a.label) {
86
- case 0:
87
- queryParams = new URLSearchParams(window.location.search);
88
- stateKey = queryParams.get("state");
89
- loginErrorHandler = Misc.Globals.appService.get(NeoTypes.Security.LoginErrorHandler);
90
- if (!(!stateKey || window.localStorage.getItem("oidc." + stateKey) === null)) return [3 /*break*/, 1];
91
- loginErrorHandler.onMissingLoginState();
92
- return [3 /*break*/, 6];
93
- case 1:
94
- _a.trys.push([1, 5, , 6]);
95
- return [4 /*yield*/, this.endSignIn()];
96
- case 2:
97
- redirectPath = _a.sent();
98
- if (!this.afterUserLoadedPromise) return [3 /*break*/, 4];
99
- return [4 /*yield*/, this.afterUserLoadedPromise];
100
- case 3:
101
- _a.sent();
102
- this.afterUserLoadedPromise = undefined;
103
- _a.label = 4;
104
- case 4: return [2 /*return*/, new SignInResult(true, redirectPath)];
105
- case 5:
106
- e_2 = _a.sent();
107
- loginErrorHandler.onException(e_2);
108
- return [3 /*break*/, 6];
109
- case 6: return [2 /*return*/, new SignInResult(false, "")];
110
- }
111
- });
112
- });
113
- };
114
- OidcAuthService.prototype.endSignInSilent = function () {
115
- return this.userManager.signinSilentCallback();
116
- };
117
- OidcAuthService.prototype.onUserLoaded = function (user) {
118
- this.setUser(this.createUser(user));
119
- this.afterUserLoadedPromise = this.afterUserLoaded();
120
- };
121
- OidcAuthService.prototype.afterUserLoaded = function () {
122
- };
123
- OidcAuthService.prototype.createUser = function (user) {
124
- return new OidcUser(user);
125
- };
126
- OidcAuthService.prototype.onUserUnloaded = function () {
127
- this.setUser(null);
128
- };
129
- OidcAuthService.prototype.setUser = function (user) {
130
- if (user) {
131
- this.axios.defaults.headers.common['Authorization'] = user.authKey;
132
- }
133
- else {
134
- delete this.axios.defaults.headers.common['Authorization'];
135
- }
136
- this._user = user;
137
- };
138
- OidcAuthService.prototype.signinSilent = function () {
139
- return this.userManager.signinSilent();
140
- };
141
- OidcAuthService.prototype.beginSignOut = function () {
142
- if (this._user) {
143
- this.userManager.signoutRedirect({ id_token_hint: this._user.userData.id_token });
144
- this.signOutLocal();
145
- }
146
- this.userManager.clearStaleState();
147
- };
148
- ;
149
- OidcAuthService.prototype.endSignOut = function () {
150
- return this.userManager.signoutRedirectCallback();
151
- };
152
- ;
153
- OidcAuthService.prototype.signOutLocal = function () {
154
- this.setUser(null);
155
- };
156
- Object.defineProperty(OidcAuthService.prototype, "user", {
157
- get: function () {
158
- return this._user;
159
- },
160
- enumerable: false,
161
- configurable: true
162
- });
163
- Object.defineProperty(OidcAuthService.prototype, "isAuthenticated", {
164
- get: function () {
165
- return this.user !== null && !this.user.hasExpired;
166
- },
167
- enumerable: false,
168
- configurable: true
169
- });
170
- OidcAuthService.createIdentityServerMetadata = function (identityServerUrl) {
171
- return {
172
- issuer: identityServerUrl,
173
- jwks_uri: identityServerUrl + "/.well-known/openid-configuration/jwks",
174
- authorization_endpoint: identityServerUrl + "/connect/authorize",
175
- token_endpoint: identityServerUrl + "/connect/token",
176
- userinfo_endpoint: identityServerUrl + "/connect/userinfo",
177
- end_session_endpoint: identityServerUrl + "/connect/endsession",
178
- check_session_iframe: identityServerUrl + "/connect/checksession",
179
- revocation_endpoint: identityServerUrl + "/connect/revocation",
180
- introspection_endpoint: identityServerUrl + "/connect/introspect"
181
- };
182
- };
183
- __decorate([
184
- Observable(),
185
- __metadata("design:type", Object)
186
- ], OidcAuthService.prototype, "_user", void 0);
187
- return OidcAuthService;
188
- }());
189
- export default OidcAuthService;
1
+ import { __awaiter, __decorate, __generator, __metadata } from "tslib";
2
+ import { Observable } from '../../Model/Decorators';
3
+ import OidcUser from './OidcUser';
4
+ import { SignInResult } from '../SignInResult';
5
+ import { Misc } from '../../';
6
+ import { NeoTypes } from '../../AppServices';
7
+ /**
8
+ * Oidc authentication service base class.
9
+ * You must override this class and provide the user manager implementation from the oidc library.
10
+ */
11
+ var OidcAuthService = /** @class */ (function () {
12
+ /**
13
+ * Creates an Oidc auth service
14
+ * @param userManager Oidc-client user manager instance
15
+ * @param user User which existed in storage at startup
16
+ */
17
+ function OidcAuthService(userManager, axios) {
18
+ this.userManager = userManager;
19
+ this.axios = axios;
20
+ this._user = null;
21
+ this.userManager = userManager;
22
+ this.userManager.events.addUserLoaded(this.onUserLoaded.bind(this));
23
+ this.userManager.events.addUserUnloaded(this.onUserUnloaded.bind(this));
24
+ if (!this.userManager.settings.automaticSilentRenew) {
25
+ // If automaticSilentRenew is set to true, then the user manager will handle automatic renewal.
26
+ this.userManager.events.addAccessTokenExpiring(this.signinSilent.bind(this));
27
+ }
28
+ }
29
+ OidcAuthService.prototype.loadUserFromToken = function () {
30
+ return this.loadUserFromSession();
31
+ };
32
+ OidcAuthService.prototype.loadUserFromSession = function () {
33
+ return __awaiter(this, void 0, void 0, function () {
34
+ var user;
35
+ return __generator(this, function (_a) {
36
+ switch (_a.label) {
37
+ case 0: return [4 /*yield*/, this.userManager.getUser()];
38
+ case 1:
39
+ user = _a.sent();
40
+ if (user) {
41
+ // Get user does not raise the onUserLoaded event, so we call it manually.
42
+ this.onUserLoaded(user);
43
+ }
44
+ return [2 /*return*/, this.user];
45
+ }
46
+ });
47
+ });
48
+ };
49
+ OidcAuthService.prototype.ensureSignedIn = function (redirectLocal) {
50
+ var settings = this.userManager.settings;
51
+ if (!this.isAuthenticated &&
52
+ (!settings.redirect_uri || !window.location.href.startsWith(settings.redirect_uri)) &&
53
+ (!settings.silent_redirect_uri || !window.location.href.startsWith(settings.silent_redirect_uri))) {
54
+ this.beginSignIn(redirectLocal);
55
+ return false;
56
+ }
57
+ return true;
58
+ };
59
+ /**
60
+ * Redirect to identity server to get the auth token.
61
+ * @param redirectPath Local path to redirect to once login is complete.
62
+ */
63
+ OidcAuthService.prototype.beginSignIn = function (redirectPath) {
64
+ return this.userManager.signinRedirect({ state: redirectPath });
65
+ };
66
+ ;
67
+ /**
68
+ * Reads the access token from the query string and returns the redirect path.
69
+ */
70
+ OidcAuthService.prototype.endSignIn = function () {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var user, e_1;
73
+ return __generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0:
76
+ _a.trys.push([0, 2, , 3]);
77
+ return [4 /*yield*/, this.userManager.signinRedirectCallback()];
78
+ case 1:
79
+ user = _a.sent();
80
+ return [2 /*return*/, Promise.resolve(user.state || "")];
81
+ case 2:
82
+ e_1 = _a.sent();
83
+ console.error(e_1);
84
+ return [2 /*return*/, Promise.reject(e_1)];
85
+ case 3: return [2 /*return*/];
86
+ }
87
+ });
88
+ });
89
+ };
90
+ /**
91
+ * Checks if the login state exists, and logs in the user.
92
+ * Result.success will be false if an error occurs. Errors will be handled by the service bound to NeoTypes.Security.LoginErrorHandler.
93
+ */
94
+ OidcAuthService.prototype.tryCompleteSignIn = function () {
95
+ return __awaiter(this, void 0, void 0, function () {
96
+ var queryParams, stateKey, loginErrorHandler, redirectPath, e_2;
97
+ return __generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ queryParams = new URLSearchParams(window.location.search);
101
+ stateKey = queryParams.get("state");
102
+ loginErrorHandler = Misc.Globals.appService.get(NeoTypes.Security.LoginErrorHandler);
103
+ if (!(!stateKey || window.localStorage.getItem("oidc." + stateKey) === null)) return [3 /*break*/, 1];
104
+ loginErrorHandler.onMissingLoginState();
105
+ return [3 /*break*/, 6];
106
+ case 1:
107
+ _a.trys.push([1, 5, , 6]);
108
+ return [4 /*yield*/, this.endSignIn()];
109
+ case 2:
110
+ redirectPath = _a.sent();
111
+ if (!this.afterUserLoadedPromise) return [3 /*break*/, 4];
112
+ return [4 /*yield*/, this.afterUserLoadedPromise];
113
+ case 3:
114
+ _a.sent();
115
+ this.afterUserLoadedPromise = undefined;
116
+ _a.label = 4;
117
+ case 4: return [2 /*return*/, new SignInResult(true, redirectPath)];
118
+ case 5:
119
+ e_2 = _a.sent();
120
+ loginErrorHandler.onException(e_2);
121
+ return [3 /*break*/, 6];
122
+ case 6: return [2 /*return*/, new SignInResult(false, "")];
123
+ }
124
+ });
125
+ });
126
+ };
127
+ OidcAuthService.prototype.endSignInSilent = function () {
128
+ return this.userManager.signinSilentCallback();
129
+ };
130
+ OidcAuthService.prototype.onUserLoaded = function (user) {
131
+ this.setUser(this.createUser(user));
132
+ this.afterUserLoadedPromise = this.afterUserLoaded();
133
+ };
134
+ OidcAuthService.prototype.afterUserLoaded = function () {
135
+ };
136
+ OidcAuthService.prototype.createUser = function (user) {
137
+ return new OidcUser(user);
138
+ };
139
+ OidcAuthService.prototype.onUserUnloaded = function () {
140
+ this.setUser(null);
141
+ };
142
+ OidcAuthService.prototype.setUser = function (user) {
143
+ if (user) {
144
+ this.axios.defaults.headers.common['Authorization'] = user.authKey;
145
+ }
146
+ else {
147
+ delete this.axios.defaults.headers.common['Authorization'];
148
+ }
149
+ this._user = user;
150
+ };
151
+ OidcAuthService.prototype.signinSilent = function () {
152
+ return this.userManager.signinSilent();
153
+ };
154
+ OidcAuthService.prototype.beginSignOut = function () {
155
+ if (this._user) {
156
+ this.userManager.signoutRedirect({ id_token_hint: this._user.userData.id_token });
157
+ this.signOutLocal();
158
+ }
159
+ this.userManager.clearStaleState();
160
+ };
161
+ ;
162
+ OidcAuthService.prototype.endSignOut = function () {
163
+ return this.userManager.signoutRedirectCallback();
164
+ };
165
+ ;
166
+ OidcAuthService.prototype.signOutLocal = function () {
167
+ this.setUser(null);
168
+ };
169
+ Object.defineProperty(OidcAuthService.prototype, "user", {
170
+ get: function () {
171
+ return this._user;
172
+ },
173
+ enumerable: false,
174
+ configurable: true
175
+ });
176
+ Object.defineProperty(OidcAuthService.prototype, "isAuthenticated", {
177
+ get: function () {
178
+ return this.user !== null && !this.user.hasExpired;
179
+ },
180
+ enumerable: false,
181
+ configurable: true
182
+ });
183
+ OidcAuthService.createIdentityServerMetadata = function (identityServerUrl) {
184
+ return {
185
+ issuer: identityServerUrl,
186
+ jwks_uri: identityServerUrl + "/.well-known/openid-configuration/jwks",
187
+ authorization_endpoint: identityServerUrl + "/connect/authorize",
188
+ token_endpoint: identityServerUrl + "/connect/token",
189
+ userinfo_endpoint: identityServerUrl + "/connect/userinfo",
190
+ end_session_endpoint: identityServerUrl + "/connect/endsession",
191
+ check_session_iframe: identityServerUrl + "/connect/checksession",
192
+ revocation_endpoint: identityServerUrl + "/connect/revocation",
193
+ introspection_endpoint: identityServerUrl + "/connect/introspect"
194
+ };
195
+ };
196
+ /**
197
+ * If this is a silent sign in (based on the current uri), `endSignInSilent()` is called on the oidc client, and this method returns true.
198
+ * This should be called on startup of your app. If this returns true, don't continue with startup, since this iframe will be shortly disposed.
199
+ * @param silentRedirectRoute The app relative path used for silent sign in callbacks.
200
+ */
201
+ OidcAuthService.isSilentSignIn = function (silentRedirectRoute) {
202
+ var config = Misc.Globals.appService.get(NeoTypes.Config.ConfigModel);
203
+ var silentRedirectUri = "".concat(window.location.origin).concat(config.baseUrl).concat(silentRedirectRoute);
204
+ if (window.location.href.startsWith(silentRedirectUri)) {
205
+ Misc.Globals.appService.get(NeoTypes.Security.AuthenticationService).endSignInSilent();
206
+ return true;
207
+ }
208
+ return false;
209
+ };
210
+ __decorate([
211
+ Observable(),
212
+ __metadata("design:type", Object)
213
+ ], OidcAuthService.prototype, "_user", void 0);
214
+ return OidcAuthService;
215
+ }());
216
+ export default OidcAuthService;
@@ -1,29 +1,46 @@
1
- export interface IOidcUser {
2
- id_token: string;
3
- token_type: string;
4
- access_token: string;
5
- profile: any;
6
- expires_at: number;
7
- /** State passed to IDS which is returned to us. */
8
- state: any;
9
- readonly expired: boolean | undefined;
10
- }
11
- export interface IUserManager {
12
- events: IUserManagerEvents;
13
- signinRedirect(args?: any): Promise<any>;
14
- signinRedirectCallback(url?: string): Promise<IOidcUser>;
15
- signoutRedirect(args?: any): Promise<any>;
16
- signoutRedirectCallback(url?: string): Promise<any>;
17
- signinSilent(args?: any): Promise<IOidcUser>;
18
- signinSilentCallback(url?: string): Promise<any>;
19
- clearStaleState(): Promise<void>;
20
- getUser(): Promise<IOidcUser | null>;
21
- createSigninRequest(args?: any): Promise<{
22
- url: string;
23
- }>;
24
- }
25
- export interface IUserManagerEvents {
26
- addUserLoaded(callback: (...ev: any[]) => void): void;
27
- addUserUnloaded(callback: (...ev: any[]) => void): void;
28
- addAccessTokenExpiring(callback: (...ev: any[]) => void): void;
29
- }
1
+ export interface IOidcUser {
2
+ /**
3
+ * A JSON Web Token (JWT). Only provided if `openid` scope was requested.
4
+ * The application can access the data decoded by using the `profile` property.
5
+ */
6
+ id_token?: string;
7
+ /** Typically "Bearer" */
8
+ token_type: string;
9
+ /**
10
+ * The requested access token returned from the OIDC provider. The application can use this token to
11
+ * authenticate itself to the secured resource.
12
+ */
13
+ access_token: string;
14
+ /** The scopes that the requested access token is valid for. */
15
+ scope?: string;
16
+ profile: any;
17
+ expires_at?: number;
18
+ /** State passed to IDS which is returned to us. */
19
+ state: any;
20
+ readonly expired: boolean | undefined;
21
+ }
22
+ export interface IUserManager {
23
+ events: IUserManagerEvents;
24
+ settings: IUserManagerSettings;
25
+ signinRedirect(args?: any): Promise<any>;
26
+ signinRedirectCallback(url?: string): Promise<IOidcUser>;
27
+ signoutRedirect(args?: any): Promise<any>;
28
+ signoutRedirectCallback(url?: string): Promise<any>;
29
+ signinSilent(args?: any): Promise<IOidcUser | null>;
30
+ signinSilentCallback(url?: string): Promise<any>;
31
+ clearStaleState(): Promise<void>;
32
+ getUser(): Promise<IOidcUser | null>;
33
+ }
34
+ export interface IUserManagerSettings {
35
+ /** The redirect URI of your client application to receive a response from the OIDC/OAuth2 provider */
36
+ redirect_uri?: string;
37
+ /** Flag to indicate if there should be an automatic attempt to renew the access token prior to its expiration */
38
+ automaticSilentRenew?: boolean;
39
+ /** The URL for the page containing the code handling the silent renew */
40
+ silent_redirect_uri?: string;
41
+ }
42
+ export interface IUserManagerEvents {
43
+ addUserLoaded(callback: (...ev: any[]) => void): void;
44
+ addUserUnloaded(callback: (...ev: any[]) => void): void;
45
+ addAccessTokenExpiring(callback: (...ev: any[]) => void): void;
46
+ }
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,9 +1,9 @@
1
- import { User } from '../User';
2
- import { IOidcUser } from './OidcTypes';
3
- export default class OidcUser extends User {
4
- userData: IOidcUser;
5
- constructor(userData: IOidcUser);
6
- get hasExpired(): boolean;
7
- get authKey(): string;
8
- get accessToken(): string;
9
- }
1
+ import { User } from '../User';
2
+ import { IOidcUser } from './OidcTypes';
3
+ export default class OidcUser extends User {
4
+ userData: IOidcUser;
5
+ constructor(userData: IOidcUser);
6
+ get hasExpired(): boolean;
7
+ get authKey(): string;
8
+ get accessToken(): string;
9
+ }
@@ -1,33 +1,33 @@
1
- import { __extends } from "tslib";
2
- import { User } from '../User';
3
- var OidcUser = /** @class */ (function (_super) {
4
- __extends(OidcUser, _super);
5
- function OidcUser(userData) {
6
- var _this = _super.call(this, userData.profile.name, userData.profile.preferred_username, userData.profile.given_name, userData.profile.family_name) || this;
7
- _this.userData = userData;
8
- return _this;
9
- }
10
- Object.defineProperty(OidcUser.prototype, "hasExpired", {
11
- get: function () {
12
- return this.userData.expired;
13
- },
14
- enumerable: false,
15
- configurable: true
16
- });
17
- Object.defineProperty(OidcUser.prototype, "authKey", {
18
- get: function () {
19
- return this.userData.token_type + " " + this.userData.access_token;
20
- },
21
- enumerable: false,
22
- configurable: true
23
- });
24
- Object.defineProperty(OidcUser.prototype, "accessToken", {
25
- get: function () {
26
- return this.userData.access_token;
27
- },
28
- enumerable: false,
29
- configurable: true
30
- });
31
- return OidcUser;
32
- }(User));
33
- export default OidcUser;
1
+ import { __extends } from "tslib";
2
+ import { User } from '../User';
3
+ var OidcUser = /** @class */ (function (_super) {
4
+ __extends(OidcUser, _super);
5
+ function OidcUser(userData) {
6
+ var _this = _super.call(this, userData.profile.name, userData.profile.preferred_username, userData.profile.given_name, userData.profile.family_name) || this;
7
+ _this.userData = userData;
8
+ return _this;
9
+ }
10
+ Object.defineProperty(OidcUser.prototype, "hasExpired", {
11
+ get: function () {
12
+ return this.userData.expired;
13
+ },
14
+ enumerable: false,
15
+ configurable: true
16
+ });
17
+ Object.defineProperty(OidcUser.prototype, "authKey", {
18
+ get: function () {
19
+ return this.userData.token_type + " " + this.userData.access_token;
20
+ },
21
+ enumerable: false,
22
+ configurable: true
23
+ });
24
+ Object.defineProperty(OidcUser.prototype, "accessToken", {
25
+ get: function () {
26
+ return this.userData.access_token;
27
+ },
28
+ enumerable: false,
29
+ configurable: true
30
+ });
31
+ return OidcUser;
32
+ }(User));
33
+ export default OidcUser;
@@ -1,12 +1,12 @@
1
- import IAuthenticationService from './IAuthenticationService';
2
- import IAuthorisationService from './IAuthorisationService';
3
- import ISecurityService from './ISecurityService';
4
- import { IUser } from './IUser';
5
- export declare class SecurityService implements ISecurityService {
6
- authentication: IAuthenticationService;
7
- authorisation: IAuthorisationService;
8
- constructor(authentication: IAuthenticationService, authorisation: IAuthorisationService);
9
- get isAuthenticated(): boolean;
10
- get user(): IUser | null;
11
- hasRole(roleName: string): boolean;
12
- }
1
+ import IAuthenticationService from './IAuthenticationService';
2
+ import IAuthorisationService from './IAuthorisationService';
3
+ import ISecurityService from './ISecurityService';
4
+ import { IUser } from './IUser';
5
+ export declare class SecurityService implements ISecurityService {
6
+ authentication: IAuthenticationService;
7
+ authorisation: IAuthorisationService;
8
+ constructor(authentication: IAuthenticationService, authorisation: IAuthorisationService);
9
+ get isAuthenticated(): boolean;
10
+ get user(): IUser | null;
11
+ hasRole(roleName: string): boolean;
12
+ }