@softheon/armature 15.23.0 → 17.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.
Files changed (443) hide show
  1. package/README.md +142 -18
  2. package/assets/styles/_utility.scss +35 -0
  3. package/assets/styles/material-overrides.scss +0 -1
  4. package/assets/styles/sof-styles.scss +8 -7
  5. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
  6. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
  7. package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
  8. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
  9. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
  11. package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
  12. package/esm2022/lib/armature.module.mjs +176 -0
  13. package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
  14. package/esm2022/lib/base-components/base-component.module.mjs +123 -0
  15. package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
  16. package/esm2022/lib/base-components/sof-badge/sof-badge.component.mjs +49 -0
  17. package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
  18. package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
  19. package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
  20. package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
  21. package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
  22. package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
  23. package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
  24. package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
  25. package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
  26. package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
  27. package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
  28. package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
  29. package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
  30. package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
  31. package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
  32. package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
  33. package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
  35. package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
  36. package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
  37. package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
  39. package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
  40. package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
  41. package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
  42. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
  47. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
  48. package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
  49. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
  50. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
  51. package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
  52. package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
  53. package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
  54. package/esm2022/lib/core/components/app-template/app-template.component.mjs +250 -0
  55. package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
  56. package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
  57. package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
  58. package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
  59. package/esm2022/lib/core/initializer/initializer.service.mjs +286 -0
  60. package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
  61. package/esm2022/lib/core/models/base-config.mjs +2 -0
  62. package/esm2022/lib/core/models/constants.mjs +13 -0
  63. package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
  64. package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
  65. package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
  66. package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
  69. package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
  70. package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
  71. package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
  72. package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
  73. package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
  74. package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
  75. package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
  76. package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
  77. package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
  79. package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
  80. package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
  81. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
  82. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
  83. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
  84. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
  85. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
  86. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
  87. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
  89. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
  90. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
  91. package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
  92. package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
  93. package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
  94. package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
  95. package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
  96. package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
  97. package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
  98. package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
  99. package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
  100. package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
  101. package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
  102. package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
  103. package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
  104. package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
  105. package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
  106. package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
  107. package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
  108. package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
  109. package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
  110. package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
  111. package/esm2022/lib/footer/footer.module.mjs +45 -0
  112. package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
  113. package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
  114. package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
  115. package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
  116. package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
  117. package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
  118. package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
  119. package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
  120. package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
  121. package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
  122. package/esm2022/lib/forms/forms.module.mjs +87 -0
  123. package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
  124. package/esm2022/lib/forms/models/constants.mjs +10 -0
  125. package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
  126. package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
  127. package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
  128. package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
  129. package/esm2022/lib/header/components/header/header.component.mjs +161 -0
  130. package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
  131. package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
  132. package/esm2022/lib/header/header.module.mjs +85 -0
  133. package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
  134. package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
  135. package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
  136. package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
  137. package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
  138. package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
  139. package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
  140. package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
  141. package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
  142. package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
  143. package/esm2022/lib/navigation/navigation.module.mjs +126 -0
  144. package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
  145. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
  146. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
  147. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
  148. package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
  149. package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
  150. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
  151. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
  152. package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
  153. package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
  154. package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
  155. package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
  156. package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
  157. package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
  158. package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
  159. package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
  160. package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
  161. package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
  162. package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
  163. package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
  164. package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
  165. package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
  166. package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
  167. package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
  168. package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
  169. package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
  170. package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
  171. package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
  172. package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
  173. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
  174. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
  175. package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
  176. package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
  177. package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
  178. package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
  179. package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
  180. package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
  181. package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
  182. package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
  183. package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
  184. package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
  185. package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
  186. package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
  187. package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
  188. package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
  189. package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
  190. package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
  191. package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
  192. package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
  193. package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
  194. package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
  195. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
  196. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
  197. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
  198. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
  199. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
  200. package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
  201. package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
  202. package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
  203. package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
  204. package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
  205. package/esm2022/public-api.mjs +52 -0
  206. package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
  207. package/fesm2022/softheon-armature.mjs +7439 -0
  208. package/fesm2022/softheon-armature.mjs.map +1 -0
  209. package/index.d.ts +5 -5
  210. package/lib/alert-banner/alert-banner-api.d.ts +7 -7
  211. package/lib/alert-banner/alert-banner.module.d.ts +11 -11
  212. package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
  213. package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
  214. package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
  215. package/lib/alert-banner/models/constants.d.ts +15 -15
  216. package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
  217. package/lib/armature.module.d.ts +46 -46
  218. package/lib/base-components/base-component-api.d.ts +13 -13
  219. package/lib/base-components/base-component.module.d.ts +35 -35
  220. package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
  221. package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -30
  222. package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
  223. package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
  224. package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
  225. package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
  226. package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
  227. package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
  228. package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
  229. package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
  230. package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
  231. package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
  232. package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
  233. package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
  234. package/lib/core/client-generated/api/session.service.d.ts +94 -94
  235. package/lib/core/client-generated/configuration.d.ts +48 -48
  236. package/lib/core/client-generated/encoder.d.ts +10 -10
  237. package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
  238. package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
  239. package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
  240. package/lib/core/client-generated/model/errorModel.d.ts +24 -24
  241. package/lib/core/client-generated/model/folderLink.d.ts +34 -34
  242. package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
  243. package/lib/core/client-generated/model/models.d.ts +19 -19
  244. package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
  245. package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
  246. package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
  247. package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
  248. package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
  249. package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
  250. package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
  251. package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
  252. package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
  253. package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
  254. package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
  255. package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
  256. package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
  257. package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
  258. package/lib/core/client-generated/variables.d.ts +8 -8
  259. package/lib/core/components/app-template/app-template.component.d.ts +61 -67
  260. package/lib/core/functions/guid.d.ts +4 -4
  261. package/lib/core/functions/naming-convention.d.ts +6 -6
  262. package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
  263. package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
  264. package/lib/core/initializer/initializer.service.d.ts +79 -87
  265. package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
  266. package/lib/core/models/base-config.d.ts +18 -23
  267. package/lib/core/models/constants.d.ts +13 -17
  268. package/lib/core/models/data-store-config.d.ts +27 -27
  269. package/lib/core/models/header-config.d.ts +9 -9
  270. package/lib/core/models/http-verbs.d.ts +10 -10
  271. package/lib/core/models/navigation-config.d.ts +14 -14
  272. package/lib/core/models/oidc-auth-settings.d.ts +11 -11
  273. package/lib/core/models/route-path.d.ts +5 -5
  274. package/lib/core/models/session-config.d.ts +18 -18
  275. package/lib/core/models/styles.d.ts +11 -11
  276. package/lib/core/models/subdomain-config.d.ts +7 -7
  277. package/lib/core/models/typed-session.d.ts +17 -17
  278. package/lib/core/models/user-entity-service-config.d.ts +14 -14
  279. package/lib/core/services/authorization.service.d.ts +54 -54
  280. package/lib/core/services/banner.service.d.ts +31 -31
  281. package/lib/core/services/base-config.service.d.ts +21 -21
  282. package/lib/core/services/custom-auth-config.service.d.ts +6 -6
  283. package/lib/core/services/default-config.service.d.ts +8 -8
  284. package/lib/core/services/session.service.d.ts +127 -127
  285. package/lib/core/services/user-entity.service.d.ts +47 -47
  286. package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
  287. package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
  288. package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
  289. package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
  290. package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
  291. package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
  292. package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
  293. package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
  294. package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
  295. package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
  296. package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
  297. package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
  298. package/lib/distributed-cache/models/constants.d.ts +2 -2
  299. package/lib/distributed-cache/models/policy-person.d.ts +19 -19
  300. package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
  301. package/lib/error/components/error-common/error-common.component.d.ts +14 -14
  302. package/lib/error/error-api.d.ts +4 -4
  303. package/lib/error/error.module.d.ts +11 -11
  304. package/lib/error/models/error-common-config.d.ts +21 -21
  305. package/lib/faq/components/faq/faq.component.d.ts +19 -19
  306. package/lib/faq/faq-api.d.ts +5 -5
  307. package/lib/faq/faq.module.d.ts +15 -15
  308. package/lib/faq/models/faq-config.d.ts +13 -13
  309. package/lib/faq/models/faq.d.ts +9 -9
  310. package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
  311. package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
  312. package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
  313. package/lib/footer/components/footer/footer.component.d.ts +14 -14
  314. package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
  315. package/lib/footer/footer-api.d.ts +7 -7
  316. package/lib/footer/footer.module.d.ts +14 -14
  317. package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
  318. package/lib/footer/models/footer-config.d.ts +7 -7
  319. package/lib/footer/models/site-map-models.d.ts +41 -41
  320. package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
  321. package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
  322. package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
  323. package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
  324. package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
  325. package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
  326. package/lib/forms/forms-api.d.ts +14 -14
  327. package/lib/forms/forms.module.d.ts +21 -21
  328. package/lib/forms/models/address.d.ts +14 -14
  329. package/lib/forms/models/constants.d.ts +9 -9
  330. package/lib/forms/models/county.d.ts +13 -13
  331. package/lib/forms/models/enums/states.d.ts +64 -64
  332. package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
  333. package/lib/forms/services/alert.service.d.ts +60 -60
  334. package/lib/header/components/header/header.component.d.ts +120 -120
  335. package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
  336. package/lib/header/header-api.d.ts +9 -9
  337. package/lib/header/header.module.d.ts +20 -20
  338. package/lib/header/models/header-auth.settings.d.ts +30 -30
  339. package/lib/header/models/header-language.settings.d.ts +10 -10
  340. package/lib/header/models/header-theme.settings.d.ts +19 -19
  341. package/lib/header/models/header.settings.d.ts +53 -53
  342. package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
  343. package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
  344. package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
  345. package/lib/navigation/models/nav.settings.d.ts +64 -64
  346. package/lib/navigation/models/navigation.d.ts +40 -40
  347. package/lib/navigation/navigation-api.d.ts +6 -6
  348. package/lib/navigation/navigation.module.d.ts +25 -25
  349. package/lib/oauth/models/constants.d.ts +6 -6
  350. package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
  351. package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
  352. package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
  353. package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
  354. package/lib/oauth/models/generated/finance.d.ts +36 -36
  355. package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
  356. package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
  357. package/lib/oauth/models/generated/person.d.ts +53 -53
  358. package/lib/oauth/models/generated/policy.d.ts +51 -51
  359. package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
  360. package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
  361. package/lib/oauth/oauth-api.d.ts +12 -12
  362. package/lib/oauth/oauth.module.d.ts +9 -9
  363. package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
  364. package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
  365. package/lib/rbac/models/access-token-claims.d.ts +18 -18
  366. package/lib/rbac/models/constants.d.ts +4 -4
  367. package/lib/rbac/models/decoded-access-token.d.ts +43 -43
  368. package/lib/rbac/models/rbac-config.d.ts +15 -15
  369. package/lib/rbac/models/role-access.d.ts +7 -7
  370. package/lib/rbac/rbac-api.d.ts +11 -11
  371. package/lib/rbac/rbac.module.d.ts +19 -19
  372. package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
  373. package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
  374. package/lib/rbac/services/role-nav.service.d.ts +12 -12
  375. package/lib/rbac/services/tokens.d.ts +3 -3
  376. package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
  377. package/lib/resize-panels/models/resize-event.d.ts +6 -6
  378. package/lib/resize-panels/resize-panels-api.d.ts +4 -4
  379. package/lib/resize-panels/resize-panels.module.d.ts +9 -9
  380. package/lib/rum/models/arm-error.d.ts +27 -27
  381. package/lib/rum/models/rum-config.d.ts +9 -9
  382. package/lib/rum/rum-api.d.ts +7 -7
  383. package/lib/rum/rum.module.d.ts +14 -14
  384. package/lib/rum/services/rum.service.d.ts +47 -47
  385. package/lib/rum/services/shared-error.service.d.ts +27 -27
  386. package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
  387. package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
  388. package/lib/saml/models/i-saml-request.d.ts +4 -4
  389. package/lib/saml/models/i-saml-response.d.ts +4 -4
  390. package/lib/saml/models/redirect-saml-request.d.ts +24 -24
  391. package/lib/saml/models/sso-gateway-model.d.ts +17 -17
  392. package/lib/saml/saml-api.d.ts +11 -11
  393. package/lib/saml/saml.module.d.ts +9 -9
  394. package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
  395. package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
  396. package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
  397. package/lib/saml/services/send-off/saml.service.d.ts +32 -32
  398. package/lib/sof-pipe/constants/constants.d.ts +8 -8
  399. package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
  400. package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
  401. package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
  402. package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
  403. package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
  404. package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
  405. package/lib/theming/directives/css-override.directive.d.ts +20 -20
  406. package/lib/theming/models/css-override.d.ts +15 -15
  407. package/lib/theming/services/theme.service.d.ts +48 -48
  408. package/lib/theming/theme-api.d.ts +5 -5
  409. package/lib/theming/theme.module.d.ts +9 -9
  410. package/package.json +18 -24
  411. package/public-api.d.ts +49 -48
  412. package/esm2020/lib/armature.module.mjs +0 -179
  413. package/esm2020/lib/base-components/base-component.module.mjs +0 -123
  414. package/esm2020/lib/base-components/sof-badge/sof-badge.component.mjs +0 -60
  415. package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
  416. package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
  417. package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
  418. package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
  419. package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
  420. package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
  421. package/esm2020/lib/core/components/app-template/app-template.component.mjs +0 -258
  422. package/esm2020/lib/core/initializer/initializer.service.mjs +0 -302
  423. package/esm2020/lib/core/models/base-config.mjs +0 -2
  424. package/esm2020/lib/core/models/constants.mjs +0 -17
  425. package/esm2020/lib/core/models/federated-module-config.mjs +0 -2
  426. package/esm2020/lib/core/services/federated-module.service.mjs +0 -60
  427. package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
  428. package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
  429. package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
  430. package/esm2020/lib/footer/footer.module.mjs +0 -45
  431. package/esm2020/lib/forms/forms.module.mjs +0 -87
  432. package/esm2020/lib/forms/models/constants.mjs +0 -10
  433. package/esm2020/lib/header/components/header/header.component.mjs +0 -161
  434. package/esm2020/lib/header/header.module.mjs +0 -85
  435. package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
  436. package/esm2020/lib/navigation/navigation.module.mjs +0 -126
  437. package/esm2020/public-api.mjs +0 -51
  438. package/fesm2015/softheon-armature.mjs +0 -7372
  439. package/fesm2015/softheon-armature.mjs.map +0 -1
  440. package/fesm2020/softheon-armature.mjs +0 -7427
  441. package/fesm2020/softheon-armature.mjs.map +0 -1
  442. package/lib/core/models/federated-module-config.d.ts +0 -3
  443. package/lib/core/services/federated-module.service.d.ts +0 -23
@@ -1,104 +1,104 @@
1
- import { Injectable, Inject, Optional } from '@angular/core';
2
- import { DISABLE_ACCESS_FOR_NO_PAGES_ROLE } from './tokens';
3
- import * as i0 from "@angular/core";
4
- /** The armature role navigation service */
5
- export class ArRoleNavService {
6
- /** Constructs the service */
7
- constructor(disableAccessForNoPagesRole) {
8
- this.disableAccessForNoPagesRole = disableAccessForNoPagesRole;
9
- }
10
- /**
11
- * Creates a new navigation configuration using the provided RBAC configuration
12
- * @param defaultNav The default navigation configuration
13
- * @param rbacConfig The rbac configuration
14
- * @param roles The roles
15
- */
16
- createRoleControlledNavigation(defaultNav, rbacConfig, roles) {
17
- const controlledNav = [];
18
- // flatten role config into one set of pages for all the roles for the user
19
- const flattenedPages = new Set();
20
- let roleFound = false;
21
- roles.forEach(role => {
22
- const roleConfig = rbacConfig.roleConfig[role];
23
- if (roleConfig) {
24
- roleFound = true;
25
- // if they have at least one role where they have access to everything give access to everything
26
- if (!roleConfig.pages || roleConfig.pages.length === 0) {
27
- flattenedPages.clear();
28
- return;
29
- }
30
- roleConfig.pages.forEach(page => {
31
- flattenedPages.add(page);
32
- });
33
- }
34
- });
35
- if (flattenedPages.size === 0 && !roleFound) {
36
- console.warn(`no role matching: ${roles.join(', ')} found, no access is provided`);
37
- return controlledNav;
38
- }
39
- // if the role has no pages assigned for access and the token was passed, deny access to everything
40
- if (flattenedPages.size === 0 && this.disableAccessForNoPagesRole) {
41
- console.warn(`The role: ${roles.join(', ')} has no page access defined`);
42
- return [];
43
- }
44
- // if the user has no pages, give them access to all of the stuff
45
- if (flattenedPages.size === 0 && roleFound) {
46
- return defaultNav;
47
- }
48
- // loop over each level 1 node
49
- const deepCopyDefaultNav = JSON.parse(JSON.stringify(defaultNav));
50
- deepCopyDefaultNav.forEach(n1 => {
51
- // first check which n2 are listed
52
- const foundSubNodes = [];
53
- n1.subNodes.forEach(sn => {
54
- if (this.isRouteMatch(Array.from(flattenedPages.values()), sn.route)) {
55
- foundSubNodes.push(sn);
56
- }
57
- });
58
- n1.subNodes = foundSubNodes;
59
- // if level 2 nodes found or level 1 is a route match, add the level 1 node
60
- if (foundSubNodes.length > 0 || (n1.route && this.isRouteMatch(Array.from(flattenedPages.values()), n1.route))) {
61
- controlledNav.push(n1);
62
- }
63
- });
64
- return controlledNav;
65
- }
66
- /**
67
- * Determines if the route is found in the pages array
68
- * @param pages The pages
69
- * @param route The route
70
- */
71
- isRouteMatch(pages, route) {
72
- // check wild card
73
- return pages.some(p => {
74
- if (p.indexOf('**') > -1) {
75
- const baseRoute = p.replace('/**/', '')
76
- .replace('**/', '')
77
- .replace('/**', '')
78
- .replace('**', '')
79
- .toLowerCase();
80
- if (route.toLowerCase()
81
- .indexOf(baseRoute) > -1) {
82
- return true;
83
- }
84
- }
85
- else if (route.toLowerCase() === p.toLowerCase()) {
86
- return true;
87
- }
88
- });
89
- }
90
- }
91
- ArRoleNavServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ArRoleNavService, deps: [{ token: DISABLE_ACCESS_FOR_NO_PAGES_ROLE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
92
- ArRoleNavService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ArRoleNavService, providedIn: 'root' });
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ArRoleNavService, decorators: [{
94
- type: Injectable,
95
- args: [{
96
- providedIn: 'root'
97
- }]
98
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
99
- type: Optional
100
- }, {
101
- type: Inject,
102
- args: [DISABLE_ACCESS_FOR_NO_PAGES_ROLE]
103
- }] }]; } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXItcm9sZS1uYXYuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvcmJhYy9zZXJ2aWNlcy9hci1yb2xlLW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRTVELDJDQUEyQztBQUkzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLDZCQUE2QjtJQUM3QixZQUNnRSwyQkFBcUM7UUFBckMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFVO0lBQ2pHLENBQUM7SUFFTDs7Ozs7T0FLRztJQUNJLDhCQUE4QixDQUFDLFVBQTBCLEVBQUUsVUFBc0IsRUFBRSxLQUFvQjtRQUM1RyxNQUFNLGFBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ3pDLDJFQUEyRTtRQUMzRSxNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksVUFBVSxFQUFFO2dCQUNkLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLGdHQUFnRztnQkFDaEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUN0RCxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBRXZCLE9BQU87aUJBQ1I7Z0JBQ0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzlCLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztZQUVuRixPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUVELG1HQUFtRztRQUNuRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNqRSxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUV6RSxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsaUVBQWlFO1FBQ2pFLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksU0FBUyxFQUFFO1lBQzFDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQsOEJBQThCO1FBQzlCLE1BQU0sa0JBQWtCLEdBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM5QixrQ0FBa0M7WUFDbEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3BFLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3hCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztZQUM1QiwyRUFBMkU7WUFDM0UsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM5RyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxLQUFvQixFQUFFLEtBQWE7UUFDdEQsa0JBQWtCO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztxQkFDcEMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7cUJBQ2xCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO3FCQUNsQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztxQkFDakIsV0FBVyxFQUFFLENBQUM7Z0JBRWpCLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtxQkFDcEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMxQixPQUFPLElBQUksQ0FBQztpQkFDYjthQUNGO2lCQUNJLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUM7YUFDYjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkdBaEdVLGdCQUFnQixrQkFJTCxnQ0FBZ0M7aUhBSjNDLGdCQUFnQixjQUZmLE1BQU07MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdk5vZGUgfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uL21vZGVscy9uYXZpZ2F0aW9uJztcclxuaW1wb3J0IHsgUmJhY0NvbmZpZyB9IGZyb20gJy4uL21vZGVscy9yYmFjLWNvbmZpZyc7XHJcbmltcG9ydCB7IFJvbGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLW5hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRElTQUJMRV9BQ0NFU1NfRk9SX05PX1BBR0VTX1JPTEUgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG4vKiogVGhlIGFybWF0dXJlIHJvbGUgbmF2aWdhdGlvbiBzZXJ2aWNlICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyUm9sZU5hdlNlcnZpY2UgaW1wbGVtZW50cyBSb2xlTmF2U2VydmljZSB7XHJcblxyXG4gIC8qKiBDb25zdHJ1Y3RzIHRoZSBzZXJ2aWNlICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERJU0FCTEVfQUNDRVNTX0ZPUl9OT19QQUdFU19ST0xFKSBwcml2YXRlIGRpc2FibGVBY2Nlc3NGb3JOb1BhZ2VzUm9sZSA6IGJvb2xlYW4gKSBcclxuICAgIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IG5hdmlnYXRpb24gY29uZmlndXJhdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgUkJBQyBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIGRlZmF1bHROYXYgVGhlIGRlZmF1bHQgbmF2aWdhdGlvbiBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIHJiYWNDb25maWcgVGhlIHJiYWMgY29uZmlndXJhdGlvblxyXG4gICAqIEBwYXJhbSByb2xlcyBUaGUgcm9sZXNcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUm9sZUNvbnRyb2xsZWROYXZpZ2F0aW9uKGRlZmF1bHROYXY6IEFycmF5PE5hdk5vZGU+LCByYmFjQ29uZmlnOiBSYmFjQ29uZmlnLCByb2xlczogQXJyYXk8c3RyaW5nPik6IEFycmF5PE5hdk5vZGU+IHtcclxuICAgIGNvbnN0IGNvbnRyb2xsZWROYXY6IEFycmF5PE5hdk5vZGU+ID0gW107XHJcbiAgICAvLyBmbGF0dGVuIHJvbGUgY29uZmlnIGludG8gb25lIHNldCBvZiBwYWdlcyBmb3IgYWxsIHRoZSByb2xlcyBmb3IgdGhlIHVzZXJcclxuICAgIGNvbnN0IGZsYXR0ZW5lZFBhZ2VzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgbGV0IHJvbGVGb3VuZCA9IGZhbHNlO1xyXG4gICAgcm9sZXMuZm9yRWFjaChyb2xlID0+IHtcclxuICAgICAgY29uc3Qgcm9sZUNvbmZpZyA9IHJiYWNDb25maWcucm9sZUNvbmZpZ1tyb2xlXTtcclxuICAgICAgaWYgKHJvbGVDb25maWcpIHtcclxuICAgICAgICByb2xlRm91bmQgPSB0cnVlO1xyXG4gICAgICAgIC8vIGlmIHRoZXkgaGF2ZSBhdCBsZWFzdCBvbmUgcm9sZSB3aGVyZSB0aGV5IGhhdmUgYWNjZXNzIHRvIGV2ZXJ5dGhpbmcgZ2l2ZSBhY2Nlc3MgdG8gZXZlcnl0aGluZ1xyXG4gICAgICAgIGlmICghcm9sZUNvbmZpZy5wYWdlcyB8fCByb2xlQ29uZmlnLnBhZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZmxhdHRlbmVkUGFnZXMuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvbGVDb25maWcucGFnZXMuZm9yRWFjaChwYWdlID0+IHtcclxuICAgICAgICAgIGZsYXR0ZW5lZFBhZ2VzLmFkZChwYWdlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmxhdHRlbmVkUGFnZXMuc2l6ZSA9PT0gMCAmJiAhcm9sZUZvdW5kKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihgbm8gcm9sZSBtYXRjaGluZzogJHtyb2xlcy5qb2luKCcsICcpfSBmb3VuZCwgbm8gYWNjZXNzIGlzIHByb3ZpZGVkYCk7XHJcblxyXG4gICAgICByZXR1cm4gY29udHJvbGxlZE5hdjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiB0aGUgcm9sZSBoYXMgbm8gcGFnZXMgYXNzaWduZWQgZm9yIGFjY2VzcyBhbmQgdGhlIHRva2VuIHdhcyBwYXNzZWQsIGRlbnkgYWNjZXNzIHRvIGV2ZXJ5dGhpbmdcclxuICAgIGlmIChmbGF0dGVuZWRQYWdlcy5zaXplID09PSAwICYmIHRoaXMuZGlzYWJsZUFjY2Vzc0Zvck5vUGFnZXNSb2xlKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgVGhlIHJvbGU6ICR7cm9sZXMuam9pbignLCAnKX0gaGFzIG5vIHBhZ2UgYWNjZXNzIGRlZmluZWRgKTtcclxuXHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIG5vIHBhZ2VzLCBnaXZlIHRoZW0gYWNjZXNzIHRvIGFsbCBvZiB0aGUgc3R1ZmZcclxuICAgIGlmIChmbGF0dGVuZWRQYWdlcy5zaXplID09PSAwICYmIHJvbGVGb3VuZCkge1xyXG4gICAgICByZXR1cm4gZGVmYXVsdE5hdjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsb29wIG92ZXIgZWFjaCBsZXZlbCAxIG5vZGVcclxuICAgIGNvbnN0IGRlZXBDb3B5RGVmYXVsdE5hdjogQXJyYXk8TmF2Tm9kZT4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZmF1bHROYXYpKTtcclxuICAgIGRlZXBDb3B5RGVmYXVsdE5hdi5mb3JFYWNoKG4xID0+IHtcclxuICAgICAgLy8gZmlyc3QgY2hlY2sgd2hpY2ggbjIgYXJlIGxpc3RlZFxyXG4gICAgICBjb25zdCBmb3VuZFN1Yk5vZGVzID0gW107XHJcbiAgICAgIG4xLnN1Yk5vZGVzLmZvckVhY2goc24gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUm91dGVNYXRjaChBcnJheS5mcm9tKGZsYXR0ZW5lZFBhZ2VzLnZhbHVlcygpKSwgc24ucm91dGUpKSB7XHJcbiAgICAgICAgICBmb3VuZFN1Yk5vZGVzLnB1c2goc24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuMS5zdWJOb2RlcyA9IGZvdW5kU3ViTm9kZXM7XHJcbiAgICAgIC8vIGlmIGxldmVsIDIgbm9kZXMgZm91bmQgb3IgbGV2ZWwgMSBpcyBhIHJvdXRlIG1hdGNoLCBhZGQgdGhlIGxldmVsIDEgbm9kZVxyXG4gICAgICBpZiAoZm91bmRTdWJOb2Rlcy5sZW5ndGggPiAwIHx8IChuMS5yb3V0ZSAmJiB0aGlzLmlzUm91dGVNYXRjaChBcnJheS5mcm9tKGZsYXR0ZW5lZFBhZ2VzLnZhbHVlcygpKSwgbjEucm91dGUpKSkge1xyXG4gICAgICAgIGNvbnRyb2xsZWROYXYucHVzaChuMSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb250cm9sbGVkTmF2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcm91dGUgaXMgZm91bmQgaW4gdGhlIHBhZ2VzIGFycmF5XHJcbiAgICogQHBhcmFtIHBhZ2VzIFRoZSBwYWdlc1xyXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGVcclxuICAgKi9cclxuICBwcml2YXRlIGlzUm91dGVNYXRjaChwYWdlczogQXJyYXk8c3RyaW5nPiwgcm91dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY2hlY2sgd2lsZCBjYXJkXHJcbiAgICByZXR1cm4gcGFnZXMuc29tZShwID0+IHtcclxuICAgICAgaWYgKHAuaW5kZXhPZignKionKSA+IC0xKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZVJvdXRlID0gcC5yZXBsYWNlKCcvKiovJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnKiovJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnLyoqJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnKionLCAnJylcclxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICBpZiAocm91dGUudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgLmluZGV4T2YoYmFzZVJvdXRlKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocm91dGUudG9Mb3dlckNhc2UoKSA9PT0gcC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
1
+ import { Injectable, Inject, Optional } from '@angular/core';
2
+ import { DISABLE_ACCESS_FOR_NO_PAGES_ROLE } from './tokens';
3
+ import * as i0 from "@angular/core";
4
+ /** The armature role navigation service */
5
+ export class ArRoleNavService {
6
+ /** Constructs the service */
7
+ constructor(disableAccessForNoPagesRole) {
8
+ this.disableAccessForNoPagesRole = disableAccessForNoPagesRole;
9
+ }
10
+ /**
11
+ * Creates a new navigation configuration using the provided RBAC configuration
12
+ * @param defaultNav The default navigation configuration
13
+ * @param rbacConfig The rbac configuration
14
+ * @param roles The roles
15
+ */
16
+ createRoleControlledNavigation(defaultNav, rbacConfig, roles) {
17
+ const controlledNav = [];
18
+ // flatten role config into one set of pages for all the roles for the user
19
+ const flattenedPages = new Set();
20
+ let roleFound = false;
21
+ roles.forEach(role => {
22
+ const roleConfig = rbacConfig.roleConfig[role];
23
+ if (roleConfig) {
24
+ roleFound = true;
25
+ // if they have at least one role where they have access to everything give access to everything
26
+ if (!roleConfig.pages || roleConfig.pages.length === 0) {
27
+ flattenedPages.clear();
28
+ return;
29
+ }
30
+ roleConfig.pages.forEach(page => {
31
+ flattenedPages.add(page);
32
+ });
33
+ }
34
+ });
35
+ if (flattenedPages.size === 0 && !roleFound) {
36
+ console.warn(`no role matching: ${roles.join(', ')} found, no access is provided`);
37
+ return controlledNav;
38
+ }
39
+ // if the role has no pages assigned for access and the token was passed, deny access to everything
40
+ if (flattenedPages.size === 0 && this.disableAccessForNoPagesRole) {
41
+ console.warn(`The role: ${roles.join(', ')} has no page access defined`);
42
+ return [];
43
+ }
44
+ // if the user has no pages, give them access to all of the stuff
45
+ if (flattenedPages.size === 0 && roleFound) {
46
+ return defaultNav;
47
+ }
48
+ // loop over each level 1 node
49
+ const deepCopyDefaultNav = JSON.parse(JSON.stringify(defaultNav));
50
+ deepCopyDefaultNav.forEach(n1 => {
51
+ // first check which n2 are listed
52
+ const foundSubNodes = [];
53
+ n1.subNodes.forEach(sn => {
54
+ if (this.isRouteMatch(Array.from(flattenedPages.values()), sn.route)) {
55
+ foundSubNodes.push(sn);
56
+ }
57
+ });
58
+ n1.subNodes = foundSubNodes;
59
+ // if level 2 nodes found or level 1 is a route match, add the level 1 node
60
+ if (foundSubNodes.length > 0 || (n1.route && this.isRouteMatch(Array.from(flattenedPages.values()), n1.route))) {
61
+ controlledNav.push(n1);
62
+ }
63
+ });
64
+ return controlledNav;
65
+ }
66
+ /**
67
+ * Determines if the route is found in the pages array
68
+ * @param pages The pages
69
+ * @param route The route
70
+ */
71
+ isRouteMatch(pages, route) {
72
+ // check wild card
73
+ return pages.some(p => {
74
+ if (p.indexOf('**') > -1) {
75
+ const baseRoute = p.replace('/**/', '')
76
+ .replace('**/', '')
77
+ .replace('/**', '')
78
+ .replace('**', '')
79
+ .toLowerCase();
80
+ if (route.toLowerCase()
81
+ .indexOf(baseRoute) > -1) {
82
+ return true;
83
+ }
84
+ }
85
+ else if (route.toLowerCase() === p.toLowerCase()) {
86
+ return true;
87
+ }
88
+ });
89
+ }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArRoleNavService, deps: [{ token: DISABLE_ACCESS_FOR_NO_PAGES_ROLE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
91
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArRoleNavService, providedIn: 'root' }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArRoleNavService, decorators: [{
94
+ type: Injectable,
95
+ args: [{
96
+ providedIn: 'root'
97
+ }]
98
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
99
+ type: Optional
100
+ }, {
101
+ type: Inject,
102
+ args: [DISABLE_ACCESS_FOR_NO_PAGES_ROLE]
103
+ }] }] });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXItcm9sZS1uYXYuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvcmJhYy9zZXJ2aWNlcy9hci1yb2xlLW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRTVELDJDQUEyQztBQUkzQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLDZCQUE2QjtJQUM3QixZQUNnRSwyQkFBcUM7UUFBckMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFVO0lBQ2pHLENBQUM7SUFFTDs7Ozs7T0FLRztJQUNJLDhCQUE4QixDQUFDLFVBQTBCLEVBQUUsVUFBc0IsRUFBRSxLQUFvQjtRQUM1RyxNQUFNLGFBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ3pDLDJFQUEyRTtRQUMzRSxNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUN0RCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksVUFBVSxFQUFFO2dCQUNkLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLGdHQUFnRztnQkFDaEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUN0RCxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBRXZCLE9BQU87aUJBQ1I7Z0JBQ0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxD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LENBQUM7YUFDYjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoR1UsZ0JBQWdCLGtCQUlMLGdDQUFnQztrSEFKM0MsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdk5vZGUgfSBmcm9tICcuLi8uLi9uYXZpZ2F0aW9uL21vZGVscy9uYXZpZ2F0aW9uJztcclxuaW1wb3J0IHsgUmJhY0NvbmZpZyB9IGZyb20gJy4uL21vZGVscy9yYmFjLWNvbmZpZyc7XHJcbmltcG9ydCB7IFJvbGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLW5hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRElTQUJMRV9BQ0NFU1NfRk9SX05PX1BBR0VTX1JPTEUgfSBmcm9tICcuL3Rva2Vucyc7XHJcblxyXG4vKiogVGhlIGFybWF0dXJlIHJvbGUgbmF2aWdhdGlvbiBzZXJ2aWNlICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyUm9sZU5hdlNlcnZpY2UgaW1wbGVtZW50cyBSb2xlTmF2U2VydmljZSB7XHJcblxyXG4gIC8qKiBDb25zdHJ1Y3RzIHRoZSBzZXJ2aWNlICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERJU0FCTEVfQUNDRVNTX0ZPUl9OT19QQUdFU19ST0xFKSBwcml2YXRlIGRpc2FibGVBY2Nlc3NGb3JOb1BhZ2VzUm9sZSA6IGJvb2xlYW4gKSBcclxuICAgIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgbmV3IG5hdmlnYXRpb24gY29uZmlndXJhdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgUkJBQyBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIGRlZmF1bHROYXYgVGhlIGRlZmF1bHQgbmF2aWdhdGlvbiBjb25maWd1cmF0aW9uXHJcbiAgICogQHBhcmFtIHJiYWNDb25maWcgVGhlIHJiYWMgY29uZmlndXJhdGlvblxyXG4gICAqIEBwYXJhbSByb2xlcyBUaGUgcm9sZXNcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUm9sZUNvbnRyb2xsZWROYXZpZ2F0aW9uKGRlZmF1bHROYXY6IEFycmF5PE5hdk5vZGU+LCByYmFjQ29uZmlnOiBSYmFjQ29uZmlnLCByb2xlczogQXJyYXk8c3RyaW5nPik6IEFycmF5PE5hdk5vZGU+IHtcclxuICAgIGNvbnN0IGNvbnRyb2xsZWROYXY6IEFycmF5PE5hdk5vZGU+ID0gW107XHJcbiAgICAvLyBmbGF0dGVuIHJvbGUgY29uZmlnIGludG8gb25lIHNldCBvZiBwYWdlcyBmb3IgYWxsIHRoZSByb2xlcyBmb3IgdGhlIHVzZXJcclxuICAgIGNvbnN0IGZsYXR0ZW5lZFBhZ2VzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgbGV0IHJvbGVGb3VuZCA9IGZhbHNlO1xyXG4gICAgcm9sZXMuZm9yRWFjaChyb2xlID0+IHtcclxuICAgICAgY29uc3Qgcm9sZUNvbmZpZyA9IHJiYWNDb25maWcucm9sZUNvbmZpZ1tyb2xlXTtcclxuICAgICAgaWYgKHJvbGVDb25maWcpIHtcclxuICAgICAgICByb2xlRm91bmQgPSB0cnVlO1xyXG4gICAgICAgIC8vIGlmIHRoZXkgaGF2ZSBhdCBsZWFzdCBvbmUgcm9sZSB3aGVyZSB0aGV5IGhhdmUgYWNjZXNzIHRvIGV2ZXJ5dGhpbmcgZ2l2ZSBhY2Nlc3MgdG8gZXZlcnl0aGluZ1xyXG4gICAgICAgIGlmICghcm9sZUNvbmZpZy5wYWdlcyB8fCByb2xlQ29uZmlnLnBhZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZmxhdHRlbmVkUGFnZXMuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJvbGVDb25maWcucGFnZXMuZm9yRWFjaChwYWdlID0+IHtcclxuICAgICAgICAgIGZsYXR0ZW5lZFBhZ2VzLmFkZChwYWdlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZmxhdHRlbmVkUGFnZXMuc2l6ZSA9PT0gMCAmJiAhcm9sZUZvdW5kKSB7XHJcbiAgICAgIGNvbnNvbGUud2Fybihgbm8gcm9sZSBtYXRjaGluZzogJHtyb2xlcy5qb2luKCcsICcpfSBmb3VuZCwgbm8gYWNjZXNzIGlzIHByb3ZpZGVkYCk7XHJcblxyXG4gICAgICByZXR1cm4gY29udHJvbGxlZE5hdjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiB0aGUgcm9sZSBoYXMgbm8gcGFnZXMgYXNzaWduZWQgZm9yIGFjY2VzcyBhbmQgdGhlIHRva2VuIHdhcyBwYXNzZWQsIGRlbnkgYWNjZXNzIHRvIGV2ZXJ5dGhpbmdcclxuICAgIGlmIChmbGF0dGVuZWRQYWdlcy5zaXplID09PSAwICYmIHRoaXMuZGlzYWJsZUFjY2Vzc0Zvck5vUGFnZXNSb2xlKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihgVGhlIHJvbGU6ICR7cm9sZXMuam9pbignLCAnKX0gaGFzIG5vIHBhZ2UgYWNjZXNzIGRlZmluZWRgKTtcclxuXHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIG5vIHBhZ2VzLCBnaXZlIHRoZW0gYWNjZXNzIHRvIGFsbCBvZiB0aGUgc3R1ZmZcclxuICAgIGlmIChmbGF0dGVuZWRQYWdlcy5zaXplID09PSAwICYmIHJvbGVGb3VuZCkge1xyXG4gICAgICByZXR1cm4gZGVmYXVsdE5hdjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBsb29wIG92ZXIgZWFjaCBsZXZlbCAxIG5vZGVcclxuICAgIGNvbnN0IGRlZXBDb3B5RGVmYXVsdE5hdjogQXJyYXk8TmF2Tm9kZT4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZmF1bHROYXYpKTtcclxuICAgIGRlZXBDb3B5RGVmYXVsdE5hdi5mb3JFYWNoKG4xID0+IHtcclxuICAgICAgLy8gZmlyc3QgY2hlY2sgd2hpY2ggbjIgYXJlIGxpc3RlZFxyXG4gICAgICBjb25zdCBmb3VuZFN1Yk5vZGVzID0gW107XHJcbiAgICAgIG4xLnN1Yk5vZGVzLmZvckVhY2goc24gPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUm91dGVNYXRjaChBcnJheS5mcm9tKGZsYXR0ZW5lZFBhZ2VzLnZhbHVlcygpKSwgc24ucm91dGUpKSB7XHJcbiAgICAgICAgICBmb3VuZFN1Yk5vZGVzLnB1c2goc24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuMS5zdWJOb2RlcyA9IGZvdW5kU3ViTm9kZXM7XHJcbiAgICAgIC8vIGlmIGxldmVsIDIgbm9kZXMgZm91bmQgb3IgbGV2ZWwgMSBpcyBhIHJvdXRlIG1hdGNoLCBhZGQgdGhlIGxldmVsIDEgbm9kZVxyXG4gICAgICBpZiAoZm91bmRTdWJOb2Rlcy5sZW5ndGggPiAwIHx8IChuMS5yb3V0ZSAmJiB0aGlzLmlzUm91dGVNYXRjaChBcnJheS5mcm9tKGZsYXR0ZW5lZFBhZ2VzLnZhbHVlcygpKSwgbjEucm91dGUpKSkge1xyXG4gICAgICAgIGNvbnRyb2xsZWROYXYucHVzaChuMSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb250cm9sbGVkTmF2O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcm91dGUgaXMgZm91bmQgaW4gdGhlIHBhZ2VzIGFycmF5XHJcbiAgICogQHBhcmFtIHBhZ2VzIFRoZSBwYWdlc1xyXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGVcclxuICAgKi9cclxuICBwcml2YXRlIGlzUm91dGVNYXRjaChwYWdlczogQXJyYXk8c3RyaW5nPiwgcm91dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gY2hlY2sgd2lsZCBjYXJkXHJcbiAgICByZXR1cm4gcGFnZXMuc29tZShwID0+IHtcclxuICAgICAgaWYgKHAuaW5kZXhPZignKionKSA+IC0xKSB7XHJcbiAgICAgICAgY29uc3QgYmFzZVJvdXRlID0gcC5yZXBsYWNlKCcvKiovJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnKiovJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnLyoqJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnKionLCAnJylcclxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICBpZiAocm91dGUudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgLmluZGV4T2YoYmFzZVJvdXRlKSA+IC0xKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocm91dGUudG9Mb3dlckNhc2UoKSA9PT0gcC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,114 +1,114 @@
1
- import { HttpHeaders } from '@angular/common/http';
2
- import { Injectable, Optional } from '@angular/core';
3
- import { of, ReplaySubject } from 'rxjs';
4
- import { catchError, map } from 'rxjs/operators';
5
- import { DecodedAccessToken } from '../models/decoded-access-token';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../models/rbac-config";
8
- import * as i2 from "@angular/common/http";
9
- import * as i3 from "./role-nav.service";
10
- /**
11
- * The oauth 2 role service
12
- * Supplies the role using an OAuth 2.0 access token
13
- */
14
- export class Oauth2RoleService {
15
- /**
16
- * Constructs the service
17
- * @param rbacConfig The rbac configurations
18
- * @param httpClient The http client
19
- * @param roleNavService The role nav service
20
- */
21
- constructor(rbacConfig, httpClient, roleNavService) {
22
- this.rbacConfig = rbacConfig;
23
- this.httpClient = httpClient;
24
- this.roleNavService = roleNavService;
25
- /** True if configs were provided at construction */
26
- this.configsProvidedAtConstruction = false;
27
- /** The decoded access token behavior subject */
28
- this.decodeToken = new ReplaySubject(undefined);
29
- // get the token initially then update it based on injected refresh time
30
- this.decodedToken$ = this.decodeToken.asObservable();
31
- if (this.rbacConfig) {
32
- this.configsProvidedAtConstruction = true;
33
- this.init();
34
- }
35
- }
36
- /**
37
- * Gets the role controlled navigation configuration
38
- * @param defaultNav The default navigation
39
- * @param roles The roles of the user
40
- */
41
- getControlledNavObject(defaultNav, roles) {
42
- return this.roleNavService.createRoleControlledNavigation(defaultNav, this.rbacConfig, roles);
43
- }
44
- /**
45
- * Configures the service
46
- * @param rbacConfig The rbac config
47
- */
48
- configure(rbacConfig) {
49
- this.rbacConfig = rbacConfig;
50
- this.init();
51
- }
52
- /**
53
- * Determines if the current token has access to the action
54
- * @param action The action to check access for
55
- */
56
- hasActionAccess(action) {
57
- if (this.rbacConfig.disableRoleActions) {
58
- return of(true);
59
- }
60
- return this.decodedToken$.pipe(map(token => {
61
- const roles = token.claims.getRole;
62
- // if no roles, no action access
63
- if (!roles || roles.length === 0) {
64
- return false;
65
- }
66
- // flatten role config into one set of actions for all the actions for the user
67
- const flattenedActions = new Set();
68
- roles.forEach(role => {
69
- const roleConfig = this.rbacConfig.roleConfig[role];
70
- if (!roleConfig || !roleConfig.actions || !roleConfig.actions.length) {
71
- return false;
72
- }
73
- roleConfig.actions.forEach(a => flattenedActions.add(a.toLowerCase()));
74
- });
75
- return flattenedActions.has(action.toLowerCase());
76
- }));
77
- }
78
- /** Initializer logic for the service */
79
- async init() {
80
- this.rbacConfig.accessToken$.subscribe(token => {
81
- this.token = token;
82
- if (!this.token) {
83
- return;
84
- }
85
- const decoded = new DecodedAccessToken(this.token);
86
- // create the headers for the user info call with the existing access token
87
- const headers = new HttpHeaders({ Authorization: `Bearer ${this.token}`, 'Access-Control-Allow-Origin': '*' });
88
- this.httpClient.get(this.rbacConfig.userInfoEndpoint, { headers })
89
- .pipe(
90
- // map the results to the props
91
- map(res => {
92
- decoded.claims = res;
93
- this.decodeToken.next(decoded);
94
- }),
95
- // continue on error and log to console
96
- catchError(error => {
97
- console.error(`Unable to retrieve user info for: ${this.token}`, error);
98
- return of(error);
99
- }))
100
- .subscribe();
101
- });
102
- }
103
- }
104
- Oauth2RoleServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Oauth2RoleService, deps: [{ token: i1.RbacConfig, optional: true }, { token: i2.HttpClient }, { token: i3.RoleNavService }], target: i0.ɵɵFactoryTarget.Injectable });
105
- Oauth2RoleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Oauth2RoleService, providedIn: 'root' });
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: Oauth2RoleService, decorators: [{
107
- type: Injectable,
108
- args: [{
109
- providedIn: 'root'
110
- }]
111
- }], ctorParameters: function () { return [{ type: i1.RbacConfig, decorators: [{
112
- type: Optional
113
- }] }, { type: i2.HttpClient }, { type: i3.RoleNavService }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLXJvbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvcmJhYy9zZXJ2aWNlcy9vYXV0aDItcm9sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQVUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQUlwRTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBYzVCOzs7OztPQUtHO0lBQ0gsWUFDc0IsVUFBc0IsRUFDekIsVUFBc0IsRUFDdEIsY0FBOEI7UUFGM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCakQsb0RBQW9EO1FBQzVDLGtDQUE2QixHQUFZLEtBQUssQ0FBQztRQUV2RCxnREFBZ0Q7UUFDL0IsZ0JBQVcsR0FBc0MsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFtQjdGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7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QUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFeEUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7aUJBQ0osU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs4R0ExR1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFzQkksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2Tm9kZSB9IGZyb20gJy4uLy4uL25hdmlnYXRpb24vbmF2aWdhdGlvbi1hcGknO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkNsYWltcyB9IGZyb20gJy4uL21vZGVscy9hY2Nlc3MtdG9rZW4tY2xhaW1zJztcclxuaW1wb3J0IHsgUkJBQ19DT05GSUcgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRGVjb2RlZEFjY2Vzc1Rva2VuIH0gZnJvbSAnLi4vbW9kZWxzL2RlY29kZWQtYWNjZXNzLXRva2VuJztcclxuaW1wb3J0IHsgUmJhY0NvbmZpZyB9IGZyb20gJy4uL21vZGVscy9yYmFjLWNvbmZpZyc7XHJcbmltcG9ydCB7IFJvbGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLW5hdi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgb2F1dGggMiByb2xlIHNlcnZpY2VcclxuICogU3VwcGxpZXMgdGhlIHJvbGUgdXNpbmcgYW4gT0F1dGggMi4wIGFjY2VzcyB0b2tlblxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT2F1dGgyUm9sZVNlcnZpY2Uge1xyXG5cclxuICAvKiogVHJ1ZSBpZiBjb25maWdzIHdlcmUgcHJvdmlkZWQgYXQgY29uc3RydWN0aW9uICovXHJcbiAgcHJpdmF0ZSBjb25maWdzUHJvdmlkZWRBdENvbnN0cnVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVGhlIGRlY29kZWQgYWNjZXNzIHRva2VuIGJlaGF2aW9yIHN1YmplY3QgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlY29kZVRva2VuOiBSZXBsYXlTdWJqZWN0PERlY29kZWRBY2Nlc3NUb2tlbj4gPSBuZXcgUmVwbGF5U3ViamVjdCh1bmRlZmluZWQpO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWNjZXNzIHRva2VuICovXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUaGUgZGVjb2RlZCBhY2Nlc3MgdG9rZW4gKi9cclxuICBwdWJsaWMgZGVjb2RlZFRva2VuJDogT2JzZXJ2YWJsZTxEZWNvZGVkQWNjZXNzVG9rZW4+O1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIHRoZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHJiYWNDb25maWcgVGhlIHJiYWMgY29uZmlndXJhdGlvbnNcclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBUaGUgaHR0cCBjbGllbnRcclxuICAgKiBAcGFyYW0gcm9sZU5hdlNlcnZpY2UgVGhlIHJvbGUgbmF2IHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmJhY0NvbmZpZzogUmJhY0NvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9sZU5hdlNlcnZpY2U6IFJvbGVOYXZTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyBnZXQgdGhlIHRva2VuIGluaXRpYWxseSB0aGVuIHVwZGF0ZSBpdCBiYXNlZCBvbiBpbmplY3RlZCByZWZyZXNoIHRpbWVcclxuICAgIHRoaXMuZGVjb2RlZFRva2VuJCA9IHRoaXMuZGVjb2RlVG9rZW4uYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBpZiAodGhpcy5yYmFjQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnc1Byb3ZpZGVkQXRDb25zdHJ1Y3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJvbGUgY29udHJvbGxlZCBuYXZpZ2F0aW9uIGNvbmZpZ3VyYXRpb25cclxuICAgKiBAcGFyYW0gZGVmYXVsdE5hdiBUaGUgZGVmYXVsdCBuYXZpZ2F0aW9uXHJcbiAgICogQHBhcmFtIHJvbGVzIFRoZSByb2xlcyBvZiB0aGUgdXNlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb250cm9sbGVkTmF2T2JqZWN0KGRlZmF1bHROYXY6IEFycmF5PE5hdk5vZGU+LCByb2xlczogQXJyYXk8c3RyaW5nPik6IEFycmF5PE5hdk5vZGU+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucm9sZU5hdlNlcnZpY2UuY3JlYXRlUm9sZUNvbnRyb2xsZWROYXZpZ2F0aW9uKGRlZmF1bHROYXYsIHRoaXMucmJhY0NvbmZpZywgcm9sZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJlcyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSByYmFjQ29uZmlnIFRoZSByYmFjIGNvbmZpZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maWd1cmUocmJhY0NvbmZpZzogUmJhY0NvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5yYmFjQ29uZmlnID0gcmJhY0NvbmZpZztcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB0b2tlbiBoYXMgYWNjZXNzIHRvIHRoZSBhY3Rpb25cclxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gY2hlY2sgYWNjZXNzIGZvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYXNBY3Rpb25BY2Nlc3MoYWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLnJiYWNDb25maWcuZGlzYWJsZVJvbGVBY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5kZWNvZGVkVG9rZW4kLnBpcGUobWFwKHRva2VuID0+IHtcclxuICAgICAgY29uc3Qgcm9sZXMgPSB0b2tlbi5jbGFpbXMuZ2V0Um9sZTtcclxuICAgICAgLy8gaWYgbm8gcm9sZXMsIG5vIGFjdGlvbiBhY2Nlc3NcclxuICAgICAgaWYgKCFyb2xlcyB8fCByb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZmxhdHRlbiByb2xlIGNvbmZpZyBpbnRvIG9uZSBzZXQgb2YgYWN0aW9ucyBmb3IgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGUgdXNlclxyXG4gICAgICBjb25zdCBmbGF0dGVuZWRBY3Rpb25zOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICByb2xlcy5mb3JFYWNoKHJvbGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvbGVDb25maWcgPSB0aGlzLnJiYWNDb25maWcucm9sZUNvbmZpZ1tyb2xlXTtcclxuICAgICAgICBpZiAoIXJvbGVDb25maWcgfHwgIXJvbGVDb25maWcuYWN0aW9ucyB8fCAhcm9sZUNvbmZpZy5hY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb2xlQ29uZmlnLmFjdGlvbnMuZm9yRWFjaChhID0+IGZsYXR0ZW5lZEFjdGlvbnMuYWRkKGEudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBmbGF0dGVuZWRBY3Rpb25zLmhhcyhhY3Rpb24udG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXIgbG9naWMgZm9yIHRoZSBzZXJ2aWNlICovXHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0KCk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLnJiYWNDb25maWcuYWNjZXNzVG9rZW4kLnN1YnNjcmliZSh0b2tlbiA9PiB7XHJcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcclxuICAgICAgaWYgKCF0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBuZXcgRGVjb2RlZEFjY2Vzc1Rva2VuKHRoaXMudG9rZW4pO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIHRoZSBoZWFkZXJzIGZvciB0aGUgdXNlciBpbmZvIGNhbGwgd2l0aCB0aGUgZXhpc3RpbmcgYWNjZXNzIHRva2VuXHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLCAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonIH0pO1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PEFjY2Vzc1Rva2VuQ2xhaW1zPih0aGlzLnJiYWNDb25maWcudXNlckluZm9FbmRwb2ludCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAvLyBtYXAgdGhlIHJlc3VsdHMgdG8gdGhlIHByb3BzXHJcbiAgICAgICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICAgICAgZGVjb2RlZC5jbGFpbXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlVG9rZW4ubmV4dChkZWNvZGVkKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgLy8gY29udGludWUgb24gZXJyb3IgYW5kIGxvZyB0byBjb25zb2xlXHJcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIHJldHJpZXZlIHVzZXIgaW5mbyBmb3I6ICR7dGhpcy50b2tlbn1gLCBlcnJvcik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
1
+ import { HttpHeaders } from '@angular/common/http';
2
+ import { Injectable, Optional } from '@angular/core';
3
+ import { of, ReplaySubject } from 'rxjs';
4
+ import { catchError, map } from 'rxjs/operators';
5
+ import { DecodedAccessToken } from '../models/decoded-access-token';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../models/rbac-config";
8
+ import * as i2 from "@angular/common/http";
9
+ import * as i3 from "./role-nav.service";
10
+ /**
11
+ * The oauth 2 role service
12
+ * Supplies the role using an OAuth 2.0 access token
13
+ */
14
+ export class Oauth2RoleService {
15
+ /**
16
+ * Constructs the service
17
+ * @param rbacConfig The rbac configurations
18
+ * @param httpClient The http client
19
+ * @param roleNavService The role nav service
20
+ */
21
+ constructor(rbacConfig, httpClient, roleNavService) {
22
+ this.rbacConfig = rbacConfig;
23
+ this.httpClient = httpClient;
24
+ this.roleNavService = roleNavService;
25
+ /** True if configs were provided at construction */
26
+ this.configsProvidedAtConstruction = false;
27
+ /** The decoded access token behavior subject */
28
+ this.decodeToken = new ReplaySubject(undefined);
29
+ // get the token initially then update it based on injected refresh time
30
+ this.decodedToken$ = this.decodeToken.asObservable();
31
+ if (this.rbacConfig) {
32
+ this.configsProvidedAtConstruction = true;
33
+ this.init();
34
+ }
35
+ }
36
+ /**
37
+ * Gets the role controlled navigation configuration
38
+ * @param defaultNav The default navigation
39
+ * @param roles The roles of the user
40
+ */
41
+ getControlledNavObject(defaultNav, roles) {
42
+ return this.roleNavService.createRoleControlledNavigation(defaultNav, this.rbacConfig, roles);
43
+ }
44
+ /**
45
+ * Configures the service
46
+ * @param rbacConfig The rbac config
47
+ */
48
+ configure(rbacConfig) {
49
+ this.rbacConfig = rbacConfig;
50
+ this.init();
51
+ }
52
+ /**
53
+ * Determines if the current token has access to the action
54
+ * @param action The action to check access for
55
+ */
56
+ hasActionAccess(action) {
57
+ if (this.rbacConfig.disableRoleActions) {
58
+ return of(true);
59
+ }
60
+ return this.decodedToken$.pipe(map(token => {
61
+ const roles = token.claims.getRole;
62
+ // if no roles, no action access
63
+ if (!roles || roles.length === 0) {
64
+ return false;
65
+ }
66
+ // flatten role config into one set of actions for all the actions for the user
67
+ const flattenedActions = new Set();
68
+ roles.forEach(role => {
69
+ const roleConfig = this.rbacConfig.roleConfig[role];
70
+ if (!roleConfig || !roleConfig.actions || !roleConfig.actions.length) {
71
+ return false;
72
+ }
73
+ roleConfig.actions.forEach(a => flattenedActions.add(a.toLowerCase()));
74
+ });
75
+ return flattenedActions.has(action.toLowerCase());
76
+ }));
77
+ }
78
+ /** Initializer logic for the service */
79
+ async init() {
80
+ this.rbacConfig.accessToken$.subscribe(token => {
81
+ this.token = token;
82
+ if (!this.token) {
83
+ return;
84
+ }
85
+ const decoded = new DecodedAccessToken(this.token);
86
+ // create the headers for the user info call with the existing access token
87
+ const headers = new HttpHeaders({ Authorization: `Bearer ${this.token}`, 'Access-Control-Allow-Origin': '*' });
88
+ this.httpClient.get(this.rbacConfig.userInfoEndpoint, { headers })
89
+ .pipe(
90
+ // map the results to the props
91
+ map(res => {
92
+ decoded.claims = res;
93
+ this.decodeToken.next(decoded);
94
+ }),
95
+ // continue on error and log to console
96
+ catchError(error => {
97
+ console.error(`Unable to retrieve user info for: ${this.token}`, error);
98
+ return of(error);
99
+ }))
100
+ .subscribe();
101
+ });
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Oauth2RoleService, deps: [{ token: i1.RbacConfig, optional: true }, { token: i2.HttpClient }, { token: i3.RoleNavService }], target: i0.ɵɵFactoryTarget.Injectable }); }
104
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Oauth2RoleService, providedIn: 'root' }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: Oauth2RoleService, decorators: [{
107
+ type: Injectable,
108
+ args: [{
109
+ providedIn: 'root'
110
+ }]
111
+ }], ctorParameters: () => [{ type: i1.RbacConfig, decorators: [{
112
+ type: Optional
113
+ }] }, { type: i2.HttpClient }, { type: i3.RoleNavService }] });
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgyLXJvbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvcmJhYy9zZXJ2aWNlcy9vYXV0aDItcm9sZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQVUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7OztBQUlwRTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBYzVCOzs7OztPQUtHO0lBQ0gsWUFDc0IsVUFBc0IsRUFDekIsVUFBc0IsRUFDdEIsY0FBOEI7UUFGM0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXJCakQsb0RBQW9EO1FBQzVDLGtDQUE2QixHQUFZLEtBQUssQ0FBQztRQUV2RCxnREFBZ0Q7UUFDL0IsZ0JBQVcsR0FBc0MsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFtQjdGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7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QUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFeEUsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7aUJBQ0osU0FBUyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFHVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFzQkksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTmF2Tm9kZSB9IGZyb20gJy4uLy4uL25hdmlnYXRpb24vbmF2aWdhdGlvbi1hcGknO1xyXG5pbXBvcnQgeyBBY2Nlc3NUb2tlbkNsYWltcyB9IGZyb20gJy4uL21vZGVscy9hY2Nlc3MtdG9rZW4tY2xhaW1zJztcclxuaW1wb3J0IHsgUkJBQ19DT05GSUcgfSBmcm9tICcuLi9tb2RlbHMvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgRGVjb2RlZEFjY2Vzc1Rva2VuIH0gZnJvbSAnLi4vbW9kZWxzL2RlY29kZWQtYWNjZXNzLXRva2VuJztcclxuaW1wb3J0IHsgUmJhY0NvbmZpZyB9IGZyb20gJy4uL21vZGVscy9yYmFjLWNvbmZpZyc7XHJcbmltcG9ydCB7IFJvbGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9yb2xlLW5hdi5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgb2F1dGggMiByb2xlIHNlcnZpY2VcclxuICogU3VwcGxpZXMgdGhlIHJvbGUgdXNpbmcgYW4gT0F1dGggMi4wIGFjY2VzcyB0b2tlblxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgT2F1dGgyUm9sZVNlcnZpY2Uge1xyXG5cclxuICAvKiogVHJ1ZSBpZiBjb25maWdzIHdlcmUgcHJvdmlkZWQgYXQgY29uc3RydWN0aW9uICovXHJcbiAgcHJpdmF0ZSBjb25maWdzUHJvdmlkZWRBdENvbnN0cnVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogVGhlIGRlY29kZWQgYWNjZXNzIHRva2VuIGJlaGF2aW9yIHN1YmplY3QgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlY29kZVRva2VuOiBSZXBsYXlTdWJqZWN0PERlY29kZWRBY2Nlc3NUb2tlbj4gPSBuZXcgUmVwbGF5U3ViamVjdCh1bmRlZmluZWQpO1xyXG5cclxuICAvKiogVGhlIGN1cnJlbnQgYWNjZXNzIHRva2VuICovXHJcbiAgcHVibGljIHRva2VuOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBUaGUgZGVjb2RlZCBhY2Nlc3MgdG9rZW4gKi9cclxuICBwdWJsaWMgZGVjb2RlZFRva2VuJDogT2JzZXJ2YWJsZTxEZWNvZGVkQWNjZXNzVG9rZW4+O1xyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIHRoZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHJiYWNDb25maWcgVGhlIHJiYWMgY29uZmlndXJhdGlvbnNcclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBUaGUgaHR0cCBjbGllbnRcclxuICAgKiBAcGFyYW0gcm9sZU5hdlNlcnZpY2UgVGhlIHJvbGUgbmF2IHNlcnZpY2VcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmJhY0NvbmZpZzogUmJhY0NvbmZpZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm9sZU5hdlNlcnZpY2U6IFJvbGVOYXZTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyBnZXQgdGhlIHRva2VuIGluaXRpYWxseSB0aGVuIHVwZGF0ZSBpdCBiYXNlZCBvbiBpbmplY3RlZCByZWZyZXNoIHRpbWVcclxuICAgIHRoaXMuZGVjb2RlZFRva2VuJCA9IHRoaXMuZGVjb2RlVG9rZW4uYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBpZiAodGhpcy5yYmFjQ29uZmlnKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnc1Byb3ZpZGVkQXRDb25zdHJ1Y3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJvbGUgY29udHJvbGxlZCBuYXZpZ2F0aW9uIGNvbmZpZ3VyYXRpb25cclxuICAgKiBAcGFyYW0gZGVmYXVsdE5hdiBUaGUgZGVmYXVsdCBuYXZpZ2F0aW9uXHJcbiAgICogQHBhcmFtIHJvbGVzIFRoZSByb2xlcyBvZiB0aGUgdXNlclxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb250cm9sbGVkTmF2T2JqZWN0KGRlZmF1bHROYXY6IEFycmF5PE5hdk5vZGU+LCByb2xlczogQXJyYXk8c3RyaW5nPik6IEFycmF5PE5hdk5vZGU+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucm9sZU5hdlNlcnZpY2UuY3JlYXRlUm9sZUNvbnRyb2xsZWROYXZpZ2F0aW9uKGRlZmF1bHROYXYsIHRoaXMucmJhY0NvbmZpZywgcm9sZXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJlcyB0aGUgc2VydmljZVxyXG4gICAqIEBwYXJhbSByYmFjQ29uZmlnIFRoZSByYmFjIGNvbmZpZ1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maWd1cmUocmJhY0NvbmZpZzogUmJhY0NvbmZpZyk6IHZvaWQge1xyXG4gICAgdGhpcy5yYmFjQ29uZmlnID0gcmJhY0NvbmZpZztcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB0b2tlbiBoYXMgYWNjZXNzIHRvIHRoZSBhY3Rpb25cclxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gY2hlY2sgYWNjZXNzIGZvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYXNBY3Rpb25BY2Nlc3MoYWN0aW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGlmICh0aGlzLnJiYWNDb25maWcuZGlzYWJsZVJvbGVBY3Rpb25zKSB7XHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5kZWNvZGVkVG9rZW4kLnBpcGUobWFwKHRva2VuID0+IHtcclxuICAgICAgY29uc3Qgcm9sZXMgPSB0b2tlbi5jbGFpbXMuZ2V0Um9sZTtcclxuICAgICAgLy8gaWYgbm8gcm9sZXMsIG5vIGFjdGlvbiBhY2Nlc3NcclxuICAgICAgaWYgKCFyb2xlcyB8fCByb2xlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZmxhdHRlbiByb2xlIGNvbmZpZyBpbnRvIG9uZSBzZXQgb2YgYWN0aW9ucyBmb3IgYWxsIHRoZSBhY3Rpb25zIGZvciB0aGUgdXNlclxyXG4gICAgICBjb25zdCBmbGF0dGVuZWRBY3Rpb25zOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gICAgICByb2xlcy5mb3JFYWNoKHJvbGUgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJvbGVDb25maWcgPSB0aGlzLnJiYWNDb25maWcucm9sZUNvbmZpZ1tyb2xlXTtcclxuICAgICAgICBpZiAoIXJvbGVDb25maWcgfHwgIXJvbGVDb25maWcuYWN0aW9ucyB8fCAhcm9sZUNvbmZpZy5hY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb2xlQ29uZmlnLmFjdGlvbnMuZm9yRWFjaChhID0+IGZsYXR0ZW5lZEFjdGlvbnMuYWRkKGEudG9Mb3dlckNhc2UoKSkpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBmbGF0dGVuZWRBY3Rpb25zLmhhcyhhY3Rpb24udG9Mb3dlckNhc2UoKSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pdGlhbGl6ZXIgbG9naWMgZm9yIHRoZSBzZXJ2aWNlICovXHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0KCk6IFByb21pc2U8YW55PiB7XHJcbiAgICB0aGlzLnJiYWNDb25maWcuYWNjZXNzVG9rZW4kLnN1YnNjcmliZSh0b2tlbiA9PiB7XHJcbiAgICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcclxuICAgICAgaWYgKCF0aGlzLnRva2VuKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBuZXcgRGVjb2RlZEFjY2Vzc1Rva2VuKHRoaXMudG9rZW4pO1xyXG5cclxuICAgICAgLy8gY3JlYXRlIHRoZSBoZWFkZXJzIGZvciB0aGUgdXNlciBpbmZvIGNhbGwgd2l0aCB0aGUgZXhpc3RpbmcgYWNjZXNzIHRva2VuXHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeyBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy50b2tlbn1gLCAnQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJzogJyonIH0pO1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PEFjY2Vzc1Rva2VuQ2xhaW1zPih0aGlzLnJiYWNDb25maWcudXNlckluZm9FbmRwb2ludCwgeyBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAvLyBtYXAgdGhlIHJlc3VsdHMgdG8gdGhlIHByb3BzXHJcbiAgICAgICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICAgICAgZGVjb2RlZC5jbGFpbXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlVG9rZW4ubmV4dChkZWNvZGVkKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgLy8gY29udGludWUgb24gZXJyb3IgYW5kIGxvZyB0byBjb25zb2xlXHJcbiAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIHJldHJpZXZlIHVzZXIgaW5mbyBmb3I6ICR7dGhpcy50b2tlbn1gLCBlcnJvcik7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
- /** The role navigation service interface */
2
- export class RoleNavService {
3
- }
1
+ /** The role navigation service interface */
2
+ export class RoleNavService {
3
+ }
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1uYXYuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvcmJhYy9zZXJ2aWNlcy9yb2xlLW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDRDQUE0QztBQUM1QyxNQUFNLE9BQWdCLGNBQWM7Q0FRbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZOb2RlIH0gZnJvbSAnLi4vLi4vbmF2aWdhdGlvbi9tb2RlbHMvbmF2aWdhdGlvbic7XHJcbmltcG9ydCB7IFJiYWNDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvcmJhYy1jb25maWcnO1xyXG5cclxuLyoqIFRoZSByb2xlIG5hdmlnYXRpb24gc2VydmljZSBpbnRlcmZhY2UgKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJvbGVOYXZTZXJ2aWNlIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBuYXZpZ2F0aW9uIGNvbmZpZyB1c2luZyB0aGUgcHJvdmlkZWQgZGVmYXVsdCBuYXZpZ2F0aW9uIGNvbmZpZyBhbmQgdGhlIFJBQkMgY29uZmlndXJhdGlvblxyXG4gICAgICogQHBhcmFtIGRlZmF1bHROYXYgVGhlIGRlZmF1bHQgbmF2aWdhdGlvbiBjb25maWdcclxuICAgICAqIEBwYXJhbSByYmFjQ29uZmlnIFRoZSByYmFjIGNvbmZpZyB1c2VkIGZvciBsaW1pdGluZyB0aGUgbmF2aWdhdGlvblxyXG4gICAgICogQHBhcmFtIHJvbGVzIHRoZSBhcnJheSBvZiByb2xlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgY3JlYXRlUm9sZUNvbnRyb2xsZWROYXZpZ2F0aW9uKGRlZmF1bHROYXY6IEFycmF5PE5hdk5vZGU+LCByYmFjQ29uZmlnOiBSYmFjQ29uZmlnLCByb2xlczogQXJyYXk8c3RyaW5nPik6IEFycmF5PE5hdk5vZGU+O1xyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { InjectionToken } from '@angular/core';
2
- /** Choose to disable access to all pages for roles with no pages */
3
- export const DISABLE_ACCESS_FOR_NO_PAGES_ROLE = new InjectionToken('disable-access-for-no-pages');
1
+ import { InjectionToken } from '@angular/core';
2
+ /** Choose to disable access to all pages for roles with no pages */
3
+ export const DISABLE_ACCESS_FOR_NO_PAGES_ROLE = new InjectionToken('disable-access-for-no-pages');
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9yYmFjL3NlcnZpY2VzL3Rva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBNEIsSUFBSSxjQUFjLENBQVUsNkJBQTZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKiogQ2hvb3NlIHRvIGRpc2FibGUgYWNjZXNzIHRvIGFsbCBwYWdlcyBmb3Igcm9sZXMgd2l0aCBubyBwYWdlcyAqL1xyXG5leHBvcnQgY29uc3QgRElTQUJMRV9BQ0NFU1NfRk9SX05PX1BBR0VTX1JPTEU6IEluamVjdGlvblRva2VuPGJvb2xlYW4+ID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdkaXNhYmxlLWFjY2Vzcy1mb3Itbm8tcGFnZXMnKTsiXX0=