@cuby-ui/core 0.0.287 → 0.0.290
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
- package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
- package/esm2022/services/auth.service.mjs +9 -17
- package/esm2022/services/browser-auth.service.mjs +2 -2
- package/esm2022/services/token.service.mjs +97 -0
- package/fesm2022/cuby-ui-core.mjs +99 -15
- package/fesm2022/cuby-ui-core.mjs.map +1 -1
- package/package.json +4 -4
- package/services/auth.service.d.ts +4 -5
- package/services/token.service.d.ts +17 -0
- package/widgets/categories/components/category-item/category-item.component.d.ts +2 -2
|
@@ -4,7 +4,7 @@ export declare class CuiSidebarHeaderComponent {
|
|
|
4
4
|
private readonly document;
|
|
5
5
|
private readonly sidebarService;
|
|
6
6
|
protected readonly isOpened: import("@angular/core").Signal<boolean>;
|
|
7
|
-
protected readonly buttonIcon: import("@angular/core").Signal<"cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoard" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "
|
|
7
|
+
protected readonly buttonIcon: import("@angular/core").Signal<"cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoard" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello">;
|
|
8
8
|
readonly headerSlot: import("@angular/core").InputSignal<TemplateRef<unknown>>;
|
|
9
9
|
protected onSwitch(event: MouseEvent): void;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuiSidebarHeaderComponent, never>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
export declare class CuiSidebarNavigationItemComponent {
|
|
3
3
|
readonly text: import("@angular/core").InputSignal<string>;
|
|
4
|
-
readonly icon: import("@angular/core").InputSignal<"cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoard" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "
|
|
4
|
+
readonly icon: import("@angular/core").InputSignal<"cuiIconLoading" | "cuiIconCheck" | "cuiIconCheckSm" | "cuiIconCheckCircle" | "cuiIconCheckCircleSm" | "cuiIconCheckCircleV2" | "cuiIconMoreVertical" | "cuiIconMoreVerticalSm" | "cuiIconTrash" | "cuiIconTrashSm" | "cuiIconEdit" | "cuiIconEditSm" | "cuiIconArrowSortSm" | "cuiIconX" | "cuiIconXSm" | "cuiIconXCircle" | "cuiIconXCircleSm" | "cuiIconClear" | "cuiIconClearSm" | "cuiIconEye" | "cuiIconEyeSm" | "cuiIconEyeOff" | "cuiIconEyeOffSm" | "cuiIconChevronUp" | "cuiIconChevronUpSm" | "cuiIconChevronRight" | "cuiIconChevronRightSm" | "cuiIconChevronDown" | "cuiIconChevronDownSm" | "cuiIconChevronLeft" | "cuiIconChevronLeftSm" | "cuiIconChevronsRight" | "cuiIconChevronsRightSm" | "cuiIconChevronsLeft" | "cuiIconChevronsLeftSm" | "cuiIconChevronsSwitch" | "cuiIconDatabase" | "cuiIconDatabaseSm" | "cuiIconHome" | "cuiIconHomeSm" | "cuiIconUser" | "cuiIconUserSm" | "cuiIconUsers" | "cuiIconUsersBg" | "cuiIconUsersSm" | "cuiIconUserPlus" | "cuiIconUserPlusSm" | "cuiIconFormula" | "cuiIconSettings" | "cuiIconSettingsSm" | "cuiIconSettingsBold" | "cuiIconCopy" | "cuiIconCopySm" | "cuiIconSidebar" | "cuiIconSidebarSm" | "cuiIconChart" | "cuiIconFolder" | "cuiIconFolderSm" | "cuiIconFolderOpen" | "cuiIconFolderOpenSm" | "cuiIconPlus" | "cuiIconPlusSm" | "cuiIconPlusCircle" | "cuiIconFiltersLines" | "cuiIconFiltersLinesSm" | "cuiIconSearch" | "cuiIconSearchSm" | "cuiIconGrid" | "cuiIconGridSm" | "cuiIconList" | "cuiIconListSm" | "cuiIconProgress" | "cuiIconSortAZSm" | "cuiIconFlagBold" | "cuiIconFileText" | "cuiIconFileTextSm" | "cuiIconLink" | "cuiIconExternalLinkSm" | "cuiIconLinkBroken" | "cuiIconLinkBrokenSm" | "cuiIconClock" | "cuiIconClockSm" | "cuiIconInfo" | "cuiIconInfoSm" | "cuiIconInfoCircle" | "cuiIconInfoCircleBg" | "cuiIconAlertTriangle" | "cuiIconAlertTriangleSm" | "cuiIconAlertCircle" | "cuiIcon2Layers" | "cuiIcon2LayersSm" | "cuiIcon3Layers" | "cuiIcon3LayersSm" | "cuiIconLearningSm" | "cuiIconBellSm" | "cuiIconMessageCircle" | "cuiIconMessageCircleSm" | "cuiIconSlashDivider" | "cuiIconCaretDownFillXxs" | "cuiIconCaretDownFill" | "cuiIconDragHandleDots" | "cuiIconPlayCircle" | "cuiIconPlayCircleSm" | "cuiIconClipBoard" | "cuiIconUpload" | "cuiIconUploadSm" | "cuiIconMaximize" | "cuiIconMaximizeSm" | "cuiIconArrowUpRight" | "cuiIconArrowUpRightSm" | "cuiIconAddBranchSm" | "cuiIconBranch" | "cuiIconBranchSm" | "cuiIconPaperclip" | "cuiIconPaperclipSm" | "cuiIconToolsSm" | "cuiIconPartsSm" | "cuiIconEquipmentSm" | "cuiIconPrimitive" | "cuiIconPrimitiveSm" | "cuiIconSpool" | "cuiIconSpoolSm" | "cuiIconTank" | "cuiIconTankSm" | "cuiIconAssembly" | "cuiIconAssemblySm" | "cuiIconVariant" | "cuiIconVariantSm" | "cuiIconRichText" | "cuiIconRichTextSm" | "cuiIconChecklist" | "cuiIconRefreshCcwSm" | "cuiIconRefreshCcw" | "cuiIconBarChartSm" | "cuiIconBarChart" | "cuiIconCurvedArrow" | "cuiIconBulletFillSm" | "cuiIconBulletSm" | "cuiIconArrowRight" | "cuiIconArrowRightSm" | "cuiIconImage" | "cuiIconCutLinearSm" | "cuiIconCutLinear" | "cuiIconForkLift" | "cuiIconForkLiftSm" | "cuiIconPartPrimitive" | "cuiIconPartPrimitiveSm" | "cuiIconChecklistsSm" | "cuiIconViewInAr" | "cuiIconViewInArSm" | "cuiIconFloorplanSolid" | "cuiIconFloorplanSolidSm" | "cuiIconMoon" | "cuiIconMoonSm" | "cuiIconSunSm" | "cuiIconTool" | "cuiIconToolSm" | "cuiIconCamera" | "cuiIconPanModeSm" | "cuiIconCrane" | "cuiIconCraneSm" | "cuiIconBin" | "cuiIconBinSm" | "cuiIconAuxSm" | "cuiIcon5sSm" | "cuiIconRackSm" | "cuiIconComputerChipSm" | "cuiIconRack" | "cuiIconAccessories" | "cuiIconAccessoriesSm" | "cuiIconLogisticVehicle" | "cuiIconLogisticVehicleSm" | "cuiIconCollapseSm" | "cuiIconBookOpenSm" | "cuiIconBriefcaseSm" | "cuiIconCreditCardSm" | "cuiIconTrelloSm" | "cuiIconBookOpen" | "cuiIconBriefcase" | "cuiIconCreditCard" | "cuiIconTrello" | undefined>;
|
|
5
5
|
readonly active: import("@angular/core").InputSignal<boolean | undefined>;
|
|
6
6
|
readonly isOpen: import("@angular/core").InputSignal<boolean | undefined>;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<CuiSidebarNavigationItemComponent, never>;
|
|
@@ -1,28 +1,20 @@
|
|
|
1
|
-
import { OAuthInfoEvent
|
|
1
|
+
import { OAuthInfoEvent } from 'angular-oauth2-oidc';
|
|
2
2
|
import { filter } from 'rxjs';
|
|
3
|
-
|
|
3
|
+
import { CuiTokenBase } from './token.service';
|
|
4
|
+
export class CuiAuthBase extends CuiTokenBase {
|
|
4
5
|
createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params) {
|
|
5
6
|
return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);
|
|
6
7
|
}
|
|
7
|
-
useCheckTokenFlow(loginCallback) {
|
|
8
|
-
const
|
|
8
|
+
async useCheckTokenFlow(loginCallback) {
|
|
9
|
+
const isExpired = this.checkIsTokenExpired();
|
|
9
10
|
const isRefreshTokenExist = this.getRefreshToken();
|
|
10
|
-
if (
|
|
11
|
-
return
|
|
11
|
+
if (!isRefreshTokenExist) {
|
|
12
|
+
return loginCallback();
|
|
12
13
|
}
|
|
13
|
-
return loginCallback();
|
|
14
|
-
}
|
|
15
|
-
checkIsTokenExpired() {
|
|
16
|
-
const expiredTime = this.getAccessTokenExpiration();
|
|
17
|
-
const currentTime = Date.now();
|
|
18
|
-
return currentTime >= expiredTime;
|
|
19
|
-
}
|
|
20
|
-
refreshTokenWithExpiredChecking() {
|
|
21
|
-
const isExpired = this.checkIsTokenExpired();
|
|
22
14
|
if (!isExpired) {
|
|
23
15
|
return;
|
|
24
16
|
}
|
|
25
|
-
this.refreshToken();
|
|
17
|
+
return await this.refreshToken();
|
|
26
18
|
}
|
|
27
19
|
initAuthRefreshEvents(loginCallback) {
|
|
28
20
|
this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {
|
|
@@ -36,4 +28,4 @@ export class CuiAuthBase extends OAuthService {
|
|
|
36
28
|
});
|
|
37
29
|
}
|
|
38
30
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFlBQVk7SUFDekIsY0FBYyxDQUFDLEtBQWMsRUFBRSxTQUFrQixFQUFFLGlCQUEwQixFQUFFLFFBQWtCLEVBQUUsTUFBZTtRQUM5SCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUF5QjtRQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVuRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2QixPQUFPLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDYixPQUFPO1FBQ1gsQ0FBQztRQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLGFBQXlCO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckYsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUNsRSxPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO2dCQUN6RCxPQUFPLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFFRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPQXV0aEluZm9FdmVudCwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdWlUb2tlbkJhc2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgQ3VpQXV0aEJhc2UgZXh0ZW5kcyBDdWlUb2tlbkJhc2Uge1xuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVMb2dpblVybChzdGF0ZT86IHN0cmluZywgbG9naW5IaW50Pzogc3RyaW5nLCBjdXN0b21SZWRpcmVjdFVyaT86IHN0cmluZywgbm9Qcm9tcHQ/OiBib29sZWFuLCBwYXJhbXM/OiBvYmplY3QpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuY3JlYXRlTG9naW5Vcmwoc3RhdGUsIGxvZ2luSGludCwgY3VzdG9tUmVkaXJlY3RVcmksIG5vUHJvbXB0LCBwYXJhbXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB1c2VDaGVja1Rva2VuRmxvdyhsb2dpbkNhbGxiYWNrOiAoKSA9PiB2b2lkKTogUHJvbWlzZTxUb2tlblJlc3BvbnNlIHwgdm9pZD4ge1xuICAgICAgICBjb25zdCBpc0V4cGlyZWQgPSB0aGlzLmNoZWNrSXNUb2tlbkV4cGlyZWQoKTtcbiAgICAgICAgY29uc3QgaXNSZWZyZXNoVG9rZW5FeGlzdCA9IHRoaXMuZ2V0UmVmcmVzaFRva2VuKCk7XG5cbiAgICAgICAgaWYgKCFpc1JlZnJlc2hUb2tlbkV4aXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9naW5DYWxsYmFjaygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0V4cGlyZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0QXV0aFJlZnJlc2hFdmVudHMobG9naW5DYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV2ZW50cy5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhJbmZvRXZlbnQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudHlwZSAhPT0gJ3Rva2VuX2V4cGlyZXMnIHx8IGV2ZW50LmluZm8gIT09ICdhY2Nlc3NfdG9rZW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzVmFsaWRBY2Nlc3NUb2tlbigpIHx8ICF0aGlzLmdldFJlZnJlc2hUb2tlbigpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvZ2luQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
|
|
@@ -15,7 +15,7 @@ export class CuiBrowserAuthService extends CuiAuthBase {
|
|
|
15
15
|
await this.loadDiscoveryDocument();
|
|
16
16
|
await this.tryLogin();
|
|
17
17
|
this.initAuthRefreshEvents(this.initLoginFlow.bind(this));
|
|
18
|
-
this.useCheckTokenFlow(this.initLoginFlow.bind(this));
|
|
18
|
+
await this.useCheckTokenFlow(this.initLoginFlow.bind(this));
|
|
19
19
|
this.router.navigateByUrl(this.location.path(false).split('?')[0]);
|
|
20
20
|
}
|
|
21
21
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiBrowserAuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27
27
|
providedIn: 'root'
|
|
28
28
|
}]
|
|
29
29
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1hdXRoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL2Jyb3dzZXItYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUs3QyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsV0FBVztJQUh0RDs7UUFJcUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBZWhEO0lBYlUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFM0IsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUxRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7K0dBaEJRLHFCQUFxQjttSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzRGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IEF1dGhDb25maWcgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcblxuaW1wb3J0IHsgQ3VpQXV0aEJhc2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VpQnJvd3NlckF1dGhTZXJ2aWNlIGV4dGVuZHMgQ3VpQXV0aEJhc2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdEF1dGgoYXV0aENvbmZpZzogQXV0aENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLnNldFN0b3JhZ2UobG9jYWxTdG9yYWdlKTtcbiAgICAgICAgdGhpcy5jb25maWd1cmUoYXV0aENvbmZpZyk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkRGlzY292ZXJ5RG9jdW1lbnQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy50cnlMb2dpbigpO1xuXG4gICAgICAgIHRoaXMuaW5pdEF1dGhSZWZyZXNoRXZlbnRzKHRoaXMuaW5pdExvZ2luRmxvdy5iaW5kKHRoaXMpKTtcblxuICAgICAgICBhd2FpdCB0aGlzLnVzZUNoZWNrVG9rZW5GbG93KHRoaXMuaW5pdExvZ2luRmxvdy5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMubG9jYXRpb24ucGF0aChmYWxzZSkuc3BsaXQoJz8nKVswXSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { inject, signal } from '@angular/core';
|
|
2
|
+
import { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';
|
|
3
|
+
import { CuiActivityTokenExchangeApiService } from '@cuby-ui/api';
|
|
4
|
+
import { from, map, of, switchMap, tap } from 'rxjs';
|
|
5
|
+
class CuiToken extends OAuthService {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.tokenData = signal({});
|
|
9
|
+
}
|
|
10
|
+
getTokenDataFromStore(token) {
|
|
11
|
+
const tokenData = this.tokenData()[token];
|
|
12
|
+
if (tokenData) {
|
|
13
|
+
return tokenData;
|
|
14
|
+
}
|
|
15
|
+
const currentTokenData = this.parseToken(token);
|
|
16
|
+
this.tokenData.set({ [token]: currentTokenData });
|
|
17
|
+
return currentTokenData;
|
|
18
|
+
}
|
|
19
|
+
parseToken(token) {
|
|
20
|
+
try {
|
|
21
|
+
const base64Url = token.split('.')[1];
|
|
22
|
+
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
23
|
+
return JSON.parse(atob(base64));
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
throw new Error('Invalid token');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class CuiTokenBase extends CuiToken {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.activityTokenExchangeApiService = inject(CuiActivityTokenExchangeApiService);
|
|
34
|
+
}
|
|
35
|
+
getAccessTokenData() {
|
|
36
|
+
const token = this.getAccessToken();
|
|
37
|
+
if (!token) {
|
|
38
|
+
throw new Error('No access token found');
|
|
39
|
+
}
|
|
40
|
+
return this.getTokenDataFromStore(token);
|
|
41
|
+
}
|
|
42
|
+
checkIsTokenExpired() {
|
|
43
|
+
const token = this.getAccessToken();
|
|
44
|
+
if (!token) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
const expiredTime = this.getAccessTokenExpiration();
|
|
48
|
+
const currentTime = Date.now();
|
|
49
|
+
return currentTime >= expiredTime;
|
|
50
|
+
}
|
|
51
|
+
exchangeToken(params) {
|
|
52
|
+
return new Promise((resolve, reject) => this.activityTokenExchangeApiService
|
|
53
|
+
.tokenExchange(params)
|
|
54
|
+
.pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
|
|
55
|
+
.subscribe({
|
|
56
|
+
next: (tokenResponse) => {
|
|
57
|
+
this.setTokenResponse(tokenResponse);
|
|
58
|
+
resolve(tokenResponse);
|
|
59
|
+
},
|
|
60
|
+
error: (error) => {
|
|
61
|
+
this.logger.error('Error exchanging token', error);
|
|
62
|
+
reject(error);
|
|
63
|
+
}
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
// TODO: override refreshToken with custom refresh token request to the backend
|
|
67
|
+
refreshToken() {
|
|
68
|
+
return new Promise((resolve, reject) => this.activityTokenExchangeApiService
|
|
69
|
+
.tokenRefresh()
|
|
70
|
+
.pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
|
|
71
|
+
.subscribe({
|
|
72
|
+
next: (tokenResponse) => {
|
|
73
|
+
this.setTokenResponse(tokenResponse);
|
|
74
|
+
resolve(tokenResponse);
|
|
75
|
+
},
|
|
76
|
+
error: (error) => {
|
|
77
|
+
this.logger.error('Error refreshing token', error);
|
|
78
|
+
this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));
|
|
79
|
+
reject(error);
|
|
80
|
+
}
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
setTokenResponse(tokenResponse) {
|
|
84
|
+
const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec;
|
|
85
|
+
this.debug('tokenResponse', tokenResponse);
|
|
86
|
+
this.storeAccessTokenResponse(tokenResponse.access_token, tokenResponse.refresh_token, expiresIn, tokenResponse.scope);
|
|
87
|
+
this.eventsSubject.next(new OAuthSuccessEvent('token_received'));
|
|
88
|
+
this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));
|
|
89
|
+
}
|
|
90
|
+
setIdToken(tokenResponse) {
|
|
91
|
+
if (!this.oidc || !tokenResponse.id_token) {
|
|
92
|
+
return of(tokenResponse);
|
|
93
|
+
}
|
|
94
|
+
return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(tap((result) => this.storeIdToken(result)), map(() => tokenResponse));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0NBQWtDLEVBQStCLE1BQU0sY0FBYyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE1BQWUsUUFBUyxTQUFRLFlBQVk7SUFBNUM7O1FBQ3FCLGNBQVMsR0FBRyxNQUFNLENBQW1DLEVBQUUsQ0FBQyxDQUFDO0lBMEI5RSxDQUFDO0lBeEJhLHFCQUFxQixDQUFDLEtBQWE7UUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFbEQsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxN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Q0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTZXJ2aWNlLCBPQXV0aFN1Y2Nlc3NFdmVudCwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgQ3VpQWN0aXZpdHlUb2tlbkV4Y2hhbmdlQXBpU2VydmljZSwgQ3VpVG9rZW5FeGNoYW5nZVJlcXVlc3RCb2R5IH0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB7IGZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmFic3RyYWN0IGNsYXNzIEN1aVRva2VuIGV4dGVuZHMgT0F1dGhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuRGF0YSA9IHNpZ25hbDx7IFtrZXk6IHN0cmluZ106IFRva2VuUmVzcG9uc2UgfT4oe30pO1xuXG4gICAgcHJvdGVjdGVkIGdldFRva2VuRGF0YUZyb21TdG9yZSh0b2tlbjogc3RyaW5nKTogVG9rZW5SZXNwb25zZSB7XG4gICAgICAgIGNvbnN0IHRva2VuRGF0YSA9IHRoaXMudG9rZW5EYXRhKClbdG9rZW5dO1xuXG4gICAgICAgIGlmICh0b2tlbkRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbkRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW5EYXRhID0gdGhpcy5wYXJzZVRva2VuKHRva2VuKTtcblxuICAgICAgICB0aGlzLnRva2VuRGF0YS5zZXQoeyBbdG9rZW5dOiBjdXJyZW50VG9rZW5EYXRhIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50VG9rZW5EYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VUb2tlbih0b2tlbjogc3RyaW5nKTogVG9rZW5SZXNwb25zZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gYmFzZTY0VXJsLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XG5cbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IoYmFzZTY0KSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRva2VuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDdWlUb2tlbkJhc2UgZXh0ZW5kcyBDdWlUb2tlbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eVRva2VuRXhjaGFuZ2VBcGlTZXJ2aWNlID0gaW5qZWN0KEN1aUFjdGl2aXR5VG9rZW5FeGNoYW5nZUFwaVNlcnZpY2UpO1xuXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuRGF0YTxUIGV4dGVuZHMgVG9rZW5SZXNwb25zZSA9IFRva2VuUmVzcG9uc2U+KCk6IFQge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFjY2VzcyB0b2tlbiBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5EYXRhRnJvbVN0b3JlKHRva2VuKSBhcyBUO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0lzVG9rZW5FeHBpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4cGlyZWRUaW1lID0gdGhpcy5nZXRBY2Nlc3NUb2tlbkV4cGlyYXRpb24oKTtcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50VGltZSA+PSBleHBpcmVkVGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhjaGFuZ2VUb2tlbihwYXJhbXM6IEN1aVRva2VuRXhjaGFuZ2VSZXF1ZXN0Qm9keSk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlUb2tlbkV4Y2hhbmdlQXBpU2VydmljZVxuICAgICAgICAgICAgICAgIC50b2tlbkV4Y2hhbmdlKHBhcmFtcylcbiAgICAgICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHRva2VuUmVzcG9uc2UpID0+IHRoaXMuc2V0SWRUb2tlbih0b2tlblJlc3BvbnNlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBleGNoYW5naW5nIHRva2VuJywgZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBvdmVycmlkZSByZWZyZXNoVG9rZW4gd2l0aCBjdXN0b20gcmVmcmVzaCB0b2tlbiByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPFRva2VuUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5VG9rZW5FeGNoYW5nZUFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgICAudG9rZW5SZWZyZXNoKClcbiAgICAgICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHRva2VuUmVzcG9uc2UpID0+IHRoaXMuc2V0SWRUb2tlbih0b2tlblJlc3BvbnNlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciByZWZyZXNoaW5nIHRva2VuJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoRXJyb3JFdmVudCgndG9rZW5fcmVmcmVzaF9lcnJvcicsIGVycm9yKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VG9rZW5SZXNwb25zZSh0b2tlblJlc3BvbnNlOiBUb2tlblJlc3BvbnNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IHRva2VuUmVzcG9uc2UuZXhwaXJlc19pbiB8fCB0aGlzLmZhbGxiYWNrQWNjZXNzVG9rZW5FeHBpcmF0aW9uVGltZUluU2VjITtcblxuICAgICAgICB0aGlzLmRlYnVnKCd0b2tlblJlc3BvbnNlJywgdG9rZW5SZXNwb25zZSk7XG4gICAgICAgIHRoaXMuc3RvcmVBY2Nlc3NUb2tlblJlc3BvbnNlKFxuICAgICAgICAgICAgdG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4sXG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlLnJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgICBleHBpcmVzSW4sXG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlLnNjb3BlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoU3VjY2Vzc0V2ZW50KCd0b2tlbl9yZWNlaXZlZCcpKTtcbiAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoU3VjY2Vzc0V2ZW50KCd0b2tlbl9yZWZyZXNoZWQnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJZFRva2VuKHRva2VuUmVzcG9uc2U6IFRva2VuUmVzcG9uc2UpOiBPYnNlcnZhYmxlPFRva2VuUmVzcG9uc2U+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9pZGMgfHwgIXRva2VuUmVzcG9uc2UuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMucHJvY2Vzc0lkVG9rZW4odG9rZW5SZXNwb25zZS5pZF90b2tlbiwgdG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4sIHRydWUpKS5waXBlKFxuICAgICAgICAgICAgdGFwKChyZXN1bHQpID0+IHRoaXMuc3RvcmVJZFRva2VuKHJlc3VsdCkpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRva2VuUmVzcG9uc2UpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -6,9 +6,10 @@ import * as i1$1 from '@cuby-ui/cdk';
|
|
|
6
6
|
import { CUI_WINDOW, cuiCreateToken, cuiCreateTokenFromFactory, CuiDestroyService, CuiFilterPipe, CuiLetDirective, CuiPopoverService, cuiProvide, CUI_ANIMATION_FRAME, cuiZonefree, EMPTY_CLIENT_RECT, cuiInjectElement, CUI_LOCAL_STORAGE, CUI_IS_WEBKIT, CuiItemDirective, CuiActiveZone, CuiFocusTrapDirective, cuiGetElementObscures, CUI_IS_MOBILE, CuiHoveredService, cuiPure, cuiPointToClientRect, cuiClamp, cuiPx, cuiIfMap, cuiIsPresent, cuiTypedFromEvent, cuiZonefreeScheduler, cuiZoneOptimized, cuiIsNativeFocused, CuiClickOutsideDirective, CuiTargetDirective, cuiGetClosestFocusable, CuiTime, CuiDimensionsObserverDirective, CuiAutoResizingDirective, CuiIdService, CuiElementDirective, CuiDragPointerDirective, CuiDragDropDirective, CuiDragListDirective, CuiHandleScrollDirective } from '@cuby-ui/cdk';
|
|
7
7
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
8
8
|
import { cuiIsIcon, CUI_ICONS } from '@cuby-ui/icons';
|
|
9
|
-
import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize,
|
|
9
|
+
import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, switchMap, of, from, tap, filter, timer, Subject, delay, repeat, takeWhile, fromEvent, debounce, skip, take, forkJoin, throttleTime, concatMap, toArray, catchError, throwError, pairwise, debounceTime } from 'rxjs';
|
|
10
10
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
11
|
-
import { OAuthService, OAuthInfoEvent, provideOAuthClient } from 'angular-oauth2-oidc';
|
|
11
|
+
import { OAuthService, OAuthErrorEvent, OAuthSuccessEvent, OAuthInfoEvent, provideOAuthClient } from 'angular-oauth2-oidc';
|
|
12
|
+
import { CuiActivityTokenExchangeApiService, CuiTreeStructNavigatorApiService, CuiFrameApiService, CuiNodeChecklistApiService, CuiTreeStructApiService } from '@cuby-ui/api';
|
|
12
13
|
import { trigger, transition, query, animateChild, style, animate, stagger } from '@angular/animations';
|
|
13
14
|
import * as i2 from '@taiga-ui/polymorpheus';
|
|
14
15
|
import { PolymorpheusOutlet, PolymorpheusTemplate, PolymorpheusComponent, injectContext } from '@taiga-ui/polymorpheus';
|
|
@@ -26,7 +27,6 @@ import { TranslocoDirective, TranslocoService, TranslocoModule } from '@jsverse/
|
|
|
26
27
|
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
|
27
28
|
import { createCustomElement } from '@angular/elements';
|
|
28
29
|
import { Router } from '@angular/router';
|
|
29
|
-
import { CuiTreeStructNavigatorApiService, CuiFrameApiService, CuiNodeChecklistApiService, CuiTreeStructApiService } from '@cuby-ui/api';
|
|
30
30
|
|
|
31
31
|
class CuiAccordionComponent {
|
|
32
32
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -861,29 +861,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
861
861
|
}]
|
|
862
862
|
}] });
|
|
863
863
|
|
|
864
|
-
class
|
|
865
|
-
|
|
866
|
-
|
|
864
|
+
class CuiToken extends OAuthService {
|
|
865
|
+
constructor() {
|
|
866
|
+
super(...arguments);
|
|
867
|
+
this.tokenData = signal({});
|
|
867
868
|
}
|
|
868
|
-
|
|
869
|
-
const
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
869
|
+
getTokenDataFromStore(token) {
|
|
870
|
+
const tokenData = this.tokenData()[token];
|
|
871
|
+
if (tokenData) {
|
|
872
|
+
return tokenData;
|
|
873
|
+
}
|
|
874
|
+
const currentTokenData = this.parseToken(token);
|
|
875
|
+
this.tokenData.set({ [token]: currentTokenData });
|
|
876
|
+
return currentTokenData;
|
|
877
|
+
}
|
|
878
|
+
parseToken(token) {
|
|
879
|
+
try {
|
|
880
|
+
const base64Url = token.split('.')[1];
|
|
881
|
+
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
|
|
882
|
+
return JSON.parse(atob(base64));
|
|
883
|
+
}
|
|
884
|
+
catch {
|
|
885
|
+
throw new Error('Invalid token');
|
|
873
886
|
}
|
|
874
|
-
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
class CuiTokenBase extends CuiToken {
|
|
890
|
+
constructor() {
|
|
891
|
+
super(...arguments);
|
|
892
|
+
this.activityTokenExchangeApiService = inject(CuiActivityTokenExchangeApiService);
|
|
893
|
+
}
|
|
894
|
+
getAccessTokenData() {
|
|
895
|
+
const token = this.getAccessToken();
|
|
896
|
+
if (!token) {
|
|
897
|
+
throw new Error('No access token found');
|
|
898
|
+
}
|
|
899
|
+
return this.getTokenDataFromStore(token);
|
|
875
900
|
}
|
|
876
901
|
checkIsTokenExpired() {
|
|
902
|
+
const token = this.getAccessToken();
|
|
903
|
+
if (!token) {
|
|
904
|
+
return true;
|
|
905
|
+
}
|
|
877
906
|
const expiredTime = this.getAccessTokenExpiration();
|
|
878
907
|
const currentTime = Date.now();
|
|
879
908
|
return currentTime >= expiredTime;
|
|
880
909
|
}
|
|
881
|
-
|
|
910
|
+
exchangeToken(params) {
|
|
911
|
+
return new Promise((resolve, reject) => this.activityTokenExchangeApiService
|
|
912
|
+
.tokenExchange(params)
|
|
913
|
+
.pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
|
|
914
|
+
.subscribe({
|
|
915
|
+
next: (tokenResponse) => {
|
|
916
|
+
this.setTokenResponse(tokenResponse);
|
|
917
|
+
resolve(tokenResponse);
|
|
918
|
+
},
|
|
919
|
+
error: (error) => {
|
|
920
|
+
this.logger.error('Error exchanging token', error);
|
|
921
|
+
reject(error);
|
|
922
|
+
}
|
|
923
|
+
}));
|
|
924
|
+
}
|
|
925
|
+
// TODO: override refreshToken with custom refresh token request to the backend
|
|
926
|
+
refreshToken() {
|
|
927
|
+
return new Promise((resolve, reject) => this.activityTokenExchangeApiService
|
|
928
|
+
.tokenRefresh()
|
|
929
|
+
.pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
|
|
930
|
+
.subscribe({
|
|
931
|
+
next: (tokenResponse) => {
|
|
932
|
+
this.setTokenResponse(tokenResponse);
|
|
933
|
+
resolve(tokenResponse);
|
|
934
|
+
},
|
|
935
|
+
error: (error) => {
|
|
936
|
+
this.logger.error('Error refreshing token', error);
|
|
937
|
+
this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));
|
|
938
|
+
reject(error);
|
|
939
|
+
}
|
|
940
|
+
}));
|
|
941
|
+
}
|
|
942
|
+
setTokenResponse(tokenResponse) {
|
|
943
|
+
const expiresIn = tokenResponse.expires_in || this.fallbackAccessTokenExpirationTimeInSec;
|
|
944
|
+
this.debug('tokenResponse', tokenResponse);
|
|
945
|
+
this.storeAccessTokenResponse(tokenResponse.access_token, tokenResponse.refresh_token, expiresIn, tokenResponse.scope);
|
|
946
|
+
this.eventsSubject.next(new OAuthSuccessEvent('token_received'));
|
|
947
|
+
this.eventsSubject.next(new OAuthSuccessEvent('token_refreshed'));
|
|
948
|
+
}
|
|
949
|
+
setIdToken(tokenResponse) {
|
|
950
|
+
if (!this.oidc || !tokenResponse.id_token) {
|
|
951
|
+
return of(tokenResponse);
|
|
952
|
+
}
|
|
953
|
+
return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(tap((result) => this.storeIdToken(result)), map(() => tokenResponse));
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
class CuiAuthBase extends CuiTokenBase {
|
|
958
|
+
createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params) {
|
|
959
|
+
return super.createLoginUrl(state, loginHint, customRedirectUri, noPrompt, params);
|
|
960
|
+
}
|
|
961
|
+
async useCheckTokenFlow(loginCallback) {
|
|
882
962
|
const isExpired = this.checkIsTokenExpired();
|
|
963
|
+
const isRefreshTokenExist = this.getRefreshToken();
|
|
964
|
+
if (!isRefreshTokenExist) {
|
|
965
|
+
return loginCallback();
|
|
966
|
+
}
|
|
883
967
|
if (!isExpired) {
|
|
884
968
|
return;
|
|
885
969
|
}
|
|
886
|
-
this.refreshToken();
|
|
970
|
+
return await this.refreshToken();
|
|
887
971
|
}
|
|
888
972
|
initAuthRefreshEvents(loginCallback) {
|
|
889
973
|
this.events.pipe(filter((event) => event instanceof OAuthInfoEvent)).subscribe((event) => {
|
|
@@ -7554,7 +7638,7 @@ class CuiBrowserAuthService extends CuiAuthBase {
|
|
|
7554
7638
|
await this.loadDiscoveryDocument();
|
|
7555
7639
|
await this.tryLogin();
|
|
7556
7640
|
this.initAuthRefreshEvents(this.initLoginFlow.bind(this));
|
|
7557
|
-
this.useCheckTokenFlow(this.initLoginFlow.bind(this));
|
|
7641
|
+
await this.useCheckTokenFlow(this.initLoginFlow.bind(this));
|
|
7558
7642
|
this.router.navigateByUrl(this.location.path(false).split('?')[0]);
|
|
7559
7643
|
}
|
|
7560
7644
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiBrowserAuthService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|