ngx-histaff-alpha 4.2.2 → 4.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app/http-interceptors/graph-interceptor.mjs +48 -0
- package/esm2022/lib/app/http-interceptors/index.mjs +4 -2
- package/esm2022/lib/app/libraries/core-oauth-callback-office365/core-oauth-callback-office365.component.mjs +24 -0
- package/esm2022/lib/app/services/app-config.service.mjs +3 -1
- package/esm2022/lib/app/services/app-initialization.service.mjs +24 -6
- package/esm2022/lib/app/services/auth.service.mjs +1 -33
- package/esm2022/lib/app/services/developer-validation.service.mjs +8 -8
- package/esm2022/lib/app/services/pkce.service.mjs +86 -25
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-histaff-alpha.mjs +241 -131
- package/fesm2022/ngx-histaff-alpha.mjs.map +1 -1
- package/lib/app/http-interceptors/graph-interceptor.d.ts +12 -0
- package/lib/app/http-interceptors/index.d.ts +6 -1
- package/lib/app/libraries/core-oauth-callback-office365/core-oauth-callback-office365.component.d.ts +8 -0
- package/lib/app/libraries/core-table/core-table.component.d.ts +1 -1
- package/lib/app/services/app-config.service.d.ts +3 -0
- package/lib/app/services/app-initialization.service.d.ts +3 -1
- package/lib/app/services/auth.service.d.ts +0 -2
- package/lib/app/services/developer-validation.service.d.ts +3 -3
- package/lib/app/services/pkce.service.d.ts +24 -3
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -29,6 +29,8 @@ class AppConfigService {
|
|
|
29
29
|
this.OAUTH2_OIDC_LOGIN_URI = "";
|
|
30
30
|
this.OAUTH2_OIDC_REDIRECT_URI = "";
|
|
31
31
|
this.OAUTH2_OIDC_SCOPE = "openid profile email";
|
|
32
|
+
this.OFFICE365_DEV = undefined;
|
|
33
|
+
this.OFFICE365_PROD = undefined;
|
|
32
34
|
this.SAML2ADFS_ENABLED = true;
|
|
33
35
|
this.SAML2ADFS_IDP = "";
|
|
34
36
|
this.SAML2ADFS_IDENTIFIER = "";
|
|
@@ -2435,38 +2437,6 @@ class AuthService {
|
|
|
2435
2437
|
}
|
|
2436
2438
|
}
|
|
2437
2439
|
}
|
|
2438
|
-
generateRandomCodeVerifier(length) {
|
|
2439
|
-
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
|
|
2440
|
-
let result = '';
|
|
2441
|
-
for (let i = 0; i < length; i++) {
|
|
2442
|
-
const randomIndex = Math.floor(Math.random() * charset.length);
|
|
2443
|
-
result += charset.charAt(randomIndex);
|
|
2444
|
-
}
|
|
2445
|
-
return result;
|
|
2446
|
-
}
|
|
2447
|
-
async generateCodeChallengeFromVerifier(v) {
|
|
2448
|
-
const sha256 = (plain) => {
|
|
2449
|
-
// returns promise ArrayBuffer
|
|
2450
|
-
const encoder = new TextEncoder();
|
|
2451
|
-
const data = encoder.encode(plain);
|
|
2452
|
-
return window.crypto.subtle.digest("SHA-256", data);
|
|
2453
|
-
};
|
|
2454
|
-
const base64urlencode = (a) => {
|
|
2455
|
-
var str = "";
|
|
2456
|
-
var bytes = new Uint8Array(a);
|
|
2457
|
-
var len = bytes.byteLength;
|
|
2458
|
-
for (var i = 0; i < len; i++) {
|
|
2459
|
-
str += String.fromCharCode(bytes[i]);
|
|
2460
|
-
}
|
|
2461
|
-
return btoa(str)
|
|
2462
|
-
.replace(/\+/g, "-")
|
|
2463
|
-
.replace(/\//g, "_")
|
|
2464
|
-
.replace(/=+$/, "");
|
|
2465
|
-
};
|
|
2466
|
-
var hashed = await sha256(v);
|
|
2467
|
-
var base64encoded = base64urlencode(hashed);
|
|
2468
|
-
return base64encoded;
|
|
2469
|
-
}
|
|
2470
2440
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthService, deps: [{ token: HttpClient }, { token: Router }, { token: CommonHttpRequestService }, { token: HubConnectionService }, { token: OrganizationService }, { token: AlertService }, { token: MultiLanguageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2471
2441
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
2472
2442
|
}
|
|
@@ -3217,9 +3187,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
3217
3187
|
}]
|
|
3218
3188
|
}], ctorParameters: () => [] });
|
|
3219
3189
|
|
|
3190
|
+
class PkceService {
|
|
3191
|
+
constructor(appConfigService, appService, router, alertService) {
|
|
3192
|
+
this.appConfigService = appConfigService;
|
|
3193
|
+
this.appService = appService;
|
|
3194
|
+
this.router = router;
|
|
3195
|
+
this.alertService = alertService;
|
|
3196
|
+
this.lsCodeVerifierName = "office365CodeVerifier";
|
|
3197
|
+
this.userGraphToken$ = new BehaviorSubject('');
|
|
3198
|
+
}
|
|
3199
|
+
generateRandomCodeVerifier(length) {
|
|
3200
|
+
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
|
|
3201
|
+
let result = '';
|
|
3202
|
+
for (let i = 0; i < length; i++) {
|
|
3203
|
+
const randomIndex = Math.floor(Math.random() * charset.length);
|
|
3204
|
+
result += charset.charAt(randomIndex);
|
|
3205
|
+
}
|
|
3206
|
+
return result;
|
|
3207
|
+
}
|
|
3208
|
+
async generateCodeChallengeFromVerifier(v) {
|
|
3209
|
+
const sha256 = (plain) => {
|
|
3210
|
+
// returns promise ArrayBuffer
|
|
3211
|
+
const encoder = new TextEncoder();
|
|
3212
|
+
const data = encoder.encode(plain);
|
|
3213
|
+
return window.crypto.subtle.digest("SHA-256", data);
|
|
3214
|
+
};
|
|
3215
|
+
const base64urlencode = (a) => {
|
|
3216
|
+
var str = "";
|
|
3217
|
+
var bytes = new Uint8Array(a);
|
|
3218
|
+
var len = bytes.byteLength;
|
|
3219
|
+
for (var i = 0; i < len; i++) {
|
|
3220
|
+
str += String.fromCharCode(bytes[i]);
|
|
3221
|
+
}
|
|
3222
|
+
return btoa(str)
|
|
3223
|
+
.replace(/\+/g, "-")
|
|
3224
|
+
.replace(/\//g, "_")
|
|
3225
|
+
.replace(/=+$/, "");
|
|
3226
|
+
};
|
|
3227
|
+
var hashed = await sha256(v);
|
|
3228
|
+
var base64encoded = base64urlencode(hashed);
|
|
3229
|
+
return base64encoded;
|
|
3230
|
+
}
|
|
3231
|
+
doAuthorize() {
|
|
3232
|
+
const codeVerifier = this.generateRandomCodeVerifier(43);
|
|
3233
|
+
localStorage.setItem(this.lsCodeVerifierName, codeVerifier);
|
|
3234
|
+
this.generateCodeChallengeFromVerifier(codeVerifier).then(codeChallenge => {
|
|
3235
|
+
const authorizationUrl = `${this.authorizationEndpoint}?` +
|
|
3236
|
+
`response_type=code` +
|
|
3237
|
+
`&client_id=${this.clientId}` +
|
|
3238
|
+
`&redirect_uri=${this.redirectUri}` +
|
|
3239
|
+
`&code_challenge=${codeChallenge}` +
|
|
3240
|
+
`&code_challenge_method=S256` +
|
|
3241
|
+
`&scope=${'openid'}`;
|
|
3242
|
+
window.location.href = authorizationUrl;
|
|
3243
|
+
});
|
|
3244
|
+
}
|
|
3245
|
+
doAndGetToken(authorizationCode) {
|
|
3246
|
+
return new Promise((resolve, reject) => {
|
|
3247
|
+
if (!this.tokenPostEndpoint) {
|
|
3248
|
+
if (isDevMode()) {
|
|
3249
|
+
this.alertService.error("UNDEFINED_TOKEN_POST_ENDPOINT", noneAutoClosedAlertOptions);
|
|
3250
|
+
}
|
|
3251
|
+
reject("UNDEFINED_TOKEN_POST_ENDPOINT");
|
|
3252
|
+
}
|
|
3253
|
+
//let params = (new URL(window.location.href)).searchParams;
|
|
3254
|
+
//let code = params.get("code");
|
|
3255
|
+
if (!!authorizationCode) {
|
|
3256
|
+
const codeVerifier = localStorage.getItem(this.lsCodeVerifierName);
|
|
3257
|
+
this.appService.post(this.tokenPostEndpoint, {
|
|
3258
|
+
authorizationCode: authorizationCode,
|
|
3259
|
+
codeVerifier
|
|
3260
|
+
}).subscribe((x) => {
|
|
3261
|
+
localStorage.removeItem(this.lsCodeVerifierName);
|
|
3262
|
+
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
3263
|
+
resolve(x.body?.innerBody);
|
|
3264
|
+
}
|
|
3265
|
+
else {
|
|
3266
|
+
reject(x.body);
|
|
3267
|
+
}
|
|
3268
|
+
});
|
|
3269
|
+
}
|
|
3270
|
+
else {
|
|
3271
|
+
reject("CODE_WAS_NOT_RETURNED");
|
|
3272
|
+
}
|
|
3273
|
+
});
|
|
3274
|
+
}
|
|
3275
|
+
validateOffice365UserViaPopup() {
|
|
3276
|
+
if (!this.isEnabled || !this.authorizationEndpoint || !this.clientId || !this.redirectUri || !this.tokenPostEndpoint) {
|
|
3277
|
+
if (isDevMode()) {
|
|
3278
|
+
this.alertService.error("THE_OFFICE365_INTEGRATION_IS_DISABLED_OR_HAS_INCORECT_CONFIG", noneAutoClosedAlertOptions);
|
|
3279
|
+
console.log("this.isEnabled", this.isEnabled, "this.authorizationEndpoint", this.authorizationEndpoint, "this.clientId", this.clientId, "this.redirectUri", this.redirectUri, "this.tokenPostEndpoint", this.tokenPostEndpoint);
|
|
3280
|
+
}
|
|
3281
|
+
return;
|
|
3282
|
+
}
|
|
3283
|
+
if (!!localStorage.getItem(this.lsCodeVerifierName))
|
|
3284
|
+
return;
|
|
3285
|
+
const office365CodeVerifier = this.generateRandomCodeVerifier(43);
|
|
3286
|
+
localStorage.setItem(this.lsCodeVerifierName, office365CodeVerifier);
|
|
3287
|
+
this.generateCodeChallengeFromVerifier(office365CodeVerifier).then(codeChallenge => {
|
|
3288
|
+
const authorizationUrl = `${this.authorizationEndpoint}?` +
|
|
3289
|
+
`response_type=code` +
|
|
3290
|
+
`&client_id=${this.clientId}` +
|
|
3291
|
+
`&redirect_uri=${this.redirectUri}` +
|
|
3292
|
+
`&code_challenge=${codeChallenge}` +
|
|
3293
|
+
`&code_challenge_method=S256` +
|
|
3294
|
+
`&scope=openid profile email Calendars.ReadWrite`;
|
|
3295
|
+
const popupWidth = 500;
|
|
3296
|
+
const popupHeight = 500;
|
|
3297
|
+
const left = (window.innerWidth - popupWidth) / 2;
|
|
3298
|
+
const top = (window.innerHeight - popupHeight) / 2;
|
|
3299
|
+
//(window as any).globalOffice365PopupId = crypto.randomUUID();
|
|
3300
|
+
const popup = window.open(authorizationUrl, 'Office 365 OAuth2 Popup', `width=${popupWidth},height=${popupHeight},top=${top},left=${left}`);
|
|
3301
|
+
const receivePkceMessage = (event) => {
|
|
3302
|
+
const authorizationCode = event.data?.authCode;
|
|
3303
|
+
if (!!authorizationCode) {
|
|
3304
|
+
this.doAndGetToken(authorizationCode).then(x => {
|
|
3305
|
+
if (x) {
|
|
3306
|
+
this.userGraphToken$.next(x);
|
|
3307
|
+
}
|
|
3308
|
+
setTimeout(() => localStorage.removeItem(this.lsCodeVerifierName));
|
|
3309
|
+
}).catch(err => {
|
|
3310
|
+
console.log(JSON.stringify(err));
|
|
3311
|
+
});
|
|
3312
|
+
}
|
|
3313
|
+
};
|
|
3314
|
+
window.addEventListener('message', receivePkceMessage, false);
|
|
3315
|
+
// Clean up the listener when the popup is closed
|
|
3316
|
+
const popupCheckInterval = setInterval(() => {
|
|
3317
|
+
if (popup && popup.closed) {
|
|
3318
|
+
clearInterval(popupCheckInterval);
|
|
3319
|
+
localStorage.removeItem(this.lsCodeVerifierName);
|
|
3320
|
+
window.removeEventListener('message', receivePkceMessage);
|
|
3321
|
+
}
|
|
3322
|
+
}, 500);
|
|
3323
|
+
});
|
|
3324
|
+
}
|
|
3325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, deps: [{ token: AppConfigService }, { token: AppService }, { token: i1$2.Router }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3326
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, providedIn: 'root' }); }
|
|
3327
|
+
}
|
|
3328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, decorators: [{
|
|
3329
|
+
type: Injectable,
|
|
3330
|
+
args: [{
|
|
3331
|
+
providedIn: 'root'
|
|
3332
|
+
}]
|
|
3333
|
+
}], ctorParameters: () => [{ type: AppConfigService }, { type: AppService }, { type: i1$2.Router }, { type: AlertService }] });
|
|
3334
|
+
|
|
3220
3335
|
class DeveloperValidationService {
|
|
3221
|
-
constructor(
|
|
3222
|
-
this.
|
|
3336
|
+
constructor(pkceService, route) {
|
|
3337
|
+
this.pkceService = pkceService;
|
|
3223
3338
|
this.route = route;
|
|
3224
3339
|
this.authorizationEndpoint = "https://login.microsoftonline.com/4a0cab94-1870-452d-a505-01a1b2bf20eb/oauth2/v2.0/authorize";
|
|
3225
3340
|
this.tokenEndpoint = "https://login.microsoftonline.com/4a0cab94-1870-452d-a505-01a1b2bf20eb/oauth2/v2.0/token";
|
|
@@ -3277,9 +3392,9 @@ class DeveloperValidationService {
|
|
|
3277
3392
|
validateDeveloperViaPopup() {
|
|
3278
3393
|
if (!!localStorage.getItem("codeVerifier"))
|
|
3279
3394
|
return;
|
|
3280
|
-
const codeVerifier = this.
|
|
3395
|
+
const codeVerifier = this.pkceService.generateRandomCodeVerifier(43);
|
|
3281
3396
|
localStorage.setItem("codeVerifier", codeVerifier);
|
|
3282
|
-
this.
|
|
3397
|
+
this.pkceService.generateCodeChallengeFromVerifier(codeVerifier).then(codeChallenge => {
|
|
3283
3398
|
const authorizationUrl = `${this.authorizationEndpoint}?` +
|
|
3284
3399
|
`response_type=code` +
|
|
3285
3400
|
`&client_id=${this.clientId}` +
|
|
@@ -3310,7 +3425,7 @@ class DeveloperValidationService {
|
|
|
3310
3425
|
}, 500);
|
|
3311
3426
|
});
|
|
3312
3427
|
}
|
|
3313
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, deps: [{ token:
|
|
3428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, deps: [{ token: PkceService }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3314
3429
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, providedIn: 'root' }); }
|
|
3315
3430
|
}
|
|
3316
3431
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: DeveloperValidationService, decorators: [{
|
|
@@ -3318,10 +3433,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
3318
3433
|
args: [{
|
|
3319
3434
|
providedIn: 'root'
|
|
3320
3435
|
}]
|
|
3321
|
-
}], ctorParameters: () => [{ type:
|
|
3436
|
+
}], ctorParameters: () => [{ type: PkceService }, { type: i1$2.ActivatedRoute }] });
|
|
3322
3437
|
|
|
3323
3438
|
class AppInitializationService {
|
|
3324
|
-
constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService, grpcService, seekerService, actionService, developerValidationService) {
|
|
3439
|
+
constructor(authService, mls, layoutService, organizationService, routingService, appConfigService, appService, grpcService, seekerService, actionService, developerValidationService, pkceService) {
|
|
3325
3440
|
this.authService = authService;
|
|
3326
3441
|
this.mls = mls;
|
|
3327
3442
|
this.layoutService = layoutService;
|
|
@@ -3333,6 +3448,7 @@ class AppInitializationService {
|
|
|
3333
3448
|
this.seekerService = seekerService;
|
|
3334
3449
|
this.actionService = actionService;
|
|
3335
3450
|
this.developerValidationService = developerValidationService;
|
|
3451
|
+
this.pkceService = pkceService;
|
|
3336
3452
|
this.initializing$ = new BehaviorSubject(true);
|
|
3337
3453
|
this.ssoProcessing$ = new BehaviorSubject(true);
|
|
3338
3454
|
this.subscriptions = [];
|
|
@@ -3356,7 +3472,7 @@ class AppInitializationService {
|
|
|
3356
3472
|
if (window.opener && window.opener.globalPopupId) {
|
|
3357
3473
|
//alert(window.opener.globalPopupId);
|
|
3358
3474
|
}
|
|
3359
|
-
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
|
|
3475
|
+
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, }) => {
|
|
3360
3476
|
this.appConfigService.APP_TYPE = APP_TYPE;
|
|
3361
3477
|
this.appConfigService.APP_UIID = APP_UIID;
|
|
3362
3478
|
this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
|
|
@@ -3374,6 +3490,22 @@ class AppInitializationService {
|
|
|
3374
3490
|
this.appConfigService.OAUTH2_OIDC_LOGIN_URI = OAUTH2_OIDC_LOGIN_URI;
|
|
3375
3491
|
this.appConfigService.OAUTH2_OIDC_REDIRECT_URI = OAUTH2_OIDC_REDIRECT_URI;
|
|
3376
3492
|
this.appConfigService.OAUTH2_OIDC_SCOPE = OAUTH2_OIDC_SCOPE;
|
|
3493
|
+
this.appConfigService.OFFICE365_DEV = OFFICE365_DEV;
|
|
3494
|
+
this.appConfigService.OFFICE365_PROD = OFFICE365_PROD;
|
|
3495
|
+
if (isDevMode()) {
|
|
3496
|
+
this.pkceService.isEnabled = this.appConfigService.OFFICE365_DEV?.IS_ENABLED;
|
|
3497
|
+
this.pkceService.authorizationEndpoint = this.appConfigService.OFFICE365_DEV?.AUTHORIZATION_ENDPOINT;
|
|
3498
|
+
this.pkceService.clientId = this.appConfigService.OFFICE365_DEV?.CLIENT_ID;
|
|
3499
|
+
this.pkceService.redirectUri = this.appConfigService.OFFICE365_DEV?.REDIRECT_URI;
|
|
3500
|
+
this.pkceService.tokenPostEndpoint = this.appConfigService.OFFICE365_DEV?.TOKEN_POST_ENDPOINT;
|
|
3501
|
+
}
|
|
3502
|
+
else {
|
|
3503
|
+
this.pkceService.isEnabled = this.appConfigService.OFFICE365_PROD?.IS_ENABLED;
|
|
3504
|
+
this.pkceService.authorizationEndpoint = this.appConfigService.OFFICE365_PROD?.AUTHORIZATION_ENDPOINT;
|
|
3505
|
+
this.pkceService.clientId = this.appConfigService.OFFICE365_PROD?.CLIENT_ID;
|
|
3506
|
+
this.pkceService.redirectUri = this.appConfigService.OFFICE365_PROD?.REDIRECT_URI;
|
|
3507
|
+
this.pkceService.tokenPostEndpoint = this.appConfigService.OFFICE365_PROD?.TOKEN_POST_ENDPOINT;
|
|
3508
|
+
}
|
|
3377
3509
|
this.appConfigService.SAML2ADFS_ENABLED = SAML2ADFS_ENABLED;
|
|
3378
3510
|
this.appConfigService.SAML2ADFS_IDP = SAML2ADFS_IDP;
|
|
3379
3511
|
this.appConfigService.SAML2ADFS_IDENTIFIER = SAML2ADFS_IDENTIFIER;
|
|
@@ -3578,7 +3710,7 @@ class AppInitializationService {
|
|
|
3578
3710
|
ngOnDestroy() {
|
|
3579
3711
|
this.subscriptions.map(x => x?.unsubscribe());
|
|
3580
3712
|
}
|
|
3581
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: AuthService }, { token: MultiLanguageService }, { token: LayoutService }, { token: OrganizationService }, { token: RoutingService }, { token: AppConfigService }, { token: AppService }, { token: GrpcService }, { token: SeekerService }, { token: ActionService }, { token: DeveloperValidationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3713
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, deps: [{ token: AuthService }, { token: MultiLanguageService }, { token: LayoutService }, { token: OrganizationService }, { token: RoutingService }, { token: AppConfigService }, { token: AppService }, { token: GrpcService }, { token: SeekerService }, { token: ActionService }, { token: DeveloperValidationService }, { token: PkceService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3582
3714
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, providedIn: 'root' }); }
|
|
3583
3715
|
}
|
|
3584
3716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AppInitializationService, decorators: [{
|
|
@@ -3586,7 +3718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
3586
3718
|
args: [{
|
|
3587
3719
|
providedIn: 'root'
|
|
3588
3720
|
}]
|
|
3589
|
-
}], ctorParameters: () => [{ type: AuthService }, { type: MultiLanguageService }, { type: LayoutService }, { type: OrganizationService }, { type: RoutingService }, { type: AppConfigService }, { type: AppService }, { type: GrpcService }, { type: SeekerService }, { type: ActionService }, { type: DeveloperValidationService }] });
|
|
3721
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: MultiLanguageService }, { type: LayoutService }, { type: OrganizationService }, { type: RoutingService }, { type: AppConfigService }, { type: AppService }, { type: GrpcService }, { type: SeekerService }, { type: ActionService }, { type: DeveloperValidationService }, { type: PkceService }] });
|
|
3590
3722
|
|
|
3591
3723
|
const InitializationCanActivateFn = (route, state) => {
|
|
3592
3724
|
const appInitializationService = inject(AppInitializationService);
|
|
@@ -3820,6 +3952,50 @@ function authInterceptor(req, next) {
|
|
|
3820
3952
|
return next(authReq);
|
|
3821
3953
|
}
|
|
3822
3954
|
|
|
3955
|
+
class GraphInterceptor {
|
|
3956
|
+
constructor(pkceService) {
|
|
3957
|
+
this.pkceService = pkceService;
|
|
3958
|
+
}
|
|
3959
|
+
intercept(req, next) {
|
|
3960
|
+
// Get the auth token from the service.
|
|
3961
|
+
const graphToken = this.pkceService.userGraphToken$.value;
|
|
3962
|
+
if (!graphToken || !graphToken.length) {
|
|
3963
|
+
return next.handle(req);
|
|
3964
|
+
}
|
|
3965
|
+
// Clone the request and replace the original headers with
|
|
3966
|
+
// cloned headers, updated with the authorization.
|
|
3967
|
+
const graphReq = req.clone({
|
|
3968
|
+
headers: req.headers.set('Graph-Token', graphToken)
|
|
3969
|
+
});
|
|
3970
|
+
// send cloned request with header to the next handler.
|
|
3971
|
+
return next.handle(graphReq);
|
|
3972
|
+
}
|
|
3973
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, deps: [{ token: PkceService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3974
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, providedIn: 'root' }); }
|
|
3975
|
+
}
|
|
3976
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: GraphInterceptor, decorators: [{
|
|
3977
|
+
type: Injectable,
|
|
3978
|
+
args: [{
|
|
3979
|
+
providedIn: 'root'
|
|
3980
|
+
}]
|
|
3981
|
+
}], ctorParameters: () => [{ type: PkceService }] });
|
|
3982
|
+
// Fn style
|
|
3983
|
+
function graphInterceptor(req, next) {
|
|
3984
|
+
const pkceService = inject(PkceService);
|
|
3985
|
+
// Get the auth token from the service.
|
|
3986
|
+
const graphToken = pkceService.userGraphToken$.value;
|
|
3987
|
+
if (!graphToken || !graphToken.length) {
|
|
3988
|
+
return next(req);
|
|
3989
|
+
}
|
|
3990
|
+
// Clone the request and replace the original headers with
|
|
3991
|
+
// cloned headers, updated with the authorization.
|
|
3992
|
+
const graphReq = req.clone({
|
|
3993
|
+
headers: req.headers.set('Graph-Token', graphToken)
|
|
3994
|
+
});
|
|
3995
|
+
// send cloned request with header to the next handler.
|
|
3996
|
+
return next(graphReq);
|
|
3997
|
+
}
|
|
3998
|
+
|
|
3823
3999
|
class TokenInterceptor {
|
|
3824
4000
|
addAuthenticationToken(request) {
|
|
3825
4001
|
const isStatistic = request.headers.has(InterceptorStatisticHeader);
|
|
@@ -4350,6 +4526,7 @@ const httpInterceptorProviders = [
|
|
|
4350
4526
|
{ provide: HTTP_INTERCEPTORS, useClass: BaseUrlInterceptor, multi: true },
|
|
4351
4527
|
{ provide: HTTP_INTERCEPTORS, useClass: LoggingInterceptor, multi: true },
|
|
4352
4528
|
{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },
|
|
4529
|
+
{ provide: HTTP_INTERCEPTORS, useClass: GraphInterceptor, multi: true },
|
|
4353
4530
|
{ provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true },
|
|
4354
4531
|
{ provide: HTTP_INTERCEPTORS, useClass: ResponseInterceptor, multi: true },
|
|
4355
4532
|
{ provide: HTTP_INTERCEPTORS, useClass: TimeZoneInterceptor, multi: true },
|
|
@@ -4899,94 +5076,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
4899
5076
|
args: [{ providedIn: "root" }]
|
|
4900
5077
|
}] });
|
|
4901
5078
|
|
|
4902
|
-
class PkceService {
|
|
4903
|
-
constructor(appService, router) {
|
|
4904
|
-
this.appService = appService;
|
|
4905
|
-
this.router = router;
|
|
4906
|
-
}
|
|
4907
|
-
generateRandomCodeVerifier(length) {
|
|
4908
|
-
const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
|
|
4909
|
-
let result = '';
|
|
4910
|
-
for (let i = 0; i < length; i++) {
|
|
4911
|
-
const randomIndex = Math.floor(Math.random() * charset.length);
|
|
4912
|
-
result += charset.charAt(randomIndex);
|
|
4913
|
-
}
|
|
4914
|
-
return result;
|
|
4915
|
-
}
|
|
4916
|
-
async generateCodeChallengeFromVerifier(v) {
|
|
4917
|
-
const sha256 = (plain) => {
|
|
4918
|
-
// returns promise ArrayBuffer
|
|
4919
|
-
const encoder = new TextEncoder();
|
|
4920
|
-
const data = encoder.encode(plain);
|
|
4921
|
-
return window.crypto.subtle.digest("SHA-256", data);
|
|
4922
|
-
};
|
|
4923
|
-
const base64urlencode = (a) => {
|
|
4924
|
-
var str = "";
|
|
4925
|
-
var bytes = new Uint8Array(a);
|
|
4926
|
-
var len = bytes.byteLength;
|
|
4927
|
-
for (var i = 0; i < len; i++) {
|
|
4928
|
-
str += String.fromCharCode(bytes[i]);
|
|
4929
|
-
}
|
|
4930
|
-
return btoa(str)
|
|
4931
|
-
.replace(/\+/g, "-")
|
|
4932
|
-
.replace(/\//g, "_")
|
|
4933
|
-
.replace(/=+$/, "");
|
|
4934
|
-
};
|
|
4935
|
-
var hashed = await sha256(v);
|
|
4936
|
-
var base64encoded = base64urlencode(hashed);
|
|
4937
|
-
return base64encoded;
|
|
4938
|
-
}
|
|
4939
|
-
doAuthorize(lsCodeVerifierName, authorizationEndpoint, clientId, redirect_uri) {
|
|
4940
|
-
const codeVerifier = this.generateRandomCodeVerifier(43);
|
|
4941
|
-
localStorage.setItem(lsCodeVerifierName, codeVerifier);
|
|
4942
|
-
this.generateCodeChallengeFromVerifier(codeVerifier).then(codeChallenge => {
|
|
4943
|
-
const authorizationUrl = `${authorizationEndpoint}?` +
|
|
4944
|
-
`response_type=code` +
|
|
4945
|
-
`&client_id=${clientId}` +
|
|
4946
|
-
`&redirect_uri=${redirect_uri}` +
|
|
4947
|
-
`&code_challenge=${codeChallenge}` +
|
|
4948
|
-
`&code_challenge_method=S256` +
|
|
4949
|
-
`&scope=${'openid'}`;
|
|
4950
|
-
window.location.href = authorizationUrl;
|
|
4951
|
-
});
|
|
4952
|
-
}
|
|
4953
|
-
doAndGetToken(lsCodeVerifierName, tokenPostEndpoint, redirectUrl = undefined) {
|
|
4954
|
-
return new Promise((resolve, reject) => {
|
|
4955
|
-
let params = (new URL(window.location.href)).searchParams;
|
|
4956
|
-
let code = params.get("code");
|
|
4957
|
-
if (!!code) {
|
|
4958
|
-
const codeVerifier = localStorage.getItem(lsCodeVerifierName);
|
|
4959
|
-
this.appService.post(tokenPostEndpoint, {
|
|
4960
|
-
authorizationCode: code,
|
|
4961
|
-
codeVerifier
|
|
4962
|
-
}).subscribe((x) => {
|
|
4963
|
-
localStorage.removeItem(lsCodeVerifierName);
|
|
4964
|
-
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
4965
|
-
if (redirectUrl) {
|
|
4966
|
-
this.router.navigateByUrl(redirectUrl);
|
|
4967
|
-
}
|
|
4968
|
-
resolve(x.body?.innerBody);
|
|
4969
|
-
}
|
|
4970
|
-
else {
|
|
4971
|
-
reject();
|
|
4972
|
-
}
|
|
4973
|
-
});
|
|
4974
|
-
}
|
|
4975
|
-
else {
|
|
4976
|
-
reject();
|
|
4977
|
-
}
|
|
4978
|
-
});
|
|
4979
|
-
}
|
|
4980
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, deps: [{ token: AppService }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4981
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, providedIn: 'root' }); }
|
|
4982
|
-
}
|
|
4983
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PkceService, decorators: [{
|
|
4984
|
-
type: Injectable,
|
|
4985
|
-
args: [{
|
|
4986
|
-
providedIn: 'root'
|
|
4987
|
-
}]
|
|
4988
|
-
}], ctorParameters: () => [{ type: AppService }, { type: i1$2.Router }] });
|
|
4989
|
-
|
|
4990
5079
|
class PositionTransferService {
|
|
4991
5080
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PositionTransferService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4992
5081
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PositionTransferService, providedIn: 'root' }); }
|
|
@@ -25457,6 +25546,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
25457
25546
|
args: [{ selector: 'core-oauth-callback', standalone: true, imports: [], template: "<h2>core-oauth-callback works!</h2>\r\n" }]
|
|
25458
25547
|
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }] });
|
|
25459
25548
|
|
|
25549
|
+
class CoreOauthCallbackOffice365Component {
|
|
25550
|
+
constructor(route) {
|
|
25551
|
+
this.route = route;
|
|
25552
|
+
// Extract the authorization code from the query parameters
|
|
25553
|
+
this.route.queryParams.subscribe(params => {
|
|
25554
|
+
const authCode = params['code'];
|
|
25555
|
+
if (!!authCode) {
|
|
25556
|
+
// Post the message back to the parent window
|
|
25557
|
+
window.opener.postMessage({ authCode }, 'https://localhost:4200');
|
|
25558
|
+
window.close(); // Close the popup
|
|
25559
|
+
}
|
|
25560
|
+
});
|
|
25561
|
+
}
|
|
25562
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOauthCallbackOffice365Component, deps: [{ token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25563
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreOauthCallbackOffice365Component, isStandalone: true, selector: "core-oauth-callback-office365", ngImport: i0, template: "<p>core-oauth-callback-office365 works!</p>\r\n", styles: [""] }); }
|
|
25564
|
+
}
|
|
25565
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreOauthCallbackOffice365Component, decorators: [{
|
|
25566
|
+
type: Component,
|
|
25567
|
+
args: [{ selector: 'core-oauth-callback-office365', standalone: true, imports: [], template: "<p>core-oauth-callback-office365 works!</p>\r\n" }]
|
|
25568
|
+
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }] });
|
|
25569
|
+
|
|
25460
25570
|
class CoreOrgTreeState {
|
|
25461
25571
|
constructor() {
|
|
25462
25572
|
this.coreOrgTreeReduced$ = new BehaviorSubject(false);
|
|
@@ -30163,5 +30273,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
30163
30273
|
* Generated bundle index. Do not edit.
|
|
30164
30274
|
*/
|
|
30165
30275
|
|
|
30166
|
-
export { ActionService, ActionSvgEditComponent, AlertComponent, AlertService, AnimatedTextComponent, AnimatedTextService, AppConfigService, AppInitializationService, AppService, ApplicationHelpService, AuthService, BaseComponent, BaseDropdownComponent, BaseEditComponent, ButtonGroupComponent, ButtonGroupModule, ButtonGroupService, CORE_VNS_BUTTONS, CacheService, CanActivateFunctionUrlMapperGuard, CanDeactivateGuard, CheckForUpdateService, ClientService, CommonHttpRequestService, ConfigService, ConfirmDialogStateComponent, ControlBase, CoreAccordionComponent, CoreAccordionService, CoreActiveUserCountComponent, CoreApiProgressComponent, CoreAttachmentComponent, CoreButtonComponent, CoreButtonGroupComponent, CoreButtonGroupService, CoreButtonGroupVnsComponent, CoreButtonVnsComponent, CoreCheckboxComponent, CoreChecklistComponent, CoreCommonParamKitComponent, CoreCompositionComponent, CoreCompositionService, CoreCompositionState, CoreConfirmDialogComponent, CoreContractSeekerComponent, CoreControlComponent, CoreControlNoGridBufferComponent, CoreControlNoSeekerComponent, CoreControlService, CoreCurrencyInputComponent, CoreDatePickerComponent, CoreDatetimeService, CoreDropdownComponent, CoreEmployeeScheduleComponent, CoreEmployeeSeekerComponent, CoreFileFormatPickerComponent, CoreFileUploaderComponent, CoreFilterHubComponent, CoreFilterHubService, CoreFormComponent, CoreFormControlBaseComponent, CoreFormControlSeekerComponent, CoreFormLiteComponent, CoreFormService, CoreFormTabComponent, CoreGridBufferComponent, CoreHeaderParamsComponent, CoreHelperComponent, CoreIosSwitcherComponent, CoreLineComponent, CoreListComponent, CoreListLazyComponent, CoreLoadingSurfaceComponent, CoreMccComponent, CoreMonthPickerComponent, CoreMonthSelectorComponent, CoreNavigationTrackerComponent, CoreOauthCallbackComponent, CoreOrgParamComponent, CoreOrgTreeComponent, CoreOrgTreeService, CoreOrgTreeState, CoreOrgUnitSeekerComponent, CoreOrgchartflexComponent, CorePageEditComponent, CorePageEditLiteComponent, CorePageEditService, CorePageEditTabComponent, CorePageHeaderComponent, CorePageListComponent, CorePageListContentComponent, CorePageListService, CorePageListState, CorePageViewComponent, CorePaginationComponent, CorePaginationFullComponent, CorePaginationFullService, CoreParamControlComponent, CorePermissionActionsComponent, CorePermissionComponent, CorePermissionService, CorePositionConcurrentSeekerComponent, CorePositionSeekerComponent, CoreQrcodeComponent, CoreQueryBuilderComponent, CoreRadioGroupComponent, CoreReducerIconComponent, CoreRootMenuItemPickerComponent, CoreRotatingTextComponent, CoreRoutingHistoryComponent, CoreScrollComponent, CoreScrollLazyComponent, CoreSeenByComponent, CoreShiftCardComponent, CoreShiftCellComponent, CoreShiftCollectionComponent, CoreShiftStickerComponent, CoreStatisticWidgetComponent, CoreStatusStickerComponent, CoreSubFormGroupComponent, CoreTabListComponent, CoreTableComponent, CoreTableService, CoreTabsComponent, CoreTagsComponent, CoreTopicPickerComponent, CoreTopicTreeComponent, CoreTreeComponent, CoreTreeGridComponent, CoreWageSeekerComponent, CoreWorkingSeekerComponent, CoreYearPickerComponent, CustomValidators, DATE_VALUE_ACCESSOR, DEFAULT_SVG, DESKTOP_SCREEN_HEDER_HEIGHT, DateValueAccessor, DecisionComponent, DialogService, DialogStateComponent, DndService, DomService, ECoreTableToolClass, ECoreTableToolCode, EnumAlertType, EnumBrowserType, EnumButtonCaptionCode, EnumCoreArticleCategoryTreeaAccessorMode, EnumCoreButtonCode, EnumCoreButtonVNSCode, EnumCoreFileUploaderType, EnumCoreFormControlSeekerSourceType, EnumCoreOrgTreeaAccessorMode, EnumCoreOrgTreeaSearchMode, EnumCorePageEditBootstrapClass, EnumCorePageEditFieldType, EnumCorePageEditMode, EnumCoreSeekerColumnContract, EnumCoreSeekerColumnJob, EnumCoreSeekerColumnPosition, EnumCoreSeekerColumnPositionConcurrent, EnumCoreSeekerColumnStaffProfile, EnumCoreSeekerColumnWage, EnumCoreSeekerColumnWorking, EnumCoreTablePipeType, EnumCoreTreeGridEditMode, EnumCoreViewItemType, EnumDeviceType, EnumDragType, EnumErrorType, EnumExType, EnumFilterOperator, EnumFormBaseContolType, EnumHrComparisonCode, EnumICoreStatisticWidgetDataType, EnumIconClass, EnumImageResolverType, EnumNotificationDir, EnumOparator, EnumOsType, EnumPermissionObjectType, EnumProfileInfoSector, EnumRecursiveFields, EnumSignalRType, EnumSortDirection, EnumSsrsExpressExportFormat, EnumSsrsExpressFileExtension, EnumStyleButtonClass, EnumSwUpdateVersionUpdatesEventType, EnumWorkScheduleViewMode, EvaluateDialogComponent, EvaluateDialogService, FileService, FilterKitService, FilterPipe, FooterComponent, FullscreenModalLoaderComponent, FunctionComponent, FunctionEditComponent, FunctionEditService, FunctionIgnoreComponent, FunctionIgnoreEditComponent, GroupFunctionComponent, GroupFunctionEditComponent, GrpcService, HeaderService, HistoryService, HotKeysDirective, HttpErrorHandler, HubConnectionService, HuconcurrentlyComponent, IAlertOptions, ImageErrorResolverDirective, InMemoryComponent, InitializationCanActivateFn, InitializationCanMatchFn, InterceptorSkipHeader, IpServiceService, ItemComponent, JobComponent, JsonService, LanguageChangerComponent, LanguageComponent, LanguageEditComponent, LayoutService, LongTaskService, MOBILE_SCREEN_HEDER_HEIGHT, MapAppdemoToServerPipePipe, MapAttachmentToServerPipe, MapAvatarToServerPipe, MapNewsfeedMediaToServerPipe, MapService, MenuComponent, MenuEditComponent, MenuService, MessageService, ModalService, MultiLanguageService, MutationLogComponent, MutationViewComponent, NavigatorComponent, NavigatorService, NewlyCreatedTokenService, NormalizeHumanNamePipe, NotificationActionType, OnlineUsersComponent, OrganizationService, OtpInputComponent, OtpInputService, PageTitleComponent, PaginationComponent, PkceService, PortalRouteComponent, PortalRouteEditComponent, PositionComponent, PositionEditService, PositionTransferService, PushNotificationService, RandomAvatarService, RecursiveService, RequestCache, RequestCacheWithMap, ResponseService, RightchatComponent, RoutingService, STICKER_COLOR_SCHEMA, SeekerService, SocketService, SsrsExpressService, StaffProfileComponent, StatisticAuthService, StatisticService, StringHtmlPipe, StringService, SysActionComponent, SysActionEditComponent, SysFunctionActionComponent, SysFunctionActionEditComponent, SysFunctionActionMapperComponent, SysFunctionUrlMapperComponent, SysMenuService, SysModuleComponent, SysModuleEditComponent, TLA_CONFIG, TableCellPipe, Textbox, ThreedotsComponent, TimeSheetService, TooltipComponent, TooltipDirective, TopicPermissionService, TopicTreeService, TranslatePipe, UnicodeService, UploadedFileService, UploadedFilenameCutoffPipe, UrlService, UserActivityComponent, UserActivityService, WageComponent, WaittingScreenComponent, WorkShiftDndService, alertOptions, attachmentOptions, authInterceptor, baseUrlInterceptor, blob_to_base64_script, cachingInterceptor, defaultPaging, httpInterceptorProviders, langInterceptor, liner_to_nested_array_script, longAlertOptions, noneAutoClosedAlertOptions, normalizeHumanName, responseInterceptor, themeBlue, timeZoneInterceptor, tokenInterceptor };
|
|
30276
|
+
export { ActionService, ActionSvgEditComponent, AlertComponent, AlertService, AnimatedTextComponent, AnimatedTextService, AppConfigService, AppInitializationService, AppService, ApplicationHelpService, AuthService, BaseComponent, BaseDropdownComponent, BaseEditComponent, ButtonGroupComponent, ButtonGroupModule, ButtonGroupService, CORE_VNS_BUTTONS, CacheService, CanActivateFunctionUrlMapperGuard, CanDeactivateGuard, CheckForUpdateService, ClientService, CommonHttpRequestService, ConfigService, ConfirmDialogStateComponent, ControlBase, CoreAccordionComponent, CoreAccordionService, CoreActiveUserCountComponent, CoreApiProgressComponent, CoreAttachmentComponent, CoreButtonComponent, CoreButtonGroupComponent, CoreButtonGroupService, CoreButtonGroupVnsComponent, CoreButtonVnsComponent, CoreCheckboxComponent, CoreChecklistComponent, CoreCommonParamKitComponent, CoreCompositionComponent, CoreCompositionService, CoreCompositionState, CoreConfirmDialogComponent, CoreContractSeekerComponent, CoreControlComponent, CoreControlNoGridBufferComponent, CoreControlNoSeekerComponent, CoreControlService, CoreCurrencyInputComponent, CoreDatePickerComponent, CoreDatetimeService, CoreDropdownComponent, CoreEmployeeScheduleComponent, CoreEmployeeSeekerComponent, CoreFileFormatPickerComponent, CoreFileUploaderComponent, CoreFilterHubComponent, CoreFilterHubService, CoreFormComponent, CoreFormControlBaseComponent, CoreFormControlSeekerComponent, CoreFormLiteComponent, CoreFormService, CoreFormTabComponent, CoreGridBufferComponent, CoreHeaderParamsComponent, CoreHelperComponent, CoreIosSwitcherComponent, CoreLineComponent, CoreListComponent, CoreListLazyComponent, CoreLoadingSurfaceComponent, CoreMccComponent, CoreMonthPickerComponent, CoreMonthSelectorComponent, CoreNavigationTrackerComponent, CoreOauthCallbackComponent, CoreOauthCallbackOffice365Component, CoreOrgParamComponent, CoreOrgTreeComponent, CoreOrgTreeService, CoreOrgTreeState, CoreOrgUnitSeekerComponent, CoreOrgchartflexComponent, CorePageEditComponent, CorePageEditLiteComponent, CorePageEditService, CorePageEditTabComponent, CorePageHeaderComponent, CorePageListComponent, CorePageListContentComponent, CorePageListService, CorePageListState, CorePageViewComponent, CorePaginationComponent, CorePaginationFullComponent, CorePaginationFullService, CoreParamControlComponent, CorePermissionActionsComponent, CorePermissionComponent, CorePermissionService, CorePositionConcurrentSeekerComponent, CorePositionSeekerComponent, CoreQrcodeComponent, CoreQueryBuilderComponent, CoreRadioGroupComponent, CoreReducerIconComponent, CoreRootMenuItemPickerComponent, CoreRotatingTextComponent, CoreRoutingHistoryComponent, CoreScrollComponent, CoreScrollLazyComponent, CoreSeenByComponent, CoreShiftCardComponent, CoreShiftCellComponent, CoreShiftCollectionComponent, CoreShiftStickerComponent, CoreStatisticWidgetComponent, CoreStatusStickerComponent, CoreSubFormGroupComponent, CoreTabListComponent, CoreTableComponent, CoreTableService, CoreTabsComponent, CoreTagsComponent, CoreTopicPickerComponent, CoreTopicTreeComponent, CoreTreeComponent, CoreTreeGridComponent, CoreWageSeekerComponent, CoreWorkingSeekerComponent, CoreYearPickerComponent, CustomValidators, DATE_VALUE_ACCESSOR, DEFAULT_SVG, DESKTOP_SCREEN_HEDER_HEIGHT, DateValueAccessor, DecisionComponent, DialogService, DialogStateComponent, DndService, DomService, ECoreTableToolClass, ECoreTableToolCode, EnumAlertType, EnumBrowserType, EnumButtonCaptionCode, EnumCoreArticleCategoryTreeaAccessorMode, EnumCoreButtonCode, EnumCoreButtonVNSCode, EnumCoreFileUploaderType, EnumCoreFormControlSeekerSourceType, EnumCoreOrgTreeaAccessorMode, EnumCoreOrgTreeaSearchMode, EnumCorePageEditBootstrapClass, EnumCorePageEditFieldType, EnumCorePageEditMode, EnumCoreSeekerColumnContract, EnumCoreSeekerColumnJob, EnumCoreSeekerColumnPosition, EnumCoreSeekerColumnPositionConcurrent, EnumCoreSeekerColumnStaffProfile, EnumCoreSeekerColumnWage, EnumCoreSeekerColumnWorking, EnumCoreTablePipeType, EnumCoreTreeGridEditMode, EnumCoreViewItemType, EnumDeviceType, EnumDragType, EnumErrorType, EnumExType, EnumFilterOperator, EnumFormBaseContolType, EnumHrComparisonCode, EnumICoreStatisticWidgetDataType, EnumIconClass, EnumImageResolverType, EnumNotificationDir, EnumOparator, EnumOsType, EnumPermissionObjectType, EnumProfileInfoSector, EnumRecursiveFields, EnumSignalRType, EnumSortDirection, EnumSsrsExpressExportFormat, EnumSsrsExpressFileExtension, EnumStyleButtonClass, EnumSwUpdateVersionUpdatesEventType, EnumWorkScheduleViewMode, EvaluateDialogComponent, EvaluateDialogService, FileService, FilterKitService, FilterPipe, FooterComponent, FullscreenModalLoaderComponent, FunctionComponent, FunctionEditComponent, FunctionEditService, FunctionIgnoreComponent, FunctionIgnoreEditComponent, GroupFunctionComponent, GroupFunctionEditComponent, GrpcService, HeaderService, HistoryService, HotKeysDirective, HttpErrorHandler, HubConnectionService, HuconcurrentlyComponent, IAlertOptions, ImageErrorResolverDirective, InMemoryComponent, InitializationCanActivateFn, InitializationCanMatchFn, InterceptorSkipHeader, IpServiceService, ItemComponent, JobComponent, JsonService, LanguageChangerComponent, LanguageComponent, LanguageEditComponent, LayoutService, LongTaskService, MOBILE_SCREEN_HEDER_HEIGHT, MapAppdemoToServerPipePipe, MapAttachmentToServerPipe, MapAvatarToServerPipe, MapNewsfeedMediaToServerPipe, MapService, MenuComponent, MenuEditComponent, MenuService, MessageService, ModalService, MultiLanguageService, MutationLogComponent, MutationViewComponent, NavigatorComponent, NavigatorService, NewlyCreatedTokenService, NormalizeHumanNamePipe, NotificationActionType, OnlineUsersComponent, OrganizationService, OtpInputComponent, OtpInputService, PageTitleComponent, PaginationComponent, PkceService, PortalRouteComponent, PortalRouteEditComponent, PositionComponent, PositionEditService, PositionTransferService, PushNotificationService, RandomAvatarService, RecursiveService, RequestCache, RequestCacheWithMap, ResponseService, RightchatComponent, RoutingService, STICKER_COLOR_SCHEMA, SeekerService, SocketService, SsrsExpressService, StaffProfileComponent, StatisticAuthService, StatisticService, StringHtmlPipe, StringService, SysActionComponent, SysActionEditComponent, SysFunctionActionComponent, SysFunctionActionEditComponent, SysFunctionActionMapperComponent, SysFunctionUrlMapperComponent, SysMenuService, SysModuleComponent, SysModuleEditComponent, TLA_CONFIG, TableCellPipe, Textbox, ThreedotsComponent, TimeSheetService, TooltipComponent, TooltipDirective, TopicPermissionService, TopicTreeService, TranslatePipe, UnicodeService, UploadedFileService, UploadedFilenameCutoffPipe, UrlService, UserActivityComponent, UserActivityService, WageComponent, WaittingScreenComponent, WorkShiftDndService, alertOptions, attachmentOptions, authInterceptor, baseUrlInterceptor, blob_to_base64_script, cachingInterceptor, defaultPaging, graphInterceptor, httpInterceptorProviders, langInterceptor, liner_to_nested_array_script, longAlertOptions, noneAutoClosedAlertOptions, normalizeHumanName, responseInterceptor, themeBlue, timeZoneInterceptor, tokenInterceptor };
|
|
30167
30277
|
//# sourceMappingURL=ngx-histaff-alpha.mjs.map
|