aril 0.1.0 → 0.1.2

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.
@@ -61,16 +61,24 @@ const getAppHeader = (appName) => {
61
61
  }
62
62
  return appHeader;
63
63
  };
64
+ const getCsrfToken = () => {
65
+ return document.cookie
66
+ .split('; ')
67
+ .find(row => row.startsWith('csrf_token='))
68
+ ?.split('=')[1];
69
+ };
64
70
  export const authInterceptor = (req, next) => {
65
71
  const token = globalThis.keycloakService?._instance?.token;
66
72
  const currentApp = getCurrentAppName(globalThis.activeHost, globalThis.activeMF);
67
73
  const appNameHeader = getAppHeader(currentApp);
74
+ const csrfToken = getCsrfToken();
68
75
  const authReq = req.clone({
69
76
  setHeaders: {
70
77
  Authorization: `Bearer ${token}`,
78
+ 'csrf_token': csrfToken || '',
71
79
  ...appNameHeader
72
80
  }
73
81
  });
74
82
  return next(authReq);
75
83
  };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLEVBQUU7SUFDdEQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO2dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1FBQ1IsQ0FBQztJQUNGLENBQUM7U0FBTSxDQUFDO1FBQ1AsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUc7Z0JBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDZCxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUc7Z0JBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNYLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1lBQ1A7Z0JBQ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsQ0FBQztJQUNGLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQ3hDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLElBQUk7WUFDYixTQUFTLEdBQUc7Z0JBQ1gsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLFVBQVUsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFDRixNQUFNO1FBQ1AsS0FBSyxJQUFJLENBQUMsSUFBSTtZQUNiLFNBQVMsR0FBRztnQkFDWCxlQUFlLEVBQUUsTUFBTTtnQkFDdkIsVUFBVSxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUNGLE1BQU07UUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQ2IsU0FBUyxHQUFHO2dCQUNYLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixVQUFVLEVBQUUsU0FBUzthQUNyQixDQUFDO1lBQ0YsTUFBTTtJQUNSLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXNCLENBQUMsR0FBeUIsRUFBRSxJQUFtQixFQUFFLEVBQUU7SUFDcEcsTUFBTSxLQUFLLEdBQVMsVUFBVyxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDO0lBQ2xFLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFPLFVBQVcsQ0FBQyxVQUFVLEVBQVEsVUFBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3pCLFVBQVUsRUFBRTtZQUNYLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTtZQUNoQyxHQUFHLGFBQWE7U0FDaEI7S0FDRCxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuXHJcbmNvbnN0IGdldEN1cnJlbnRBcHBOYW1lID0gKGhvc3Q6IHN0cmluZywgbWY6IHN0cmluZykgPT4ge1xyXG5cdGxldCBhcHBOYW1lID0gJyc7XHJcblx0aWYgKGhvc3QpIHtcclxuXHRcdHN3aXRjaCAoaG9zdCkge1xyXG5cdFx0XHRjYXNlIEFwcHMuWUVBUDpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5ZRUFQO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuTEVOQTpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5MRU5BO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5USE9SO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdH0gZWxzZSB7XHJcblx0XHRzd2l0Y2ggKG1mKSB7XHJcblx0XHRcdGNhc2UgQXBwcy5IRVM6XHJcblx0XHRcdGNhc2UgQXBwcy5DVFM6XHJcblx0XHRcdGNhc2UgQXBwcy5TSVM6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuTEVOQTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBBcHBzLkNSTTpcclxuXHRcdFx0Y2FzZSBBcHBzLkJJTExJTkc6XHJcblx0XHRcdGNhc2UgQXBwcy5QQVlNRU5UOlxyXG5cdFx0XHRjYXNlIEFwcHMuV0RNOlxyXG5cdFx0XHRjYXNlIEFwcHMuTU5HOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLlRIT1I7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5NVzpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5ZRUFQO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiBhcHBOYW1lO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXBwSGVhZGVyID0gKGFwcE5hbWU6IHN0cmluZykgPT4ge1xyXG5cdGxldCBhcHBIZWFkZXIgPSB7fTtcclxuXHRzd2l0Y2ggKGFwcE5hbWUpIHtcclxuXHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRhcHBIZWFkZXIgPSB7XHJcblx0XHRcdFx0XCJ4LWFwcGxpY2F0aW9uXCI6IFwieWVhcFwiLFxyXG5cdFx0XHRcdFwieC1tb2R1bGVcIjogXCJ5ZWFwLWZlXCJcclxuXHRcdFx0fTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIEFwcHMuTEVOQTpcclxuXHRcdFx0YXBwSGVhZGVyID0ge1xyXG5cdFx0XHRcdFwieC1hcHBsaWNhdGlvblwiOiBcImxlbmFcIixcclxuXHRcdFx0XHRcIngtbW9kdWxlXCI6IFwibGVuYS1mZVwiXHJcblx0XHRcdH07XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSBBcHBzLlRIT1I6XHJcblx0XHRcdGFwcEhlYWRlciA9IHtcclxuXHRcdFx0XHRcIngtYXBwbGljYXRpb25cIjogXCJ0aG9yXCIsXHJcblx0XHRcdFx0XCJ4LW1vZHVsZVwiOiBcInRob3ItZmVcIlxyXG5cdFx0XHR9O1xyXG5cdFx0XHRicmVhaztcclxuXHR9XHJcblx0cmV0dXJuIGFwcEhlYWRlcjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCB0b2tlbiA9ICg8YW55Pmdsb2JhbFRoaXMpLmtleWNsb2FrU2VydmljZT8uX2luc3RhbmNlPy50b2tlbjtcclxuXHRjb25zdCBjdXJyZW50QXBwID0gZ2V0Q3VycmVudEFwcE5hbWUoKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlSG9zdCwgKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlTUYpO1xyXG5cdGNvbnN0IGFwcE5hbWVIZWFkZXIgPSBnZXRBcHBIZWFkZXIoY3VycmVudEFwcCk7XHJcblx0Y29uc3QgYXV0aFJlcSA9IHJlcS5jbG9uZSh7XHJcblx0XHRzZXRIZWFkZXJzOiB7XHJcblx0XHRcdEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxyXG5cdFx0XHQuLi5hcHBOYW1lSGVhZGVyXHJcblx0XHR9XHJcblx0fSk7XHJcblxyXG5cdHJldHVybiBuZXh0KGF1dGhSZXEpO1xyXG59O1xyXG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwva2V5Y2xvYWsvc3JjL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLEVBQUU7SUFDdEQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksSUFBSSxFQUFFLENBQUM7UUFDVixRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2QsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDcEIsTUFBTTtZQUNQLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO2dCQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1FBQ1IsQ0FBQztJQUNGLENBQUM7U0FBTSxDQUFDO1FBQ1AsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNaLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUc7Z0JBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDZCxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNkLEtBQUssSUFBSSxDQUFDLEdBQUc7Z0JBQ1osT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDUCxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNYLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNO1lBQ1A7Z0JBQ0MsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsQ0FBQztJQUNGLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQ3hDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLElBQUk7WUFDYixTQUFTLEdBQUc7Z0JBQ1gsZUFBZSxFQUFFLE1BQU07Z0JBQ3ZCLFVBQVUsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFDRixNQUFNO1FBQ1AsS0FBSyxJQUFJLENBQUMsSUFBSTtZQUNiLFNBQVMsR0FBRztnQkFDWCxlQUFlLEVBQUUsTUFBTTtnQkFDdkIsVUFBVSxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUNGLE1BQU07UUFDUCxLQUFLLElBQUksQ0FBQyxJQUFJO1lBQ2IsU0FBUyxHQUFHO2dCQUNYLGVBQWUsRUFBRSxNQUFNO2dCQUN2QixVQUFVLEVBQUUsU0FBUzthQUNyQixDQUFDO1lBQ0YsTUFBTTtJQUNSLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRyxHQUF1QixFQUFFO0lBQzdDLE9BQU8sUUFBUSxDQUFDLE1BQU07U0FDbkIsS0FBSyxDQUFDLElBQUksQ0FBQztTQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0MsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUosTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQixDQUFDLEdBQXlCLEVBQUUsSUFBbUIsRUFBRSxFQUFFO0lBQ3BHLE1BQU0sS0FBSyxHQUFTLFVBQVcsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBTyxVQUFXLENBQUMsVUFBVSxFQUFRLFVBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN6QixVQUFVLEVBQUU7WUFDWCxhQUFhLEVBQUUsVUFBVSxLQUFLLEVBQUU7WUFDaEMsWUFBWSxFQUFFLFNBQVMsSUFBSSxFQUFFO1lBQzdCLEdBQUcsYUFBYTtTQUNoQjtLQUNELENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIYW5kbGVyRm4sIEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuXHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5cclxuY29uc3QgZ2V0Q3VycmVudEFwcE5hbWUgPSAoaG9zdDogc3RyaW5nLCBtZjogc3RyaW5nKSA9PiB7XHJcblx0bGV0IGFwcE5hbWUgPSAnJztcclxuXHRpZiAoaG9zdCkge1xyXG5cdFx0c3dpdGNoIChob3N0KSB7XHJcblx0XHRcdGNhc2UgQXBwcy5ZRUFQOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5MRU5BOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLkxFTkE7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgQXBwcy5USE9SOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLlRIT1I7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHR9XHJcblx0fSBlbHNlIHtcclxuXHRcdHN3aXRjaCAobWYpIHtcclxuXHRcdFx0Y2FzZSBBcHBzLkhFUzpcclxuXHRcdFx0Y2FzZSBBcHBzLkNUUzpcclxuXHRcdFx0Y2FzZSBBcHBzLlNJUzpcclxuXHRcdFx0XHRhcHBOYW1lID0gQXBwcy5MRU5BO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIEFwcHMuQ1JNOlxyXG5cdFx0XHRjYXNlIEFwcHMuQklMTElORzpcclxuXHRcdFx0Y2FzZSBBcHBzLlBBWU1FTlQ6XHJcblx0XHRcdGNhc2UgQXBwcy5XRE06XHJcblx0XHRcdGNhc2UgQXBwcy5NTkc6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuVEhPUjtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBBcHBzLk1XOlxyXG5cdFx0XHRcdGFwcE5hbWUgPSBBcHBzLllFQVA7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0YXBwTmFtZSA9IEFwcHMuWUVBUDtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGFwcE5hbWU7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBcHBIZWFkZXIgPSAoYXBwTmFtZTogc3RyaW5nKSA9PiB7XHJcblx0bGV0IGFwcEhlYWRlciA9IHt9O1xyXG5cdHN3aXRjaCAoYXBwTmFtZSkge1xyXG5cdFx0Y2FzZSBBcHBzLllFQVA6XHJcblx0XHRcdGFwcEhlYWRlciA9IHtcclxuXHRcdFx0XHRcIngtYXBwbGljYXRpb25cIjogXCJ5ZWFwXCIsXHJcblx0XHRcdFx0XCJ4LW1vZHVsZVwiOiBcInllYXAtZmVcIlxyXG5cdFx0XHR9O1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgQXBwcy5MRU5BOlxyXG5cdFx0XHRhcHBIZWFkZXIgPSB7XHJcblx0XHRcdFx0XCJ4LWFwcGxpY2F0aW9uXCI6IFwibGVuYVwiLFxyXG5cdFx0XHRcdFwieC1tb2R1bGVcIjogXCJsZW5hLWZlXCJcclxuXHRcdFx0fTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlIEFwcHMuVEhPUjpcclxuXHRcdFx0YXBwSGVhZGVyID0ge1xyXG5cdFx0XHRcdFwieC1hcHBsaWNhdGlvblwiOiBcInRob3JcIixcclxuXHRcdFx0XHRcIngtbW9kdWxlXCI6IFwidGhvci1mZVwiXHJcblx0XHRcdH07XHJcblx0XHRcdGJyZWFrO1xyXG5cdH1cclxuXHRyZXR1cm4gYXBwSGVhZGVyO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q3NyZlRva2VuID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0cmV0dXJuIGRvY3VtZW50LmNvb2tpZVxyXG5cdCAgLnNwbGl0KCc7ICcpXHJcblx0ICAuZmluZChyb3cgPT4gcm93LnN0YXJ0c1dpdGgoJ2NzcmZfdG9rZW49JykpXHJcblx0ICA/LnNwbGl0KCc9JylbMV07XHJcbiAgfTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdXRoSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcTogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyRm4pID0+IHtcclxuXHRjb25zdCB0b2tlbiA9ICg8YW55Pmdsb2JhbFRoaXMpLmtleWNsb2FrU2VydmljZT8uX2luc3RhbmNlPy50b2tlbjtcclxuXHRjb25zdCBjdXJyZW50QXBwID0gZ2V0Q3VycmVudEFwcE5hbWUoKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlSG9zdCwgKDxhbnk+Z2xvYmFsVGhpcykuYWN0aXZlTUYpO1xyXG5cdGNvbnN0IGFwcE5hbWVIZWFkZXIgPSBnZXRBcHBIZWFkZXIoY3VycmVudEFwcCk7XHJcblx0Y29uc3QgY3NyZlRva2VuID0gZ2V0Q3NyZlRva2VuKCk7XHJcblxyXG5cdGNvbnN0IGF1dGhSZXEgPSByZXEuY2xvbmUoe1xyXG5cdFx0c2V0SGVhZGVyczoge1xyXG5cdFx0XHRBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcclxuXHRcdFx0J2NzcmZfdG9rZW4nOiBjc3JmVG9rZW4gfHwgJycsXHJcblx0XHRcdC4uLmFwcE5hbWVIZWFkZXJcclxuXHRcdH1cclxuXHR9KTtcclxuXHJcblx0cmV0dXJuIG5leHQoYXV0aFJlcSk7XHJcbn07Il19
@@ -1,16 +1,18 @@
1
1
  import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';
2
- import { Component } from '@angular/core';
2
+ import { Component, effect } from '@angular/core';
3
3
  import { NavigationEnd, RouterLink } from '@angular/router';
4
4
  import { BreadcrumbModule } from 'primeng/breadcrumb';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import { filter } from 'rxjs/operators';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/router";
9
- import * as i2 from "primeng/breadcrumb";
10
- import * as i3 from "primeng/api";
9
+ import * as i2 from "../../service/breadcrumb.service";
10
+ import * as i3 from "primeng/breadcrumb";
11
+ import * as i4 from "primeng/api";
11
12
  export class AppBreadcrumbComponent {
12
- constructor(router) {
13
+ constructor(router, breadcrumbService) {
13
14
  this.router = router;
15
+ this.breadcrumbService = breadcrumbService;
14
16
  this._breadcrumbs$ = new BehaviorSubject([]);
15
17
  this.breadcrumbs$ = this._breadcrumbs$.asObservable();
16
18
  this.breadcrumbs = [];
@@ -20,12 +22,20 @@ export class AppBreadcrumbComponent {
20
22
  this.addBreadcrumb(root, [], breadcrumbs);
21
23
  this._breadcrumbs$.next(breadcrumbs);
22
24
  });
25
+ effect(() => {
26
+ if (this.breadcrumbService.keyValues()) {
27
+ const root = this.router.routerState.snapshot.root;
28
+ const breadcrumbs = [];
29
+ this.addBreadcrumb(root, [], breadcrumbs);
30
+ this._breadcrumbs$.next(breadcrumbs);
31
+ }
32
+ });
23
33
  }
24
34
  ngOnInit() {
25
- this.breadcrumbsSubscription = this.breadcrumbs$.subscribe(breadcrumbs => {
26
- this.breadcrumbs = breadcrumbs.map(breadcrumb => ({
35
+ this.breadcrumbsSubscription = this.breadcrumbs$.subscribe((breadcrumbs) => {
36
+ this.breadcrumbs = breadcrumbs.map((breadcrumb) => ({
27
37
  label: breadcrumb.label,
28
- url: breadcrumb.url,
38
+ url: breadcrumb.url
29
39
  }));
30
40
  this.breadcrumbs.unshift({ icon: 'pi pi-home', url: '/' });
31
41
  });
@@ -40,20 +50,31 @@ export class AppBreadcrumbComponent {
40
50
  const breadcrumb = route.data['breadcrumb'];
41
51
  const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;
42
52
  if (breadcrumb && breadcrumb !== parentBreadcrumb) {
43
- breadcrumbs.push({
44
- label: route.data['breadcrumb'],
45
- url: '/' + routeUrl.join('/')
46
- });
53
+ const keyRegex = new RegExp('(?<=\\{)([^}]+)(?=\\})');
54
+ const key = (keyRegex.exec(route.data['breadcrumb']) || [])[0];
55
+ const value = this.breadcrumbService.getValue(key);
56
+ if (key && value) {
57
+ breadcrumbs.push({
58
+ label: route.data['breadcrumb'].replace(`{${key}}`, value),
59
+ url: '/' + routeUrl.join('/')
60
+ });
61
+ }
62
+ else {
63
+ breadcrumbs.push({
64
+ label: route.data['breadcrumb'],
65
+ url: '/' + routeUrl.join('/')
66
+ });
67
+ }
47
68
  }
48
69
  if (route.firstChild) {
49
70
  this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
50
71
  }
51
72
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\" [style]=\"{ border: 'none', background: '#EFF3F8' }\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class=\"text-500\">{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i2.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, deps: [{ token: i1.Router }, { token: i2.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppBreadcrumbComponent, isStandalone: true, selector: "app-breadcrumb", ngImport: i0, template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\" [style]=\"{ border: 'none', background: '#EFF3F8' }\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class=\"text-500\">{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: BreadcrumbModule }, { kind: "component", type: i3.Breadcrumb, selector: "p-breadcrumb", inputs: ["model", "style", "styleClass", "home", "homeAriaLabel"], outputs: ["onItemClick"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
54
75
  }
55
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppBreadcrumbComponent, decorators: [{
56
77
  type: Component,
57
78
  args: [{ standalone: true, selector: 'app-breadcrumb', imports: [NgTemplateOutlet, AsyncPipe, RouterLink, BreadcrumbModule, NgClass], template: "<p-breadcrumb class=\"max-w-full\" [model]=\"breadcrumbs\" [style]=\"{ border: 'none', background: '#EFF3F8' }\">\r\n\t<ng-template pTemplate=\"item\" let-item>\r\n\t\t<a [routerLink]=\"item.url\">\r\n\t\t\t<span [ngClass]=\"[item.icon ? item.icon : '', 'text-500']\"></span>\r\n\t\t\t<span class=\"text-500\">{{ item.label }}</span>\r\n\t\t</a>\r\n\t</ng-template>\r\n</p-breadcrumb>\r\n" }]
58
- }], ctorParameters: () => [{ type: i1.Router }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBMEIsYUFBYSxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFheEMsTUFBTSxPQUFPLHNCQUFzQjtJQU9sQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU5qQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRzlELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6RCxnQkFBVyxHQUFlLEVBQUUsQ0FBQztRQUc3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5RixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25ELE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRTFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVE7UUFDTCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUc7YUFDcEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUYsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLENBQUM7SUFDRixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQTZCLEVBQUUsU0FBbUIsRUFBRSxXQUF5QjtRQUNsRyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNwRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVwRyxJQUFJLFVBQVUsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxXQUFXLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQy9CLEdBQUcsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDN0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNGLENBQUM7OEdBaERXLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBFQ3BCbkMsc1lBUUEsNENEU3dDLFVBQVUsbU9BQUMsZ0JBQWdCLHlTQUFDLE9BQU87OzJGQUc5RCxzQkFBc0I7a0JBTmxDLFNBQVM7aUNBQ0csSUFBSSxZQUNOLGdCQUFnQixXQUNqQixDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsZ0JBQWdCLEVBQUMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBCcmVhZGNydW1iTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9icmVhZGNydW1iJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmludGVyZmFjZSBCcmVhZGNydW1iIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1icmVhZGNydW1iJyxcclxuXHRpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgQXN5bmNQaXBlLCBSb3V0ZXJMaW5rLEJyZWFkY3J1bWJNb2R1bGUsTmdDbGFzc10sXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FwcC5icmVhZGNydW1iLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQnJlYWRjcnVtYkNvbXBvbmVudCB7XHJcblx0cHJpdmF0ZSByZWFkb25seSBfYnJlYWRjcnVtYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCcmVhZGNydW1iW10+KFtdKTtcclxuXHRwcml2YXRlIGJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRyZWFkb25seSBicmVhZGNydW1icyQgPSB0aGlzLl9icmVhZGNydW1icyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgYnJlYWRjcnVtYnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0Y29uc3QgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdO1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm9vdCwgW10sIGJyZWFkY3J1bWJzKTtcclxuXHJcblx0XHRcdHRoaXMuX2JyZWFkY3J1bWJzJC5uZXh0KGJyZWFkY3J1bWJzKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uID0gdGhpcy5icmVhZGNydW1icyQuc3Vic2NyaWJlKGJyZWFkY3J1bWJzID0+IHtcclxuICAgICAgdGhpcy5icmVhZGNydW1icyA9IGJyZWFkY3J1bWJzLm1hcChicmVhZGNydW1iID0+ICh7XHJcbiAgICAgICAgbGFiZWw6IGJyZWFkY3J1bWIubGFiZWwsXHJcbiAgICAgICAgdXJsOiBicmVhZGNydW1iLnVybCxcclxuICAgICAgfSkpO1xyXG5cdFx0XHR0aGlzLmJyZWFkY3J1bWJzLnVuc2hpZnQoeyBpY29uOiAncGkgcGktaG9tZScsIHVybDogJy8nIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdGlmICh0aGlzLmJyZWFkY3J1bWJzU3Vic2NyaXB0aW9uKSB7XHJcblx0XHRcdHRoaXMuYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYWRkQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcGFyZW50VXJsOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSkge1xyXG5cdFx0Y29uc3Qgcm91dGVVcmwgPSBwYXJlbnRVcmwuY29uY2F0KHJvdXRlLnVybC5tYXAoKHVybCkgPT4gdXJsLnBhdGgpKTtcclxuXHRcdGNvbnN0IGJyZWFkY3J1bWIgPSByb3V0ZS5kYXRhWydicmVhZGNydW1iJ107XHJcblx0XHRjb25zdCBwYXJlbnRCcmVhZGNydW1iID0gcm91dGUucGFyZW50ICYmIHJvdXRlLnBhcmVudC5kYXRhID8gcm91dGUucGFyZW50LmRhdGFbJ2JyZWFkY3J1bWInXSA6IG51bGw7XHJcblxyXG5cdFx0aWYgKGJyZWFkY3J1bWIgJiYgYnJlYWRjcnVtYiAhPT0gcGFyZW50QnJlYWRjcnVtYikge1xyXG5cdFx0XHRicmVhZGNydW1icy5wdXNoKHtcclxuXHRcdFx0XHRsYWJlbDogcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddLFxyXG5cdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChyb3V0ZS5maXJzdENoaWxkKSB7XHJcblx0XHRcdHRoaXMuYWRkQnJlYWRjcnVtYihyb3V0ZS5maXJzdENoaWxkLCByb3V0ZVVybCwgYnJlYWRjcnVtYnMpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCI8cC1icmVhZGNydW1iIGNsYXNzPVwibWF4LXctZnVsbFwiIFttb2RlbF09XCJicmVhZGNydW1ic1wiIFtzdHlsZV09XCJ7IGJvcmRlcjogJ25vbmUnLCBiYWNrZ3JvdW5kOiAnI0VGRjNGOCcgfVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpdGVtXCIgbGV0LWl0ZW0+XHJcblx0XHQ8YSBbcm91dGVyTGlua109XCJpdGVtLnVybFwiPlxyXG5cdFx0XHQ8c3BhbiBbbmdDbGFzc109XCJbaXRlbS5pY29uID8gaXRlbS5pY29uIDogJycsICd0ZXh0LTUwMCddXCI+PC9zcGFuPlxyXG5cdFx0XHQ8c3BhbiBjbGFzcz1cInRleHQtNTAwXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cclxuXHRcdDwvYT5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtYnJlYWRjcnVtYj5cclxuIl19
79
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.BreadcrumbService }] });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvYXBwL2JyZWFkY3J1bWIvYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQTBCLGFBQWEsRUFBVSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQWV4QyxNQUFNLE9BQU8sc0JBQXNCO0lBT2xDLFlBQ1MsTUFBYyxFQUNkLGlCQUFvQztRQURwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVI1QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBRzlELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCxnQkFBVyxHQUFlLEVBQUUsQ0FBQztRQU01QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FB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QUFFLENBQUM7Z0JBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQztvQkFDdEUsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztvQkFDL0IsR0FBRyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0osQ0FBQztRQUNGLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDRixDQUFDOzhHQTFFVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwRUN2Qm5DLHNZQVFBLDRDRFl3QyxVQUFVLG1PQUFFLGdCQUFnQix5U0FBRSxPQUFPOzsyRkFHaEUsc0JBQXNCO2tCQU5sQyxTQUFTO2lDQUNHLElBQUksWUFDTixnQkFBZ0IsV0FDakIsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgZWZmZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnJlYWRjcnVtYk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnJlYWRjcnVtYic7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBCcmVhZGNydW1iU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBCcmVhZGNydW1iIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHVybD86IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FwcC1icmVhZGNydW1iJyxcclxuXHRpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgQXN5bmNQaXBlLCBSb3V0ZXJMaW5rLCBCcmVhZGNydW1iTW9kdWxlLCBOZ0NsYXNzXSxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYXBwLmJyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcHBCcmVhZGNydW1iQ29tcG9uZW50IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IF9icmVhZGNydW1icyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyZWFkY3J1bWJbXT4oW10pO1xyXG5cdHByaXZhdGUgYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdHJlYWRvbmx5IGJyZWFkY3J1bWJzJCA9IHRoaXMuX2JyZWFkY3J1bWJzJC5hc09ic2VydmFibGUoKTtcclxuXHRicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtdO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwcml2YXRlIGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG5cdFx0XHRjb25zdCByb290ID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcclxuXHRcdFx0Y29uc3QgYnJlYWRjcnVtYnM6IEJyZWFkY3J1bWJbXSA9IFtdO1xyXG5cclxuXHRcdFx0dGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XHJcblxyXG5cdFx0XHR0aGlzLl9icmVhZGNydW1icyQubmV4dChicmVhZGNydW1icyk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHRpZiAodGhpcy5icmVhZGNydW1iU2VydmljZS5rZXlWYWx1ZXMoKSkge1xyXG5cdFx0XHRcdGNvbnN0IHJvb3QgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290O1xyXG5cdFx0XHRcdGNvbnN0IGJyZWFkY3J1bWJzOiBCcmVhZGNydW1iW10gPSBbXTtcclxuXHJcblx0XHRcdFx0dGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XHJcblxyXG5cdFx0XHRcdHRoaXMuX2JyZWFkY3J1bWJzJC5uZXh0KGJyZWFkY3J1bWJzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24gPSB0aGlzLmJyZWFkY3J1bWJzJC5zdWJzY3JpYmUoKGJyZWFkY3J1bWJzKSA9PiB7XHJcblx0XHRcdHRoaXMuYnJlYWRjcnVtYnMgPSBicmVhZGNydW1icy5tYXAoKGJyZWFkY3J1bWIpID0+ICh7XHJcblx0XHRcdFx0bGFiZWw6IGJyZWFkY3J1bWIubGFiZWwsXHJcblx0XHRcdFx0dXJsOiBicmVhZGNydW1iLnVybFxyXG5cdFx0XHR9KSk7XHJcblx0XHRcdHRoaXMuYnJlYWRjcnVtYnMudW5zaGlmdCh7IGljb246ICdwaSBwaS1ob21lJywgdXJsOiAnLycgfSk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0aWYgKHRoaXMuYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5icmVhZGNydW1ic1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhZGRCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBwYXJlbnRVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogQnJlYWRjcnVtYltdKSB7XHJcblx0XHRjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCgodXJsKSA9PiB1cmwucGF0aCkpO1xyXG5cdFx0Y29uc3QgYnJlYWRjcnVtYiA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXTtcclxuXHRcdGNvbnN0IHBhcmVudEJyZWFkY3J1bWIgPSByb3V0ZS5wYXJlbnQgJiYgcm91dGUucGFyZW50LmRhdGEgPyByb3V0ZS5wYXJlbnQuZGF0YVsnYnJlYWRjcnVtYiddIDogbnVsbDtcclxuXHJcblx0XHRpZiAoYnJlYWRjcnVtYiAmJiBicmVhZGNydW1iICE9PSBwYXJlbnRCcmVhZGNydW1iKSB7XHJcblx0XHRcdGNvbnN0IGtleVJlZ2V4ID0gbmV3IFJlZ0V4cCgnKD88PVxcXFx7KShbXn1dKykoPz1cXFxcfSknKTtcclxuXHRcdFx0Y29uc3Qga2V5ID0gKGtleVJlZ2V4LmV4ZWMocm91dGUuZGF0YVsnYnJlYWRjcnVtYiddKSB8fCBbXSlbMF0hO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuZ2V0VmFsdWUoa2V5KTtcclxuXHJcblx0XHRcdGlmIChrZXkgJiYgdmFsdWUpIHtcclxuXHRcdFx0XHRicmVhZGNydW1icy5wdXNoKHtcclxuXHRcdFx0XHRcdGxhYmVsOiAocm91dGUuZGF0YVsnYnJlYWRjcnVtYiddIGFzIHN0cmluZykucmVwbGFjZShgeyR7a2V5fX1gLCB2YWx1ZSksXHJcblx0XHRcdFx0XHR1cmw6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGJyZWFkY3J1bWJzLnB1c2goe1xyXG5cdFx0XHRcdFx0bGFiZWw6IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSxcclxuXHRcdFx0XHRcdHVybDogJy8nICsgcm91dGVVcmwuam9pbignLycpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAocm91dGUuZmlyc3RDaGlsZCkge1xyXG5cdFx0XHR0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPHAtYnJlYWRjcnVtYiBjbGFzcz1cIm1heC13LWZ1bGxcIiBbbW9kZWxdPVwiYnJlYWRjcnVtYnNcIiBbc3R5bGVdPVwieyBib3JkZXI6ICdub25lJywgYmFja2dyb3VuZDogJyNFRkYzRjgnIH1cIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxyXG5cdFx0PGEgW3JvdXRlckxpbmtdPVwiaXRlbS51cmxcIj5cclxuXHRcdFx0PHNwYW4gW25nQ2xhc3NdPVwiW2l0ZW0uaWNvbiA/IGl0ZW0uaWNvbiA6ICcnLCAndGV4dC01MDAnXVwiPjwvc3Bhbj5cclxuXHRcdFx0PHNwYW4gY2xhc3M9XCJ0ZXh0LTUwMFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcblx0XHQ8L2E+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9wLWJyZWFkY3J1bWI+XHJcbiJdfQ==
@@ -66,7 +66,7 @@ export class AppTopbarComponent {
66
66
  this.layoutService.showConfigSidebar();
67
67
  }
68
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"filePath()\" class=\"mr-3\" alt=\"yeap\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" style=\"width: 50rem\">\r\n\t\t<span class=\"p-input-icon-left\" style=\"width: 100%\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<input\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tpInputText\r\n\t\t\t\tvariant=\"filled\"\r\n\t\t\t\tplaceholder=\"Genel Arama\"\r\n\t\t\t\tstyle=\"background: #EFF3F8;border: none; height: 42px;\"\r\n\t\t\t\tclass=\"p-inputtext p-component p-element sm:w-full\" />\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-sitemap\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-history\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-heart\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<i class=\"pi pi-bell\" severity=\"info\" pBadge [value]=\"0\"></i>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb>\r\n", dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: AppBreadcrumbComponent, selector: "app-breadcrumb" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i3.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value", "badgeStyle", "badgeStyleClass"] }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppTopbarComponent, isStandalone: true, selector: "app-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\r\n\t<div class=\"topbar-start\">\r\n\t\t<button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\r\n\t\t\t<i class=\"pi pi-bars\"></i>\r\n\t\t</button>\r\n\t\t<img [src]=\"filePath()\" class=\"mr-3\" alt=\"yeap\" />\r\n\t</div>\r\n\r\n\t<div class=\"topbar-search\" style=\"width: 50rem\">\r\n\t\t<span class=\"p-input-icon-left\" style=\"width: 100%\">\r\n\t\t\t<i class=\"pi pi-search\"></i>\r\n\t\t\t<input\r\n\t\t\t\ttype=\"text\"\r\n\t\t\t\tpInputText\r\n\t\t\t\tvariant=\"filled\"\r\n\t\t\t\tplaceholder=\"Genel Arama\"\r\n\t\t\t\tstyle=\"background: #EFF3F8;border: none; height: 42px;\"\r\n\t\t\t\tclass=\"p-inputtext p-component p-element sm:w-full\" />\r\n\t\t</span>\r\n\t</div>\r\n\r\n\t<div class=\"topbar-end mr-2\">\r\n\t\t<ul class=\"topbar-menu\">\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-sitemap\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-history\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button icon=\"pi pi-heart\" severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-button severity=\"secondary\" [text]=\"true\" [rounded]=\"true\" (click)=\"onProfileButtonClick()\">\r\n\t\t\t\t\t{{ username[0] | uppercase }}\r\n\t\t\t\t</p-button>\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<p-divider layout=\"vertical\" styleClass=\"h-1rem border-500 m-0\" />\r\n\t\t\t</li>\r\n\t\t\t<li>\r\n\t\t\t\t<i class=\"pi pi-bell\" severity=\"info\" pBadge [value]=\"0\"></i>\r\n\t\t\t</li>\r\n\t\t</ul>\r\n\t</div>\r\n</div>\r\n\r\n<app-breadcrumb class=\"topbar-breadcrumb\"></app-breadcrumb>\r\n", dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: AppBreadcrumbComponent, selector: "app-breadcrumb" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: DividerModule }, { kind: "component", type: i2.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "directive", type: i3.BadgeDirective, selector: "[pBadge]", inputs: ["badgeDisabled", "badgeSize", "size", "severity", "value"] }] }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppTopbarComponent, decorators: [{
72
72
  type: Component,
@@ -2,4 +2,5 @@ export * from './app/layout/app.layout.component';
2
2
  export * from './app/layout/mfe.layout.component';
3
3
  export * from './service/app.menu.service';
4
4
  export * from './service/selection-group.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAvbGF5b3V0L2FwcC5sYXlvdXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hcHAvbGF5b3V0L21mZS5sYXlvdXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL2FwcC5tZW51LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2Uvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UnO1xyXG5cclxuIl19
5
+ export * from './service/breadcrumb.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC9sYXlvdXQvYXBwLmxheW91dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FwcC9sYXlvdXQvbWZlLmxheW91dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2UvYXBwLm1lbnUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9zZWxlY3Rpb24tZ3JvdXAuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9icmVhZGNydW1iLnNlcnZpY2UnO1xyXG5cclxuIl19
@@ -0,0 +1,20 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BreadcrumbService {
4
+ constructor() {
5
+ this.keyValues = signal({});
6
+ }
7
+ set(key, value) {
8
+ this.keyValues.update((obj) => ({ ...obj, [key]: value }));
9
+ }
10
+ getValue(key) {
11
+ return this.keyValues()[key];
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
14
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, providedIn: 'root' }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BreadcrumbService, decorators: [{
17
+ type: Injectable,
18
+ args: [{ providedIn: 'root' }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC90aGVtZS9sYXlvdXQvc2VydmljZS9icmVhZGNydW1iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR25ELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFQyxjQUFTLEdBQUcsTUFBTSxDQUE0QixFQUFFLENBQUMsQ0FBQztLQVNsRDtJQVBBLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDOzhHQVRXLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iU2VydmljZSB7XHJcblx0a2V5VmFsdWVzID0gc2lnbmFsPHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0+KHt9KTtcclxuXHJcblx0c2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmtleVZhbHVlcy51cGRhdGUoKG9iaikgPT4gKHsgLi4ub2JqLCBba2V5XTogdmFsdWUgfSkpO1xyXG5cdH1cclxuXHJcblx0Z2V0VmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0cmV0dXJuIHRoaXMua2V5VmFsdWVzKClba2V5XTtcclxuXHR9XHJcbn1cclxuIl19
@@ -142,13 +142,21 @@ const getAppHeader = (appName) => {
142
142
  }
143
143
  return appHeader;
144
144
  };
145
+ const getCsrfToken = () => {
146
+ return document.cookie
147
+ .split('; ')
148
+ .find(row => row.startsWith('csrf_token='))
149
+ ?.split('=')[1];
150
+ };
145
151
  const authInterceptor = (req, next) => {
146
152
  const token = globalThis.keycloakService?._instance?.token;
147
153
  const currentApp = getCurrentAppName(globalThis.activeHost, globalThis.activeMF);
148
154
  const appNameHeader = getAppHeader(currentApp);
155
+ const csrfToken = getCsrfToken();
149
156
  const authReq = req.clone({
150
157
  setHeaders: {
151
158
  Authorization: `Bearer ${token}`,
159
+ 'csrf_token': csrfToken || '',
152
160
  ...appNameHeader
153
161
  }
154
162
  });
@@ -1 +1 @@
1
- {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/keycloak.manager.ts","../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/src/auth.guard.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\nimport { KeycloakEventType, KeycloakOptions, KeycloakService } from 'keycloak-angular';\r\nimport { KeycloakLoginOptions } from 'keycloak-js';\r\nimport { Observable, filter } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class KeycloakManager {\r\n\tconstructor(public router: Router) {\r\n\t\tthis.keycloak.keycloakEvents$.subscribe((event) => {\r\n\t\t\tswitch (event.type) {\r\n\t\t\t\tcase KeycloakEventType.OnReady:\r\n\t\t\t\t\t(<any>globalThis).keycloakService = this.keycloak;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KeycloakEventType.OnAuthError:\r\n\t\t\t\tcase KeycloakEventType.OnAuthLogout:\r\n\t\t\t\tcase KeycloakEventType.OnAuthRefreshError:\r\n\t\t\t\t\t(<any>globalThis).keycloakService = null;\r\n\t\t\t\t\t// this.keycloak.clearToken();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {\r\n\t\t\t(<any>globalThis).keycloakService?.updateToken();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic readonly keycloak = inject(KeycloakService);\r\n\r\n\tprivate defaultOptions: KeycloakOptions = {\r\n\t\tloadUserProfileAtStartUp: true,\r\n\t\tinitOptions: { onLoad: 'login-required' },\r\n\t\tbearerExcludedUrls: ['/assets']\r\n\t};\r\n\r\n\tinit(configs: any): Promise<boolean> {\r\n\t\treturn this.keycloak.init({ ...this.defaultOptions, config: configs });\r\n\t}\r\n\r\n\tlogin(options?: KeycloakLoginOptions): Promise<void> {\r\n\t\treturn this.keycloak.login(options);\r\n\t}\r\n\r\n\tlogout(redirectUri?: string): Promise<void> {\r\n\t\treturn this.keycloak.logout(redirectUri); // window.location.origin\r\n\t}\r\n\r\n\tisUserInRole(role: string, resource?: string): boolean {\r\n\t\treturn this.keycloak.isUserInRole(role, resource);\r\n\t}\r\n\r\n\tgetUserRoles(realmRoles?: boolean, resource?: string): string[] {\r\n\t\treturn this.keycloak.getUserRoles(realmRoles, resource);\r\n\t}\r\n\r\n\tisLoggedIn(): boolean {\r\n\t\treturn this.keycloak.isLoggedIn();\r\n\t}\r\n\r\n\tisTokenExpired(minValidity?: number): boolean {\r\n\t\treturn this.keycloak.isTokenExpired(minValidity);\r\n\t}\r\n\r\n\tupdateToken(minValidity?: number): Promise<boolean> {\r\n\t\treturn this.keycloak.updateToken(minValidity);\r\n\t}\r\n\r\n\tloadUserProfile(forceReload?: boolean): Promise<any> {\r\n\t\treturn this.keycloak.loadUserProfile(forceReload);\r\n\t}\r\n\r\n\tgetToken(): Promise<string> {\r\n\t\treturn this.keycloak.getToken();\r\n\t}\r\n\r\n\tgetUsername(): string {\r\n\t\treturn this.keycloak.getUsername();\r\n\t}\r\n\r\n\tclearToken(): void {\r\n\t\tthis.keycloak.clearToken();\r\n\t}\r\n\r\n\taddTokenToHeader(headers?: HttpHeaders): Observable<HttpHeaders> {\r\n\t\treturn this.keycloak.addTokenToHeader(headers);\r\n\t}\r\n\r\n\t\r\n}\r\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nconst getCurrentAppName = (host: string, mf: string) => {\r\n\tlet appName = '';\r\n\tif (host) {\r\n\t\tswitch (host) {\r\n\t\t\tcase Apps.YEAP:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.LENA:\r\n\t\t\t\tappName = Apps.LENA;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.THOR:\r\n\t\t\t\tappName = Apps.THOR;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else {\r\n\t\tswitch (mf) {\r\n\t\t\tcase Apps.HES:\r\n\t\t\tcase Apps.CTS:\r\n\t\t\tcase Apps.SIS:\r\n\t\t\t\tappName = Apps.LENA;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.CRM:\r\n\t\t\tcase Apps.BILLING:\r\n\t\t\tcase Apps.PAYMENT:\r\n\t\t\tcase Apps.WDM:\r\n\t\t\tcase Apps.MNG:\r\n\t\t\t\tappName = Apps.THOR;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.MW:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t}\r\n\t}\r\n\treturn appName;\r\n};\r\n\r\nconst getAppHeader = (appName: string) => {\r\n\tlet appHeader = {};\r\n\tswitch (appName) {\r\n\t\tcase Apps.YEAP:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"yeap\",\r\n\t\t\t\t\"x-module\": \"yeap-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t\tcase Apps.LENA:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"lena\",\r\n\t\t\t\t\"x-module\": \"lena-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t\tcase Apps.THOR:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"thor\",\r\n\t\t\t\t\"x-module\": \"thor-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t}\r\n\treturn appHeader;\r\n};\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst token = (<any>globalThis).keycloakService?._instance?.token;\r\n\tconst currentApp = getCurrentAppName((<any>globalThis).activeHost, (<any>globalThis).activeMF);\r\n\tconst appNameHeader = getAppHeader(currentApp);\r\n\tconst authReq = req.clone({\r\n\t\tsetHeaders: {\r\n\t\t\tAuthorization: `Bearer ${token}`,\r\n\t\t\t...appNameHeader\r\n\t\t}\r\n\t});\r\n\r\n\treturn next(authReq);\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AuthGuard extends KeycloakAuthGuard {\r\n\tconstructor(\r\n\t\tprotected override readonly router: Router,\r\n\t\tprotected readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tsuper(router, keycloak);\r\n\t}\r\n\r\n\tpublic async isAccessAllowed(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n\t\ttry {\r\n\t\t\tif(this.keycloak.isTokenExpired()){\r\n\t\t\t\tawait this.keycloak.updateToken(); \r\n\t\t\t}\r\n\t\t } catch (error) {\r\n\t\t\tawait this.keycloak.login({\r\n\t\t\t redirectUri: window.location.origin + state.url\r\n\t\t\t});\r\n\t\t\treturn false; \r\n\t\t }\r\n\t\t \r\n\t\tif (!this.authenticated) {\r\n\t\t\tawait this.keycloak.login({\r\n\t\t\t\tredirectUri: window.location.origin + state.url\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst requiredRoles = route.data['roles'];\r\n\r\n\t\tif (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst authorized = requiredRoles.every((role) => this.roles.includes(role));\r\n\r\n\t\tif (!authorized) {\r\n\t\t\tconsole.error('User not authorized to access this route');\r\n\t\t\treturn false;\r\n\t\t} else return true;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aril-keycloak.mjs","sources":["../../projects/aril/keycloak/src/keycloak.manager.ts","../../projects/aril/keycloak/src/auth.interceptor.ts","../../projects/aril/keycloak/src/auth.guard.ts","../../projects/aril/keycloak/aril-keycloak.ts"],"sourcesContent":["import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\n\r\nimport { KeycloakEventType, KeycloakOptions, KeycloakService } from 'keycloak-angular';\r\nimport { KeycloakLoginOptions } from 'keycloak-js';\r\nimport { Observable, filter } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class KeycloakManager {\r\n\tconstructor(public router: Router) {\r\n\t\tthis.keycloak.keycloakEvents$.subscribe((event) => {\r\n\t\t\tswitch (event.type) {\r\n\t\t\t\tcase KeycloakEventType.OnReady:\r\n\t\t\t\t\t(<any>globalThis).keycloakService = this.keycloak;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KeycloakEventType.OnAuthError:\r\n\t\t\t\tcase KeycloakEventType.OnAuthLogout:\r\n\t\t\t\tcase KeycloakEventType.OnAuthRefreshError:\r\n\t\t\t\t\t(<any>globalThis).keycloakService = null;\r\n\t\t\t\t\t// this.keycloak.clearToken();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {\r\n\t\t\t(<any>globalThis).keycloakService?.updateToken();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic readonly keycloak = inject(KeycloakService);\r\n\r\n\tprivate defaultOptions: KeycloakOptions = {\r\n\t\tloadUserProfileAtStartUp: true,\r\n\t\tinitOptions: { onLoad: 'login-required' },\r\n\t\tbearerExcludedUrls: ['/assets']\r\n\t};\r\n\r\n\tinit(configs: any): Promise<boolean> {\r\n\t\treturn this.keycloak.init({ ...this.defaultOptions, config: configs });\r\n\t}\r\n\r\n\tlogin(options?: KeycloakLoginOptions): Promise<void> {\r\n\t\treturn this.keycloak.login(options);\r\n\t}\r\n\r\n\tlogout(redirectUri?: string): Promise<void> {\r\n\t\treturn this.keycloak.logout(redirectUri); // window.location.origin\r\n\t}\r\n\r\n\tisUserInRole(role: string, resource?: string): boolean {\r\n\t\treturn this.keycloak.isUserInRole(role, resource);\r\n\t}\r\n\r\n\tgetUserRoles(realmRoles?: boolean, resource?: string): string[] {\r\n\t\treturn this.keycloak.getUserRoles(realmRoles, resource);\r\n\t}\r\n\r\n\tisLoggedIn(): boolean {\r\n\t\treturn this.keycloak.isLoggedIn();\r\n\t}\r\n\r\n\tisTokenExpired(minValidity?: number): boolean {\r\n\t\treturn this.keycloak.isTokenExpired(minValidity);\r\n\t}\r\n\r\n\tupdateToken(minValidity?: number): Promise<boolean> {\r\n\t\treturn this.keycloak.updateToken(minValidity);\r\n\t}\r\n\r\n\tloadUserProfile(forceReload?: boolean): Promise<any> {\r\n\t\treturn this.keycloak.loadUserProfile(forceReload);\r\n\t}\r\n\r\n\tgetToken(): Promise<string> {\r\n\t\treturn this.keycloak.getToken();\r\n\t}\r\n\r\n\tgetUsername(): string {\r\n\t\treturn this.keycloak.getUsername();\r\n\t}\r\n\r\n\tclearToken(): void {\r\n\t\tthis.keycloak.clearToken();\r\n\t}\r\n\r\n\taddTokenToHeader(headers?: HttpHeaders): Observable<HttpHeaders> {\r\n\t\treturn this.keycloak.addTokenToHeader(headers);\r\n\t}\r\n\r\n\t\r\n}\r\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nconst getCurrentAppName = (host: string, mf: string) => {\r\n\tlet appName = '';\r\n\tif (host) {\r\n\t\tswitch (host) {\r\n\t\t\tcase Apps.YEAP:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.LENA:\r\n\t\t\t\tappName = Apps.LENA;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.THOR:\r\n\t\t\t\tappName = Apps.THOR;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else {\r\n\t\tswitch (mf) {\r\n\t\t\tcase Apps.HES:\r\n\t\t\tcase Apps.CTS:\r\n\t\t\tcase Apps.SIS:\r\n\t\t\t\tappName = Apps.LENA;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.CRM:\r\n\t\t\tcase Apps.BILLING:\r\n\t\t\tcase Apps.PAYMENT:\r\n\t\t\tcase Apps.WDM:\r\n\t\t\tcase Apps.MNG:\r\n\t\t\t\tappName = Apps.THOR;\r\n\t\t\t\tbreak;\r\n\t\t\tcase Apps.MW:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tappName = Apps.YEAP;\r\n\t\t}\r\n\t}\r\n\treturn appName;\r\n};\r\n\r\nconst getAppHeader = (appName: string) => {\r\n\tlet appHeader = {};\r\n\tswitch (appName) {\r\n\t\tcase Apps.YEAP:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"yeap\",\r\n\t\t\t\t\"x-module\": \"yeap-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t\tcase Apps.LENA:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"lena\",\r\n\t\t\t\t\"x-module\": \"lena-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t\tcase Apps.THOR:\r\n\t\t\tappHeader = {\r\n\t\t\t\t\"x-application\": \"thor\",\r\n\t\t\t\t\"x-module\": \"thor-fe\"\r\n\t\t\t};\r\n\t\t\tbreak;\r\n\t}\r\n\treturn appHeader;\r\n};\r\n\r\nconst getCsrfToken = (): string | undefined => {\r\n\treturn document.cookie\r\n\t .split('; ')\r\n\t .find(row => row.startsWith('csrf_token='))\r\n\t ?.split('=')[1];\r\n };\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n\tconst token = (<any>globalThis).keycloakService?._instance?.token;\r\n\tconst currentApp = getCurrentAppName((<any>globalThis).activeHost, (<any>globalThis).activeMF);\r\n\tconst appNameHeader = getAppHeader(currentApp);\r\n\tconst csrfToken = getCsrfToken();\r\n\r\n\tconst authReq = req.clone({\r\n\t\tsetHeaders: {\r\n\t\t\tAuthorization: `Bearer ${token}`,\r\n\t\t\t'csrf_token': csrfToken || '',\r\n\t\t\t...appNameHeader\r\n\t\t}\r\n\t});\r\n\r\n\treturn next(authReq);\r\n};","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AuthGuard extends KeycloakAuthGuard {\r\n\tconstructor(\r\n\t\tprotected override readonly router: Router,\r\n\t\tprotected readonly keycloak: KeycloakService\r\n\t) {\r\n\t\tsuper(router, keycloak);\r\n\t}\r\n\r\n\tpublic async isAccessAllowed(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n\t\ttry {\r\n\t\t\tif(this.keycloak.isTokenExpired()){\r\n\t\t\t\tawait this.keycloak.updateToken(); \r\n\t\t\t}\r\n\t\t } catch (error) {\r\n\t\t\tawait this.keycloak.login({\r\n\t\t\t redirectUri: window.location.origin + state.url\r\n\t\t\t});\r\n\t\t\treturn false; \r\n\t\t }\r\n\t\t \r\n\t\tif (!this.authenticated) {\r\n\t\t\tawait this.keycloak.login({\r\n\t\t\t\tredirectUri: window.location.origin + state.url\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst requiredRoles = route.data['roles'];\r\n\r\n\t\tif (!Array.isArray(requiredRoles) || requiredRoles.length === 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst authorized = requiredRoles.every((role) => this.roles.includes(role));\r\n\r\n\t\tif (!authorized) {\r\n\t\t\tconsole.error('User not authorized to access this route');\r\n\t\t\treturn false;\r\n\t\t} else return true;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}