@yelon/bis 19.0.0 → 19.0.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017-present yunzai<yunzai-bot@outlook.com>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017-present yunzai<yunzai-bot@outlook.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/fesm2022/bis.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, importProvidersFrom, makeEnvironmentProviders, inject, Injector, APP_INITIALIZER, Injectable, Inject, Input, Component } from '@angular/core';
2
+ import { NgModule, importProvidersFrom, makeEnvironmentProviders, inject, Injector, APP_INITIALIZER, provideAppInitializer, Injectable, Inject, Input, Component } from '@angular/core';
3
3
  import { YunzaiLayoutModule } from '@yelon/bis/layout';
4
4
  import { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';
5
5
  import * as i2 from '@angular/router';
@@ -122,7 +122,9 @@ function reAttachToken(injector, req) {
122
122
  function refreshTokenRequest(injector) {
123
123
  const model = injector.get(YA_SERVICE_TOKEN).get();
124
124
  const form = new FormData();
125
- form.set('refresh_token', model?.refresh_token);
125
+ if (model?.refresh_token) {
126
+ form.set('refresh_token', model.refresh_token);
127
+ }
126
128
  form.set('grant_type', 'refresh_token');
127
129
  form.set('scope', 'webapp');
128
130
  return injector.get(HttpClient).post(`/auth/oauth/getOrCreateToken/webapp`, form);
@@ -210,16 +212,23 @@ const yunzaiDefaultInterceptor = (req, next) => {
210
212
  }), catchError((err) => handleData(injector, err, newReq, next)));
211
213
  };
212
214
 
215
+ // export function provideYunzaiStartup(): Provider[] {
216
+ // return [
217
+ // YunzaiStartupService,
218
+ // {
219
+ // provide: APP_INITIALIZER,
220
+ // useFactory: (startupService: YunzaiStartupService) => () => startupService.load(),
221
+ // deps: [YunzaiStartupService],
222
+ // multi: true
223
+ // }
224
+ // ];
225
+ // }
213
226
  function provideYunzaiStartup() {
214
- return [
215
- YunzaiStartupService,
216
- {
217
- provide: APP_INITIALIZER,
218
- useFactory: (startupService) => () => startupService.load(),
219
- deps: [YunzaiStartupService],
220
- multi: true
221
- }
222
- ];
227
+ const appInitializer = () => {
228
+ const startupService = inject(YunzaiStartupService);
229
+ return startupService.load();
230
+ };
231
+ return [YunzaiStartupService, provideAppInitializer(appInitializer)];
223
232
  }
224
233
  class YunzaiStartupService {
225
234
  config = mergeBisConfig(inject(YunzaiConfigService));
@@ -279,7 +288,9 @@ class YunzaiStartupService {
279
288
  this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
280
289
  this.settingService.setUser({
281
290
  name: yunzaiUser.realname,
282
- avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',
291
+ avatar: this.config.baseUrl && yunzaiUser.avatarId
292
+ ? `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}`
293
+ : '',
283
294
  email: yunzaiUser.email
284
295
  });
285
296
  this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
@@ -518,7 +529,6 @@ class ActGuardService {
518
529
  const [, getUser] = useLocalStorageUser();
519
530
  const user = getUser();
520
531
  log('act: user ', user);
521
- // @ts-ignore
522
532
  this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
523
533
  log('act: menus ', this.menus);
524
534
  this.getAllLinks(this.menus, this.links);
@@ -608,15 +618,15 @@ class YunzaiLayoutWebsite01Component {
608
618
  return this.contentTpl;
609
619
  }
610
620
  get _username() {
611
- const [_, getUser] = useLocalStorageUser();
621
+ const [, getUser] = useLocalStorageUser();
612
622
  return getUser()?.realname || '';
613
623
  }
614
624
  get isLogin() {
615
- const [_, getUser] = useLocalStorageUser();
625
+ const [, getUser] = useLocalStorageUser();
616
626
  return !!this.tokenService.get()?.access_token && !!getUser();
617
627
  }
618
628
  get _links() {
619
- const [_, getProjectInfo] = useLocalStorageProjectInfo();
629
+ const [, getProjectInfo] = useLocalStorageProjectInfo();
620
630
  return getProjectInfo()?.profileList || [];
621
631
  }
622
632
  login() {
@@ -624,7 +634,7 @@ class YunzaiLayoutWebsite01Component {
624
634
  }
625
635
  logout() {
626
636
  const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';
627
- this.win.location.href = `${baseUrl}/cas-proxy/app/logout`;
637
+ this.win.location.href = `${baseUrl}/cas-proxy/app/logout?callback=` + encodeURIComponent(this.win.location.href);
628
638
  }
629
639
  to(url) {
630
640
  if (url)
@@ -644,11 +654,11 @@ class YunzaiLayoutWebsite01Component {
644
654
  <span nz-icon nzType="user" nzTheme="outline"></span>{{ _username }}<span nz-icon nzType="down"></span>
645
655
  </a>
646
656
  <nz-dropdown-menu #menu="nzDropdownMenu">
647
- <ul nz-menu nzSelectable>
657
+ <ul nz-menu [nzSelectable]="true">
648
658
  @for (link of _links; track $index) {
649
659
  <li nz-menu-item class="yz-layout-website-01-link__li" (click)="to(link.url)">{{ link.name }}</li>
650
660
  }
651
- <li nz-menu-item nzDanger class="yz-layout-website-01-link__li" (click)="logout()"
661
+ <li nz-menu-item [nzDanger]="true" class="yz-layout-website-01-link__li" (click)="logout()"
652
662
  >{{ 'menu.account.logout' | i18n }}
653
663
  </li>
654
664
  </ul>
@@ -697,11 +707,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
697
707
  <span nz-icon nzType="user" nzTheme="outline"></span>{{ _username }}<span nz-icon nzType="down"></span>
698
708
  </a>
699
709
  <nz-dropdown-menu #menu="nzDropdownMenu">
700
- <ul nz-menu nzSelectable>
710
+ <ul nz-menu [nzSelectable]="true">
701
711
  @for (link of _links; track $index) {
702
712
  <li nz-menu-item class="yz-layout-website-01-link__li" (click)="to(link.url)">{{ link.name }}</li>
703
713
  }
704
- <li nz-menu-item nzDanger class="yz-layout-website-01-link__li" (click)="logout()"
714
+ <li nz-menu-item [nzDanger]="true" class="yz-layout-website-01-link__li" (click)="logout()"
705
715
  >{{ 'menu.account.logout' | i18n }}
706
716
  </li>
707
717
  </ul>
@@ -732,7 +742,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
732
742
  </main>
733
743
  </div>
734
744
  `,
735
- standalone: true,
736
745
  imports: [RouterOutlet, I18nPipe, NzI18nModule, NgFor, NgIf, NzDropDownModule, NzIconModule, NgTemplateOutlet]
737
746
  }]
738
747
  }], propDecorators: { logoSrc: [{
@@ -771,21 +780,21 @@ class YunzaiLayoutWebsite02Component {
771
780
  return this.contentTpl;
772
781
  }
773
782
  get _username() {
774
- const [_, getUser] = useLocalStorageUser();
783
+ const [, getUser] = useLocalStorageUser();
775
784
  return getUser()?.realname || '';
776
785
  }
777
786
  get _avatar() {
778
- const [_, getUser] = useLocalStorageUser();
787
+ const [, getUser] = useLocalStorageUser();
779
788
  const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';
780
789
  const avatarUrl = getUser()?.avatarId ? `${baseUrl}/filecenter/file/${getUser()?.avatarId}` : undefined;
781
790
  return avatarUrl;
782
791
  }
783
792
  get isLogin() {
784
- const [_, getUser] = useLocalStorageUser();
793
+ const [, getUser] = useLocalStorageUser();
785
794
  return !!this.tokenService.get()?.access_token && !!getUser();
786
795
  }
787
796
  get _links() {
788
- const [_, getProjectInfo] = useLocalStorageProjectInfo();
797
+ const [, getProjectInfo] = useLocalStorageProjectInfo();
789
798
  return getProjectInfo()?.profileList || [];
790
799
  }
791
800
  login() {
@@ -793,7 +802,7 @@ class YunzaiLayoutWebsite02Component {
793
802
  }
794
803
  logout() {
795
804
  const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';
796
- this.win.location.href = `${baseUrl}/cas-proxy/app/logout`;
805
+ this.win.location.href = `${baseUrl}/cas-proxy/app/logout?callback=` + encodeURIComponent(this.win.location.href);
797
806
  }
798
807
  to(url) {
799
808
  if (url)
@@ -909,7 +918,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.5", ngImpor
909
918
  </main>
910
919
  </div>
911
920
  `,
912
- standalone: true,
913
921
  imports: [
914
922
  RouterOutlet,
915
923
  I18nPipe,
@@ -1 +1 @@
1
- {"version":3,"file":"bis.mjs","sources":["../../../../packages/bis/src/bis.module.ts","../../../../packages/bis/src/provide.ts","../../../../packages/bis/src/helper.ts","../../../../packages/bis/src/refresh-token.ts","../../../../packages/bis/src/yunzai-default.interceptor.ts","../../../../packages/bis/src/startup.service.ts","../../../../packages/bis/src/yunzai-analysis-addon.guard.ts","../../../../packages/bis/src/yunzai-act.guard.ts","../../../../packages/bis/src/website/layout-website-01.component.ts","../../../../packages/bis/src/website/layout-website-02.component.ts","../../../../packages/bis/bis.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { YunzaiLayoutModule } from '@yelon/bis/layout';\nimport { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';\n@NgModule({\n imports: [YunzaiLayoutModule, YunzaiWidgetsModule],\n exports: [YunzaiLayoutModule, YunzaiWidgetsModule]\n})\nexport class BisModule {}\n","import { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\n\nimport { BisModule } from './bis.module';\n\nexport function provideYunzaiBis(): EnvironmentProviders {\n const provides: EnvironmentProviders[] = [];\n provides.push(importProvidersFrom(BisModule));\n return makeEnvironmentProviders(provides);\n}\n","import { HttpHeaders, HttpResponseBase } from '@angular/common/http';\nimport { inject, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { YUNZAI_I18N_TOKEN } from '@yelon/theme';\n\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nexport const CODEMESSAGE: { [key: number]: string } = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\nexport function getAdditionalHeaders(headers?: HttpHeaders): { [name: string]: string } {\n const res: { [name: string]: string } = {};\n const lang = inject(YUNZAI_I18N_TOKEN).currentLang;\n if (!headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n\n return res;\n}\n\nexport function checkStatus(injector: Injector, ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n injector.get(NzNotificationService).error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n}\n\nexport interface ReThrowHttpError {\n body: any;\n _throw: true;\n}\n\nexport function goTo(injector: Injector, url: string): void {\n setTimeout(() => injector.get(Router).navigateByUrl(url));\n}\n\nexport function toLogin(injector: Injector): void {\n injector.get(NzNotificationService).error(`未登录或登录已过期,请重新登录。`, ``);\n goTo(injector, injector.get(YA_SERVICE_TOKEN).login_url!);\n}\n","import { HttpClient, HttpHandlerFn, HttpRequest, HttpResponseBase } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, Provider } from '@angular/core';\nimport { BehaviorSubject, catchError, filter, Observable, switchMap, take, throwError } from 'rxjs';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { log } from '@yelon/util';\n\n\nimport { toLogin } from './helper';\n\nlet refreshToking = false;\nlet refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\nexport const tryRefreshToken = (\n injector: Injector,\n ev: HttpResponseBase,\n req: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<any> => {\n // 连刷新Token的请求都错了,那就是真错了\n if (['/auth/oauth/getOrCreateToken/webapp'].some(url => req.url.includes(url))) {\n toLogin(injector);\n return throwError(() => ev);\n }\n // 2、如果 `refreshToking` 为 `true` 表示已经在请求刷新 Token 中,后续所有请求转入等待状态,直至结果返回后再重新发起请求\n if (refreshToking) {\n return refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next(reAttachToken(injector, req)))\n );\n }\n // 3、尝试调用刷新 Token\n refreshToking = true;\n refreshToken$.next(null);\n\n return refreshTokenRequest(injector).pipe(\n switchMap(res => {\n // 通知后续请求继续执行\n refreshToking = false;\n refreshToken$.next(res);\n // 重新保存新 token\n injector.get(YA_SERVICE_TOKEN).set(res);\n // 重新发起请求\n return next(reAttachToken(injector, req));\n }),\n catchError(err => {\n refreshToking = false;\n toLogin(injector);\n return throwError(() => err);\n })\n );\n};\n\nfunction reAttachToken(injector: Injector, req: HttpRequest<any>): HttpRequest<any> {\n const token = injector.get(YA_SERVICE_TOKEN).get()?.access_token;\n return req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n}\n\nfunction refreshTokenRequest(injector: Injector): Observable<any> {\n const model = injector.get(YA_SERVICE_TOKEN).get();\n const form = new FormData();\n form.set('refresh_token', model?.refresh_token!);\n form.set('grant_type', 'refresh_token');\n form.set('scope', 'webapp');\n return injector.get(HttpClient).post(`/auth/oauth/getOrCreateToken/webapp`, form);\n}\n\nfunction buildAuthRefresh(injector: Injector): void {\n const tokenSrv = injector.get(YA_SERVICE_TOKEN);\n tokenSrv.refresh\n .pipe(\n filter(() => !refreshToking),\n switchMap(res => {\n log(res);\n refreshToking = true;\n return refreshTokenRequest(injector);\n })\n )\n .subscribe({\n next: res => {\n res.expired = +new Date() + 1000 * 60 * 5;\n refreshToking = false;\n tokenSrv.set(res);\n },\n error: () => toLogin(injector)\n });\n}\n\nexport function provideYunzaiBindAuthRefresh(): Provider[] {\n return [\n {\n provide: APP_INITIALIZER,\n useFactory: (injector: Injector) => () => buildAuthRefresh(injector),\n deps: [Injector],\n multi: true\n }\n ];\n}\n","import {\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest,\n HttpResponseBase\n} from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { Observable, of, throwError, mergeMap, catchError } from 'rxjs';\n\nimport { mergeBisConfig } from '@yelon/bis/config';\nimport { IGNORE_BASE_URL } from '@yelon/theme';\nimport { YUNZAI_CONFIG, YunzaiConfigService } from '@yelon/util';\n\n\nimport { checkStatus, getAdditionalHeaders, goTo, ReThrowHttpError, toLogin } from './helper';\nimport { tryRefreshToken } from './refresh-token';\n\nfunction handleData(\n injector: Injector,\n ev: HttpResponseBase,\n req: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<any> {\n checkStatus(injector, ev);\n const config = injector.get(YUNZAI_CONFIG).bis!;\n switch (ev.status) {\n case 200:\n return of(ev);\n case 401:\n if (config.refreshTokenEnabled && config.refreshTokenType === 're-request') {\n const unAuthorizationReq = req.clone();\n unAuthorizationReq.headers.delete('Authorization');\n return tryRefreshToken(injector, ev, unAuthorizationReq, next);\n }\n toLogin(injector);\n break;\n case 403:\n case 404:\n case 500:\n goTo(injector, `/exception/${ev.status}?url=${req.urlWithParams}`);\n break;\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn(\n '未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题',\n ev\n );\n }\n break;\n }\n if (ev instanceof HttpErrorResponse) {\n return throwError(() => ev);\n } else if ((ev as unknown as ReThrowHttpError)._throw) {\n return throwError(() => (ev as unknown as ReThrowHttpError).body);\n } else {\n return of(ev);\n }\n}\n\nexport const yunzaiDefaultInterceptor: HttpInterceptorFn = (req, next) => {\n const config = mergeBisConfig(inject(YunzaiConfigService));\n const { baseUrl } = config;\n let url = req.url;\n if (!req.context.get(IGNORE_BASE_URL) && !url.startsWith('https://') && !url.startsWith('http://')) {\n url = baseUrl + (baseUrl!.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n }\n if (url.includes('.json') && url.includes('assets')) {\n url = req.url;\n }\n const newReq = req.clone({ url, setHeaders: getAdditionalHeaders(req.headers) });\n const injector = inject(Injector);\n return next(newReq).pipe(\n mergeMap(ev => {\n if (ev instanceof HttpResponseBase) {\n return handleData(injector, ev, newReq, next);\n }\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => handleData(injector, err, newReq, next))\n );\n};\n","import { HttpClient } from '@angular/common/http';\nimport { APP_INITIALIZER, inject, Injectable, Provider } from '@angular/core';\nimport { catchError, combineLatest, EMPTY, map, mergeMap, Observable, of } from 'rxjs';\n\nimport { ACLService } from '@yelon/acl';\nimport { ITokenModel, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { mergeBisConfig } from '@yelon/bis/config';\nimport {\n Menu,\n MenuService,\n SettingsService,\n TitleService,\n YUNZAI_I18N_TOKEN,\n YunzaiHttpI18NService\n} from '@yelon/theme';\nimport {\n deepCopy,\n useLocalStorageCurrent,\n useLocalStorageDefaultRoute,\n useLocalStorageHeader,\n useLocalStorageProjectInfo,\n useLocalStorageTenant,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService,\n YunzaiMenu,\n YunzaiMenuAttribute\n} from '@yelon/util';\n\n\nexport interface LoadParam {\n force?: boolean;\n}\n\nexport function provideYunzaiStartup(): Provider[] {\n return [\n YunzaiStartupService,\n {\n provide: APP_INITIALIZER,\n useFactory: (startupService: YunzaiStartupService) => () => startupService.load(),\n deps: [YunzaiStartupService],\n multi: true\n }\n ];\n}\n\n@Injectable()\nexport class YunzaiStartupService {\n private readonly config = mergeBisConfig(inject(YunzaiConfigService));\n private readonly menuService = inject(MenuService);\n private readonly aclService = inject(ACLService);\n private readonly titleService = inject(TitleService);\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly httpClient = inject(HttpClient);\n private readonly settingService = inject(SettingsService);\n private readonly i18n = inject<YunzaiHttpI18NService>(YUNZAI_I18N_TOKEN);\n private readonly win = inject(WINDOW);\n private readonly configService = inject(YunzaiConfigService);\n\n load(param?: LoadParam): Observable<void> {\n let defaultLang: string = this.settingService.layout.lang || this.i18n.defaultLang || 'zh-CN';\n const [setTenant] = useLocalStorageTenant();\n const [setUser, getUser] = useLocalStorageUser();\n const [setHeader] = useLocalStorageHeader();\n const [setProject] = useLocalStorageProjectInfo();\n const [setDefaultRoute] = useLocalStorageDefaultRoute();\n const [setCurrent] = useLocalStorageCurrent();\n\n return this.token(param).pipe(\n mergeMap((token: any) => {\n if (token === false) {\n return this.i18n.loadLocaleData(defaultLang).pipe(\n map((langData: any) => {\n this.i18n.use(defaultLang, langData);\n this.settingService.setLayout('lang', defaultLang);\n }),\n mergeMap(() => EMPTY)\n );\n }\n this.configService.set('auth', {\n token_send_key: 'Authorization',\n token_send_template: `${token.token_type} \\${access_token}`,\n token_send_place: 'header'\n });\n this.tokenService.set(token);\n return of(void 0);\n }),\n mergeMap(() => {\n return combineLatest([\n this.httpClient.get(`/auth/user`),\n this.httpClient.get(`/auth/allheader/v2`),\n this.httpClient.get(`/app-manager/project/info`)\n ]).pipe(\n map(([user, header, project]: any) => {\n setUser(user.principal);\n setTenant(user.tenantId);\n setHeader(header.data);\n setProject(project.data);\n return void 0;\n })\n );\n }),\n mergeMap(() => {\n return this.i18n.loadLangData(defaultLang).pipe(\n map((langData: any) => {\n this.i18n.use(defaultLang, langData);\n return void 0;\n })\n );\n }),\n mergeMap(() => {\n const yunzaiUser = getUser()!;\n const yunzaiMenus: YunzaiMenu[] = deepCopy(yunzaiUser.menu).filter(\n m => m.systemCode && m.systemCode === this.config.systemCode\n );\n const currentMenu = yunzaiMenus.pop();\n if (currentMenu) {\n this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });\n this.settingService.setUser({\n name: yunzaiUser.realname,\n avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',\n email: yunzaiUser.email\n });\n this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';\n this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');\n const abilities: string[] = [];\n generateAbility([currentMenu], abilities, '');\n this.aclService.attachRole(\n yunzaiUser?.roles\n .map((role: any) => {\n return role.roleValue;\n })\n .filter((a: any) => !!a) || []\n );\n this.aclService.attachAbility(abilities);\n this.menuService.add([currentMenu as Menu]);\n setCurrent({\n name: currentMenu.text,\n intro: currentMenu.intro || '',\n icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'\n });\n const attributes = currentMenu.attribute;\n if (attributes) {\n const attr: YunzaiMenuAttribute = JSON.parse(attributes);\n if (attr && attr.defaultRoute) {\n setDefaultRoute(attr.defaultRoute);\n } else {\n setDefaultRoute('/displayIndex');\n }\n } else {\n setDefaultRoute('/displayIndex');\n }\n }\n return of(void 0);\n }),\n catchError((error: any) => {\n console.error('Error occurred:', error);\n return of(void 0);\n })\n );\n }\n\n token(param?: LoadParam): Observable<ITokenModel | boolean> {\n const auto = this.configService.get('auth')?.auto;\n const force = param?.force || undefined;\n if (this.config.loginForm) {\n if (this.tokenService.get()?.access_token || force || auto) {\n return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(\n map((response: any) => {\n return response;\n })\n );\n }\n return of(false);\n } else {\n const uri = encodeURIComponent(this.win.location.href);\n return this.httpClient\n .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)\n .pipe(\n map((response: any) => {\n switch (response.errcode) {\n case 2000:\n return response.data;\n case 2001:\n if (!force && !auto) {\n // 自动认证为false情况下会出现: 后台已经下线,但是用户进入网页存储了上次的cookie,Token,所以网页还是登录状态\n // 在这里如果2001时自动清理客户端过时的token以保证页面显示登录状态正常\n localStorage.clear();\n this.tokenService.clear();\n return false;\n }\n this.win.location.href = response.msg;\n throw Error(\"Cookie Error: Can't find Cas Cookie,So jump to login!\");\n default:\n if (response.data) {\n console.error(response.data);\n throw Error(response.data);\n } else if (response.msg) {\n console.error(response.msg);\n throw Error(response.msg);\n } else {\n console.error('cas unknown error');\n throw Error('Unknown Error: Cas auth exception!');\n }\n }\n })\n );\n }\n }\n}\n\nexport function mapYzSideToYelonMenu(menus: YunzaiMenu[]): void {\n menus.forEach((menu: any) => {\n if (menu.children && menu.hideChildren) {\n menu.children.forEach((c: any) => (c.hide = true));\n }\n menu.badgeDot = menu.badge_dot || null;\n menu.badgeStatus = menu.badge_status || null;\n menu.shortcutRoot = menu.shortcut_root || null;\n menu.reuse = true;\n if (menu.children) {\n mapYzSideToYelonMenu(menu.children);\n }\n });\n}\n\nexport function generateAbility(menus: YunzaiMenu[], abilities: string[], prefix: string): void {\n menus.forEach(menu => {\n if (menu.link) {\n prefix += menu.link;\n } else {\n prefix += '';\n }\n if (menu.menuAuths) {\n menu.menuAuths.forEach((a: string) => {\n abilities.push(`${prefix}:${a}`);\n abilities.push(a);\n });\n }\n\n if (menu.children) {\n generateAbility(menu.children, abilities, prefix);\n }\n });\n}\n","import { Inject, inject, Injectable } from '@angular/core';\nimport { CanActivateChildFn, CanActivateFn } from '@angular/router';\n\nimport { ITokenService, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';\nimport { Menu } from '@yelon/theme';\nimport {\n deepCopy,\n PathToRegexpService,\n useLocalStorageUser,\n WINDOW,\n YunzaiBusinessConfig,\n YunzaiConfigService,\n YunzaiUser\n} from '@yelon/util';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YunzaiAnalysisAddonGuardService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: any[] = [];\n private links: Array<{ title: string; link: string }> = [];\n private value: any = {};\n\n constructor(\n private configService: YunzaiConfigService,\n private pathToRegexp: PathToRegexpService,\n @Inject(WINDOW) private win: any,\n @Inject(YA_SERVICE_TOKEN) private tokenService: ITokenService\n ) {\n this.bis = mergeBisConfig(this.configService);\n const [, getUser] = useLocalStorageUser();\n const user: YunzaiUser = getUser()!;\n this.menus = deepCopy((user.menu as any) || []).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n if (user) {\n this.value = {\n systemCode: this.bis.systemCode,\n userid: user.id,\n realname: user.realname,\n usertype: user.userType,\n usercode: user.userCode,\n username: user.username,\n account: user.username,\n deptid: user.deptId,\n deptname: user.deptName,\n token: this.tokenService.get()?.access_token\n };\n }\n if (this.menus && this.menus.length > 0) {\n this.value['system'] = (this.menus[0] as Menu).text;\n }\n this.getAllLinks(this.menus, this.links);\n }\n\n process(url: string): boolean {\n let flag = false;\n this.links.forEach(link => {\n if (link.link === url.split('?')[0]) {\n flag = true;\n this.value['routename'] = link.title;\n this.value['routeurl'] = link.link;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n return;\n }\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n if (regexp.test(url.split('?')[0])) {\n flag = true;\n this.value['routename'] = link.title;\n this.value['routeurl'] = link.link;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n return;\n }\n });\n if (!flag) {\n this.value['routename'] = url;\n this.value['routeurl'] = url;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n }\n return true;\n }\n\n getAllLinks(menu: Menu[], links: Array<{ title: string; link: string }>): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push({ title: sider.text ? sider.text : sider.link, link: sider.link });\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n\nexport const analysisAddonCanActive: CanActivateFn = (_, state) =>\n inject(YunzaiAnalysisAddonGuardService).process(state.url);\nexport const analysisAddonCanActiveChild: CanActivateChildFn = (_, state) =>\n inject(YunzaiAnalysisAddonGuardService).process(state.url);\n","import { Injectable, inject } from '@angular/core';\nimport { CanActivateChildFn, CanActivateFn, Router } from '@angular/router';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';\nimport { Menu } from '@yelon/theme';\nimport {\n deepCopy,\n log,\n YunzaiBusinessConfig,\n YunzaiConfigService,\n PathToRegexpService,\n useLocalStorageUser,\n YunzaiUser\n} from '@yelon/util';\n\n\n@Injectable({ providedIn: 'root' })\nexport class ActGuardService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: any[] = [];\n private links: string[] = [];\n\n constructor(\n private configService: YunzaiConfigService,\n private pathToRegexp: PathToRegexpService,\n private router: Router\n ) {\n log('act: ');\n this.bis = mergeBisConfig(this.configService);\n log('act: config ', this.bis);\n const [, getUser] = useLocalStorageUser();\n const user: YunzaiUser = getUser()!;\n log('act: user ', user);\n // @ts-ignore\n this.menus = deepCopy((user.menu as any) || []).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n log('act: menus ', this.menus);\n this.getAllLinks(this.menus, this.links);\n log('act: links ', this.links);\n }\n\n process(url: string): boolean {\n log('act: can activate ', url);\n if (this.preHandle(url)) {\n return true;\n }\n log('act: can activate child prehandle success');\n let canactivate = false;\n this.links.forEach((link: string) => {\n // path = /xxx\n if (link === url.split('?')[0]) {\n canactivate = true;\n log(`act: link value ${link} equals url value ${url}`);\n return;\n }\n // paht = /xxx/:xx\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n log(`act: ${link} test ${url.split('?')[0]}`);\n if (regexp.test(url.split('?')[0])) {\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n preHandle(url: string): boolean {\n return (\n url.includes('error') ||\n url.includes('exception') ||\n url.includes('displayIndex') ||\n url === '' ||\n url === null ||\n url === '/' ||\n url.includes('iframePage')\n );\n }\n\n getAllLinks(menu: Menu[], links: string[]): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push(sider.link);\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n\nexport const actGuardCanActive: CanActivateFn = (_, state) => inject(ActGuardService).process(state.url);\nexport const actGuardCanActiveChild: CanActivateChildFn = (_, state) => inject(ActGuardService).process(state.url);\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, Input, TemplateRef } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { I18nPipe } from '@yelon/theme';\nimport {\n YunzaiProfile,\n useLocalStorageProjectInfo,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService\n} from '@yelon/util';\n\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { YunzaiStartupService } from '../startup.service';\n\n@Component({\n selector: 'yunzai-layout-website-01',\n template: `\n <div class=\"yz-layout-website-01\">\n <div class=\"yz-layout-website-01-nav__user\">\n @if (isLogin) {\n <a\n class=\"yz-layout-website-01-link\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n [nzOverlayStyle]=\"{ width: '120px' }\"\n >\n <span nz-icon nzType=\"user\" nzTheme=\"outline\"></span>{{ _username }}<span nz-icon nzType=\"down\"></span>\n </a>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (link of _links; track $index) {\n <li nz-menu-item class=\"yz-layout-website-01-link__li\" (click)=\"to(link.url)\">{{ link.name }}</li>\n }\n <li nz-menu-item nzDanger class=\"yz-layout-website-01-link__li\" (click)=\"logout()\"\n >{{ 'menu.account.logout' | i18n }}\n </li>\n </ul>\n </nz-dropdown-menu>\n } @else {\n <a class=\"yz-layout-website-01-link\" (click)=\"login()\">\n <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a\n >\n }\n </div>\n\n <header class=\"yz-layout-website-01-nav\">\n @if (_logoSrc) {\n <img [alt]=\"_logoAlt\" class=\"yz-layout-website-01-nav__logo\" [src]=\"_logoSrc\" />\n } @else {\n <div class=\"yz-layout-website-01-nav__logo__full\">LOGO</div>\n }\n\n <div class=\"yz-layout-website-01-nav__content\">\n <ng-template *ngTemplateOutlet=\"_contentTpl\" />\n </div>\n <div class=\"yz-layout-website-01-nav__slogan\">\n {{ _slogan }}\n </div>\n </header>\n <main class=\"yz-layout-website-01-container\">\n <router-outlet />\n </main>\n </div>\n `,\n standalone: true,\n imports: [RouterOutlet, I18nPipe, NzI18nModule, NgFor, NgIf, NzDropDownModule, NzIconModule, NgTemplateOutlet]\n})\nexport class YunzaiLayoutWebsite01Component {\n @Input() logoSrc?: string | any;\n @Input() logoAlt?: string = 'logo';\n @Input() slogan?: string = '';\n @Input() contentTpl?: TemplateRef<void> | any;\n\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly configService = inject(YunzaiConfigService);\n private readonly startupSrv = inject(YunzaiStartupService);\n private readonly win = inject(WINDOW);\n\n get _logoSrc(): string | any {\n return this.logoSrc;\n }\n\n get _logoAlt(): string {\n return this.logoAlt || 'logo';\n }\n\n get _slogan(): string {\n return this.slogan || '';\n }\n\n get _contentTpl(): TemplateRef<void> | any {\n return this.contentTpl;\n }\n\n get _username(): string {\n const [_, getUser] = useLocalStorageUser();\n return getUser()?.realname || '';\n }\n\n get isLogin(): boolean {\n const [_, getUser] = useLocalStorageUser();\n return !!this.tokenService.get()?.access_token && !!getUser();\n }\n\n get _links(): YunzaiProfile[] {\n const [_, getProjectInfo] = useLocalStorageProjectInfo();\n return getProjectInfo()?.profileList || [];\n }\n\n login(): void {\n this.startupSrv.load({ force: true }).subscribe(() => {});\n }\n\n logout(): void {\n const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';\n this.win.location.href = `${baseUrl}/cas-proxy/app/logout`;\n }\n\n to(url?: string): void {\n if (url) this.win.location.href = url;\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, Input, TemplateRef } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { I18nPipe } from '@yelon/theme';\nimport {\n useLocalStorageProjectInfo,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService,\n YunzaiProfile\n} from '@yelon/util';\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\n\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { YunzaiStartupService } from '../startup.service';\n\n@Component({\n selector: 'yunzai-layout-website-02',\n template: `\n <div class=\"yz-layout-website-02\">\n <header class=\"yz-layout-website-02-nav\">\n <div class=\"yz-layout-website-02-inner-content\">\n @if (_logoSrc) {\n <img [alt]=\"_logoAlt\" class=\"yz-layout-website-02-nav__logo\" [src]=\"_logoSrc\" />\n } @else {\n <div class=\"yz-layout-website-02-nav__logo__full\">LOGO</div>\n }\n\n <div class=\"yz-layout-website-02-nav__content\">\n <ng-template *ngTemplateOutlet=\"_contentTpl\" />\n </div>\n\n <div class=\"yz-layout-website-02-nav-right\">\n <div class=\"yz-layout-website-02-nav__slogan\">\n <ng-template *ngTemplateOutlet=\"_slogan\" />\n </div>\n @if (isLogin) {\n <a\n class=\"yz-layout-website-02-link\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n [nzDisabled]=\"!_userMenuShow\"\n [nzPlacement]=\"'bottomRight'\"\n >\n <nz-avatar nzIcon=\"user\" [nzSrc]=\"_avatar\" /><b>欢迎访问:{{ _username }}</b>\n <span nz-icon nzType=\"down\" *ngIf=\"_userMenuShow\"></span>\n </a>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (link of _links; track $index) {\n <li nz-menu-item class=\"yz-layout-website-02-link__li\" (click)=\"to(link.url)\">{{ link.name }}</li>\n }\n <li nz-menu-item nzDanger class=\"yz-layout-website-02-link__li\" (click)=\"logout()\">{{\n 'menu.account.logout' | i18n\n }}</li>\n </ul>\n </nz-dropdown-menu>\n } @else {\n <a class=\"yz-layout-website-02-link\" (click)=\"login()\">\n <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a\n >\n }\n </div>\n </div>\n </header>\n <main class=\"yz-layout-website-02-container\">\n <router-outlet />\n </main>\n </div>\n `,\n standalone: true,\n imports: [\n RouterOutlet,\n I18nPipe,\n NzI18nModule,\n NgFor,\n NgIf,\n NzDropDownModule,\n NzIconModule,\n NgTemplateOutlet,\n NzAvatarModule\n ]\n})\nexport class YunzaiLayoutWebsite02Component {\n @Input() logoSrc?: string | any;\n @Input() logoAlt?: string = 'logo';\n @Input() userMenuShow?: boolean = false;\n @Input() slogan?: TemplateRef<void> | any;\n @Input() contentTpl?: TemplateRef<void> | any;\n\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly configService = inject(YunzaiConfigService);\n private readonly startupSrv = inject(YunzaiStartupService);\n private readonly win = inject(WINDOW);\n\n get _logoSrc(): string | any {\n return this.logoSrc;\n }\n\n get _logoAlt(): string {\n return this.logoAlt || 'logo';\n }\n\n get _userMenuShow(): boolean {\n return this.userMenuShow || false;\n }\n\n get _slogan(): TemplateRef<void> | any {\n return this.slogan;\n }\n\n get _contentTpl(): TemplateRef<void> | any {\n return this.contentTpl;\n }\n\n get _username(): string {\n const [_, getUser] = useLocalStorageUser();\n return getUser()?.realname || '';\n }\n\n get _avatar(): string | undefined {\n const [_, getUser] = useLocalStorageUser();\n const baseUrl: string = this.configService.get('bis')?.baseUrl || '/backstage';\n const avatarUrl = getUser()?.avatarId ? `${baseUrl}/filecenter/file/${getUser()?.avatarId}` : undefined;\n return avatarUrl;\n }\n\n get isLogin(): boolean {\n const [_, getUser] = useLocalStorageUser();\n return !!this.tokenService.get()?.access_token && !!getUser();\n }\n\n get _links(): YunzaiProfile[] {\n const [_, getProjectInfo] = useLocalStorageProjectInfo();\n return getProjectInfo()?.profileList || [];\n }\n\n login(): void {\n this.startupSrv.load({ force: true }).subscribe(() => {});\n }\n\n logout(): void {\n const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';\n this.win.location.href = `${baseUrl}/cas-proxy/app/logout`;\n }\n\n to(url?: string): void {\n if (url) this.win.location.href = url;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"bis.mjs","sources":["../../../../packages/bis/src/bis.module.ts","../../../../packages/bis/src/provide.ts","../../../../packages/bis/src/helper.ts","../../../../packages/bis/src/refresh-token.ts","../../../../packages/bis/src/yunzai-default.interceptor.ts","../../../../packages/bis/src/startup.service.ts","../../../../packages/bis/src/yunzai-analysis-addon.guard.ts","../../../../packages/bis/src/yunzai-act.guard.ts","../../../../packages/bis/src/website/layout-website-01.component.ts","../../../../packages/bis/src/website/layout-website-02.component.ts","../../../../packages/bis/bis.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\n\nimport { YunzaiLayoutModule } from '@yelon/bis/layout';\nimport { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';\n@NgModule({\n imports: [YunzaiLayoutModule, YunzaiWidgetsModule],\n exports: [YunzaiLayoutModule, YunzaiWidgetsModule]\n})\nexport class BisModule {}\n","import { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\n\nimport { BisModule } from './bis.module';\n\nexport function provideYunzaiBis(): EnvironmentProviders {\n const provides: EnvironmentProviders[] = [];\n provides.push(importProvidersFrom(BisModule));\n return makeEnvironmentProviders(provides);\n}\n","import { HttpHeaders, HttpResponseBase } from '@angular/common/http';\nimport { inject, Injector } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { YUNZAI_I18N_TOKEN } from '@yelon/theme';\n\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\n\nexport const CODEMESSAGE: Record<number, string> = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\nexport function getAdditionalHeaders(headers?: HttpHeaders): Record<string, string> {\n const res: Record<string, string> = {};\n const lang = inject(YUNZAI_I18N_TOKEN).currentLang;\n if (!headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n\n return res;\n}\n\nexport function checkStatus(injector: Injector, ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n injector.get(NzNotificationService).error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n}\n\nexport interface ReThrowHttpError {\n body: any;\n _throw: true;\n}\n\nexport function goTo(injector: Injector, url: string): void {\n setTimeout(() => injector.get(Router).navigateByUrl(url));\n}\n\nexport function toLogin(injector: Injector): void {\n injector.get(NzNotificationService).error(`未登录或登录已过期,请重新登录。`, ``);\n goTo(injector, injector.get(YA_SERVICE_TOKEN).login_url!);\n}\n","import { HttpClient, HttpHandlerFn, HttpRequest, HttpResponseBase } from '@angular/common/http';\nimport { APP_INITIALIZER, Injector, Provider } from '@angular/core';\nimport { BehaviorSubject, catchError, filter, Observable, switchMap, take, throwError } from 'rxjs';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { log } from '@yelon/util';\n\nimport { toLogin } from './helper';\n\nlet refreshToking = false;\nlet refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\nexport const tryRefreshToken = (\n injector: Injector,\n ev: HttpResponseBase,\n req: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<any> => {\n // 连刷新Token的请求都错了,那就是真错了\n if (['/auth/oauth/getOrCreateToken/webapp'].some(url => req.url.includes(url))) {\n toLogin(injector);\n return throwError(() => ev);\n }\n // 2、如果 `refreshToking` 为 `true` 表示已经在请求刷新 Token 中,后续所有请求转入等待状态,直至结果返回后再重新发起请求\n if (refreshToking) {\n return refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next(reAttachToken(injector, req)))\n );\n }\n // 3、尝试调用刷新 Token\n refreshToking = true;\n refreshToken$.next(null);\n\n return refreshTokenRequest(injector).pipe(\n switchMap(res => {\n // 通知后续请求继续执行\n refreshToking = false;\n refreshToken$.next(res);\n // 重新保存新 token\n injector.get(YA_SERVICE_TOKEN).set(res);\n // 重新发起请求\n return next(reAttachToken(injector, req));\n }),\n catchError(err => {\n refreshToking = false;\n toLogin(injector);\n return throwError(() => err);\n })\n );\n};\n\nfunction reAttachToken(injector: Injector, req: HttpRequest<any>): HttpRequest<any> {\n const token = injector.get(YA_SERVICE_TOKEN).get()?.access_token;\n return req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n}\n\nfunction refreshTokenRequest(injector: Injector): Observable<any> {\n const model = injector.get(YA_SERVICE_TOKEN).get();\n const form = new FormData();\n if (model?.refresh_token) {\n form.set('refresh_token', model.refresh_token);\n }\n form.set('grant_type', 'refresh_token');\n form.set('scope', 'webapp');\n return injector.get(HttpClient).post(`/auth/oauth/getOrCreateToken/webapp`, form);\n}\n\nfunction buildAuthRefresh(injector: Injector): void {\n const tokenSrv = injector.get(YA_SERVICE_TOKEN);\n tokenSrv.refresh\n .pipe(\n filter(() => !refreshToking),\n switchMap(res => {\n log(res);\n refreshToking = true;\n return refreshTokenRequest(injector);\n })\n )\n .subscribe({\n next: res => {\n res.expired = +new Date() + 1000 * 60 * 5;\n refreshToking = false;\n tokenSrv.set(res);\n },\n error: () => toLogin(injector)\n });\n}\n\nexport function provideYunzaiBindAuthRefresh(): Provider[] {\n return [\n {\n provide: APP_INITIALIZER,\n useFactory: (injector: Injector) => () => buildAuthRefresh(injector),\n deps: [Injector],\n multi: true\n }\n ];\n}\n","import {\n HttpErrorResponse,\n HttpHandlerFn,\n HttpInterceptorFn,\n HttpRequest,\n HttpResponseBase\n} from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { Observable, of, throwError, mergeMap, catchError } from 'rxjs';\n\nimport { mergeBisConfig } from '@yelon/bis/config';\nimport { IGNORE_BASE_URL } from '@yelon/theme';\nimport { YUNZAI_CONFIG, YunzaiConfigService } from '@yelon/util';\n\nimport { checkStatus, getAdditionalHeaders, goTo, ReThrowHttpError, toLogin } from './helper';\nimport { tryRefreshToken } from './refresh-token';\n\nfunction handleData(\n injector: Injector,\n ev: HttpResponseBase,\n req: HttpRequest<any>,\n next: HttpHandlerFn\n): Observable<any> {\n checkStatus(injector, ev);\n const config = injector.get(YUNZAI_CONFIG).bis!;\n switch (ev.status) {\n case 200:\n return of(ev);\n case 401:\n if (config.refreshTokenEnabled && config.refreshTokenType === 're-request') {\n const unAuthorizationReq = req.clone();\n unAuthorizationReq.headers.delete('Authorization');\n return tryRefreshToken(injector, ev, unAuthorizationReq, next);\n }\n toLogin(injector);\n break;\n case 403:\n case 404:\n case 500:\n goTo(injector, `/exception/${ev.status}?url=${req.urlWithParams}`);\n break;\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn(\n '未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题',\n ev\n );\n }\n break;\n }\n if (ev instanceof HttpErrorResponse) {\n return throwError(() => ev);\n } else if ((ev as unknown as ReThrowHttpError)._throw) {\n return throwError(() => (ev as unknown as ReThrowHttpError).body);\n } else {\n return of(ev);\n }\n}\n\nexport const yunzaiDefaultInterceptor: HttpInterceptorFn = (req, next) => {\n const config = mergeBisConfig(inject(YunzaiConfigService));\n const { baseUrl } = config;\n let url = req.url;\n if (!req.context.get(IGNORE_BASE_URL) && !url.startsWith('https://') && !url.startsWith('http://')) {\n url = baseUrl + (baseUrl!.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n }\n if (url.includes('.json') && url.includes('assets')) {\n url = req.url;\n }\n const newReq = req.clone({ url, setHeaders: getAdditionalHeaders(req.headers) });\n const injector = inject(Injector);\n return next(newReq).pipe(\n mergeMap(ev => {\n if (ev instanceof HttpResponseBase) {\n return handleData(injector, ev, newReq, next);\n }\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => handleData(injector, err, newReq, next))\n );\n};\n","import {HttpClient} from '@angular/common/http';\nimport {EnvironmentProviders, inject, Injectable, provideAppInitializer, Provider} from '@angular/core';\nimport {catchError, combineLatest, EMPTY, map, mergeMap, Observable, of} from 'rxjs';\n\nimport {ACLService} from '@yelon/acl';\nimport {ITokenModel, YA_SERVICE_TOKEN} from '@yelon/auth';\nimport {mergeBisConfig} from '@yelon/bis/config';\nimport {\n Menu,\n MenuService,\n SettingsService,\n TitleService,\n YUNZAI_I18N_TOKEN,\n YunzaiHttpI18NService\n} from '@yelon/theme';\nimport {\n deepCopy,\n useLocalStorageCurrent,\n useLocalStorageDefaultRoute,\n useLocalStorageHeader,\n useLocalStorageProjectInfo,\n useLocalStorageTenant,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService,\n YunzaiMenu,\n YunzaiMenuAttribute\n} from '@yelon/util';\n\nexport interface LoadParam {\n force?: boolean;\n}\n\n// export function provideYunzaiStartup(): Provider[] {\n// return [\n// YunzaiStartupService,\n// {\n// provide: APP_INITIALIZER,\n// useFactory: (startupService: YunzaiStartupService) => () => startupService.load(),\n// deps: [YunzaiStartupService],\n// multi: true\n// }\n// ];\n// }\n\nexport function provideYunzaiStartup(): Array<Provider | EnvironmentProviders> {\n const appInitializer = (): Observable<void> => {\n const startupService = inject(YunzaiStartupService);\n return startupService.load();\n };\n\n return [YunzaiStartupService, provideAppInitializer(appInitializer)];\n}\n\n@Injectable()\nexport class YunzaiStartupService {\n private readonly config = mergeBisConfig(inject(YunzaiConfigService));\n private readonly menuService = inject(MenuService);\n private readonly aclService = inject(ACLService);\n private readonly titleService = inject(TitleService);\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly httpClient = inject(HttpClient);\n private readonly settingService = inject(SettingsService);\n private readonly i18n = inject<YunzaiHttpI18NService>(YUNZAI_I18N_TOKEN);\n private readonly win = inject(WINDOW);\n private readonly configService = inject(YunzaiConfigService);\n\n load(param?: LoadParam): Observable<void> {\n let defaultLang: string = this.settingService.layout.lang || this.i18n.defaultLang || 'zh-CN';\n const [setTenant] = useLocalStorageTenant();\n const [setUser, getUser] = useLocalStorageUser();\n const [setHeader] = useLocalStorageHeader();\n const [setProject] = useLocalStorageProjectInfo();\n const [setDefaultRoute] = useLocalStorageDefaultRoute();\n const [setCurrent] = useLocalStorageCurrent();\n\n return this.token(param).pipe(\n mergeMap((token: any) => {\n if (token === false) {\n return this.i18n.loadLocaleData(defaultLang).pipe(\n map((langData: any) => {\n this.i18n.use(defaultLang, langData);\n this.settingService.setLayout('lang', defaultLang);\n }),\n mergeMap(() => EMPTY)\n );\n }\n this.configService.set('auth', {\n token_send_key: 'Authorization',\n token_send_template: `${token.token_type} \\${access_token}`,\n token_send_place: 'header'\n });\n this.tokenService.set(token);\n return of(void 0);\n }),\n mergeMap(() => {\n return combineLatest([\n this.httpClient.get(`/auth/user`),\n this.httpClient.get(`/auth/allheader/v2`),\n this.httpClient.get(`/app-manager/project/info`)\n ]).pipe(\n map(([user, header, project]: any) => {\n setUser(user.principal);\n setTenant(user.tenantId);\n setHeader(header.data);\n setProject(project.data);\n return void 0;\n })\n );\n }),\n mergeMap(() => {\n return this.i18n.loadLangData(defaultLang).pipe(\n map((langData: any) => {\n this.i18n.use(defaultLang, langData);\n return void 0;\n })\n );\n }),\n mergeMap(() => {\n const yunzaiUser = getUser()!;\n const yunzaiMenus: YunzaiMenu[] = deepCopy(yunzaiUser.menu).filter(\n m => m.systemCode && m.systemCode === this.config.systemCode\n );\n const currentMenu = yunzaiMenus.pop();\n if (currentMenu) {\n this.settingService.setApp({name: currentMenu.text, description: currentMenu.intro});\n this.settingService.setUser({\n name: yunzaiUser.realname,\n avatar:\n this.config.baseUrl && yunzaiUser.avatarId\n ? `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}`\n : '',\n email: yunzaiUser.email\n });\n this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';\n this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');\n const abilities: string[] = [];\n generateAbility([currentMenu], abilities, '');\n this.aclService.attachRole(\n yunzaiUser?.roles\n .map((role: any) => {\n return role.roleValue;\n })\n .filter((a: any) => !!a) || []\n );\n this.aclService.attachAbility(abilities);\n this.menuService.add([currentMenu as Menu]);\n setCurrent({\n name: currentMenu.text,\n intro: currentMenu.intro || '',\n icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'\n });\n const attributes = currentMenu.attribute;\n if (attributes) {\n const attr: YunzaiMenuAttribute = JSON.parse(attributes);\n if (attr && attr.defaultRoute) {\n setDefaultRoute(attr.defaultRoute);\n } else {\n setDefaultRoute('/displayIndex');\n }\n } else {\n setDefaultRoute('/displayIndex');\n }\n }\n return of(void 0);\n }),\n catchError((error: any) => {\n console.error('Error occurred:', error);\n return of(void 0);\n })\n );\n }\n\n token(param?: LoadParam): Observable<ITokenModel | boolean> {\n const auto = this.configService.get('auth')?.auto;\n const force = param?.force || undefined;\n if (this.config.loginForm) {\n if (this.tokenService.get()?.access_token || force || auto) {\n return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(\n map((response: any) => {\n return response;\n })\n );\n }\n return of(false);\n } else {\n const uri = encodeURIComponent(this.win.location.href);\n return this.httpClient\n .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)\n .pipe(\n map((response: any) => {\n switch (response.errcode) {\n case 2000:\n return response.data;\n case 2001:\n if (!force && !auto) {\n // 自动认证为false情况下会出现: 后台已经下线,但是用户进入网页存储了上次的cookie,Token,所以网页还是登录状态\n // 在这里如果2001时自动清理客户端过时的token以保证页面显示登录状态正常\n localStorage.clear();\n this.tokenService.clear();\n return false;\n }\n this.win.location.href = response.msg;\n throw Error(\"Cookie Error: Can't find Cas Cookie,So jump to login!\");\n default:\n if (response.data) {\n console.error(response.data);\n throw Error(response.data);\n } else if (response.msg) {\n console.error(response.msg);\n throw Error(response.msg);\n } else {\n console.error('cas unknown error');\n throw Error('Unknown Error: Cas auth exception!');\n }\n }\n })\n );\n }\n }\n}\n\nexport function mapYzSideToYelonMenu(menus: YunzaiMenu[]): void {\n menus.forEach((menu: any) => {\n if (menu.children && menu.hideChildren) {\n menu.children.forEach((c: any) => (c.hide = true));\n }\n menu.badgeDot = menu.badge_dot || null;\n menu.badgeStatus = menu.badge_status || null;\n menu.shortcutRoot = menu.shortcut_root || null;\n menu.reuse = true;\n if (menu.children) {\n mapYzSideToYelonMenu(menu.children);\n }\n });\n}\n\nexport function generateAbility(menus: YunzaiMenu[], abilities: string[], prefix: string): void {\n menus.forEach(menu => {\n if (menu.link) {\n prefix += menu.link;\n } else {\n prefix += '';\n }\n if (menu.menuAuths) {\n menu.menuAuths.forEach((a: string) => {\n abilities.push(`${prefix}:${a}`);\n abilities.push(a);\n });\n }\n\n if (menu.children) {\n generateAbility(menu.children, abilities, prefix);\n }\n });\n}\n","import { Inject, inject, Injectable } from '@angular/core';\nimport { CanActivateChildFn, CanActivateFn } from '@angular/router';\n\nimport { ITokenService, YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';\nimport { Menu } from '@yelon/theme';\nimport {\n deepCopy,\n PathToRegexpService,\n useLocalStorageUser,\n WINDOW,\n YunzaiBusinessConfig,\n YunzaiConfigService,\n YunzaiUser\n} from '@yelon/util';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class YunzaiAnalysisAddonGuardService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: any[] = [];\n private links: Array<{ title: string; link: string }> = [];\n private value: any = {};\n\n constructor(\n private configService: YunzaiConfigService,\n private pathToRegexp: PathToRegexpService,\n @Inject(WINDOW) private win: any,\n @Inject(YA_SERVICE_TOKEN) private tokenService: ITokenService\n ) {\n this.bis = mergeBisConfig(this.configService);\n const [, getUser] = useLocalStorageUser();\n const user: YunzaiUser = getUser()!;\n this.menus = deepCopy((user.menu as any) || []).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n if (user) {\n this.value = {\n systemCode: this.bis.systemCode,\n userid: user.id,\n realname: user.realname,\n usertype: user.userType,\n usercode: user.userCode,\n username: user.username,\n account: user.username,\n deptid: user.deptId,\n deptname: user.deptName,\n token: this.tokenService.get()?.access_token\n };\n }\n if (this.menus && this.menus.length > 0) {\n this.value['system'] = (this.menus[0] as Menu).text;\n }\n this.getAllLinks(this.menus, this.links);\n }\n\n process(url: string): boolean {\n let flag = false;\n this.links.forEach(link => {\n if (link.link === url.split('?')[0]) {\n flag = true;\n this.value['routename'] = link.title;\n this.value['routeurl'] = link.link;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n return;\n }\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n if (regexp.test(url.split('?')[0])) {\n flag = true;\n this.value['routename'] = link.title;\n this.value['routeurl'] = link.link;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n return;\n }\n });\n if (!flag) {\n this.value['routename'] = url;\n this.value['routeurl'] = url;\n if (this.win['yunzai']) {\n this.win['yunzai'].setExtra(this.value);\n }\n }\n return true;\n }\n\n getAllLinks(menu: Menu[], links: Array<{ title: string; link: string }>): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push({ title: sider.text ? sider.text : sider.link, link: sider.link });\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n\nexport const analysisAddonCanActive: CanActivateFn = (_, state) =>\n inject(YunzaiAnalysisAddonGuardService).process(state.url);\nexport const analysisAddonCanActiveChild: CanActivateChildFn = (_, state) =>\n inject(YunzaiAnalysisAddonGuardService).process(state.url);\n","import { Injectable, inject } from '@angular/core';\nimport { CanActivateChildFn, CanActivateFn, Router } from '@angular/router';\n\nimport { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';\nimport { Menu } from '@yelon/theme';\nimport {\n deepCopy,\n log,\n YunzaiBusinessConfig,\n YunzaiConfigService,\n PathToRegexpService,\n useLocalStorageUser,\n YunzaiUser\n} from '@yelon/util';\n\n@Injectable({ providedIn: 'root' })\nexport class ActGuardService {\n private bis: YunzaiBusinessConfig = BUSINESS_DEFAULT_CONFIG;\n private menus: any[] = [];\n private links: string[] = [];\n\n constructor(\n private configService: YunzaiConfigService,\n private pathToRegexp: PathToRegexpService,\n private router: Router\n ) {\n log('act: ');\n this.bis = mergeBisConfig(this.configService);\n log('act: config ', this.bis);\n const [, getUser] = useLocalStorageUser();\n const user: YunzaiUser = getUser()!;\n log('act: user ', user);\n this.menus = deepCopy((user.menu as any) || []).filter(\n (m: Menu) => m.systemCode && m.systemCode === this.bis.systemCode\n ) as Menu[];\n log('act: menus ', this.menus);\n this.getAllLinks(this.menus, this.links);\n log('act: links ', this.links);\n }\n\n process(url: string): boolean {\n log('act: can activate ', url);\n if (this.preHandle(url)) {\n return true;\n }\n log('act: can activate child prehandle success');\n let canactivate = false;\n this.links.forEach((link: string) => {\n // path = /xxx\n if (link === url.split('?')[0]) {\n canactivate = true;\n log(`act: link value ${link} equals url value ${url}`);\n return;\n }\n // paht = /xxx/:xx\n const regexp: RegExp = this.pathToRegexp.stringToRegexp(link, null, null);\n log(`act: ${link} test ${url.split('?')[0]}`);\n if (regexp.test(url.split('?')[0])) {\n canactivate = true;\n log(`act: test value ${canactivate}`);\n return;\n }\n });\n if (canactivate) {\n log(`act: test sucess`);\n return true;\n } else {\n log(`act: test error`);\n this.router.navigate(['displayIndex']);\n return false;\n }\n }\n\n preHandle(url: string): boolean {\n return (\n url.includes('error') ||\n url.includes('exception') ||\n url.includes('displayIndex') ||\n url === '' ||\n url === null ||\n url === '/' ||\n url.includes('iframePage')\n );\n }\n\n getAllLinks(menu: Menu[], links: string[]): void {\n menu.forEach((sider: Menu) => {\n if (sider.link) {\n links.push(sider.link);\n }\n if (sider.children && sider.children.length > 0) {\n this.getAllLinks(sider.children, links);\n }\n });\n }\n}\n\nexport const actGuardCanActive: CanActivateFn = (_, state) => inject(ActGuardService).process(state.url);\nexport const actGuardCanActiveChild: CanActivateChildFn = (_, state) => inject(ActGuardService).process(state.url);\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, Input, TemplateRef } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { I18nPipe } from '@yelon/theme';\nimport {\n YunzaiProfile,\n useLocalStorageProjectInfo,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService\n} from '@yelon/util';\n\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { YunzaiStartupService } from '../startup.service';\n\n@Component({\n selector: 'yunzai-layout-website-01',\n template: `\n <div class=\"yz-layout-website-01\">\n <div class=\"yz-layout-website-01-nav__user\">\n @if (isLogin) {\n <a\n class=\"yz-layout-website-01-link\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n [nzOverlayStyle]=\"{ width: '120px' }\"\n >\n <span nz-icon nzType=\"user\" nzTheme=\"outline\"></span>{{ _username }}<span nz-icon nzType=\"down\"></span>\n </a>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu [nzSelectable]=\"true\">\n @for (link of _links; track $index) {\n <li nz-menu-item class=\"yz-layout-website-01-link__li\" (click)=\"to(link.url)\">{{ link.name }}</li>\n }\n <li nz-menu-item [nzDanger]=\"true\" class=\"yz-layout-website-01-link__li\" (click)=\"logout()\"\n >{{ 'menu.account.logout' | i18n }}\n </li>\n </ul>\n </nz-dropdown-menu>\n } @else {\n <a class=\"yz-layout-website-01-link\" (click)=\"login()\">\n <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a\n >\n }\n </div>\n\n <header class=\"yz-layout-website-01-nav\">\n @if (_logoSrc) {\n <img [alt]=\"_logoAlt\" class=\"yz-layout-website-01-nav__logo\" [src]=\"_logoSrc\" />\n } @else {\n <div class=\"yz-layout-website-01-nav__logo__full\">LOGO</div>\n }\n\n <div class=\"yz-layout-website-01-nav__content\">\n <ng-template *ngTemplateOutlet=\"_contentTpl\" />\n </div>\n <div class=\"yz-layout-website-01-nav__slogan\">\n {{ _slogan }}\n </div>\n </header>\n <main class=\"yz-layout-website-01-container\">\n <router-outlet />\n </main>\n </div>\n `,\n\n imports: [RouterOutlet, I18nPipe, NzI18nModule, NgFor, NgIf, NzDropDownModule, NzIconModule, NgTemplateOutlet]\n})\nexport class YunzaiLayoutWebsite01Component {\n @Input() logoSrc?: string | any;\n @Input() logoAlt?: string = 'logo';\n @Input() slogan?: string = '';\n @Input() contentTpl?: TemplateRef<void> | any;\n\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly configService = inject(YunzaiConfigService);\n private readonly startupSrv = inject(YunzaiStartupService);\n private readonly win = inject(WINDOW);\n\n get _logoSrc(): string | any {\n return this.logoSrc;\n }\n\n get _logoAlt(): string {\n return this.logoAlt || 'logo';\n }\n\n get _slogan(): string {\n return this.slogan || '';\n }\n\n get _contentTpl(): TemplateRef<void> | any {\n return this.contentTpl;\n }\n\n get _username(): string {\n const [, getUser] = useLocalStorageUser();\n return getUser()?.realname || '';\n }\n\n get isLogin(): boolean {\n const [, getUser] = useLocalStorageUser();\n return !!this.tokenService.get()?.access_token && !!getUser();\n }\n\n get _links(): YunzaiProfile[] {\n const [, getProjectInfo] = useLocalStorageProjectInfo();\n return getProjectInfo()?.profileList || [];\n }\n\n login(): void {\n this.startupSrv.load({ force: true }).subscribe(() => {});\n }\n\n logout(): void {\n const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';\n this.win.location.href = `${baseUrl}/cas-proxy/app/logout?callback=` + encodeURIComponent(this.win.location.href);\n }\n\n to(url?: string): void {\n if (url) this.win.location.href = url;\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, Input, TemplateRef } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\nimport { YA_SERVICE_TOKEN } from '@yelon/auth';\nimport { I18nPipe } from '@yelon/theme';\nimport {\n useLocalStorageProjectInfo,\n useLocalStorageUser,\n WINDOW,\n YunzaiConfigService,\n YunzaiProfile\n} from '@yelon/util';\n\nimport { NzAvatarModule } from 'ng-zorro-antd/avatar';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { YunzaiStartupService } from '../startup.service';\n\n@Component({\n selector: 'yunzai-layout-website-02',\n template: `\n <div class=\"yz-layout-website-02\">\n <header class=\"yz-layout-website-02-nav\">\n <div class=\"yz-layout-website-02-inner-content\">\n @if (_logoSrc) {\n <img [alt]=\"_logoAlt\" class=\"yz-layout-website-02-nav__logo\" [src]=\"_logoSrc\" />\n } @else {\n <div class=\"yz-layout-website-02-nav__logo__full\">LOGO</div>\n }\n\n <div class=\"yz-layout-website-02-nav__content\">\n <ng-template *ngTemplateOutlet=\"_contentTpl\" />\n </div>\n\n <div class=\"yz-layout-website-02-nav-right\">\n <div class=\"yz-layout-website-02-nav__slogan\">\n <ng-template *ngTemplateOutlet=\"_slogan\" />\n </div>\n @if (isLogin) {\n <a\n class=\"yz-layout-website-02-link\"\n nz-dropdown\n [nzDropdownMenu]=\"menu\"\n [nzDisabled]=\"!_userMenuShow\"\n [nzPlacement]=\"'bottomRight'\"\n >\n <nz-avatar nzIcon=\"user\" [nzSrc]=\"_avatar\" /><b>欢迎访问:{{ _username }}</b>\n <span nz-icon nzType=\"down\" *ngIf=\"_userMenuShow\"></span>\n </a>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (link of _links; track $index) {\n <li nz-menu-item class=\"yz-layout-website-02-link__li\" (click)=\"to(link.url)\">{{ link.name }}</li>\n }\n <li nz-menu-item nzDanger class=\"yz-layout-website-02-link__li\" (click)=\"logout()\">{{\n 'menu.account.logout' | i18n\n }}</li>\n </ul>\n </nz-dropdown-menu>\n } @else {\n <a class=\"yz-layout-website-02-link\" (click)=\"login()\">\n <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a\n >\n }\n </div>\n </div>\n </header>\n <main class=\"yz-layout-website-02-container\">\n <router-outlet />\n </main>\n </div>\n `,\n\n imports: [\n RouterOutlet,\n I18nPipe,\n NzI18nModule,\n NgFor,\n NgIf,\n NzDropDownModule,\n NzIconModule,\n NgTemplateOutlet,\n NzAvatarModule\n ]\n})\nexport class YunzaiLayoutWebsite02Component {\n @Input() logoSrc?: string | any;\n @Input() logoAlt?: string = 'logo';\n @Input() userMenuShow?: boolean = false;\n @Input() slogan?: TemplateRef<void> | any;\n @Input() contentTpl?: TemplateRef<void> | any;\n\n private readonly tokenService = inject(YA_SERVICE_TOKEN);\n private readonly configService = inject(YunzaiConfigService);\n private readonly startupSrv = inject(YunzaiStartupService);\n private readonly win = inject(WINDOW);\n\n get _logoSrc(): string | any {\n return this.logoSrc;\n }\n\n get _logoAlt(): string {\n return this.logoAlt || 'logo';\n }\n\n get _userMenuShow(): boolean {\n return this.userMenuShow || false;\n }\n\n get _slogan(): TemplateRef<void> | any {\n return this.slogan;\n }\n\n get _contentTpl(): TemplateRef<void> | any {\n return this.contentTpl;\n }\n\n get _username(): string {\n const [, getUser] = useLocalStorageUser();\n return getUser()?.realname || '';\n }\n\n get _avatar(): string | undefined {\n const [, getUser] = useLocalStorageUser();\n const baseUrl: string = this.configService.get('bis')?.baseUrl || '/backstage';\n const avatarUrl = getUser()?.avatarId ? `${baseUrl}/filecenter/file/${getUser()?.avatarId}` : undefined;\n return avatarUrl;\n }\n\n get isLogin(): boolean {\n const [, getUser] = useLocalStorageUser();\n return !!this.tokenService.get()?.access_token && !!getUser();\n }\n\n get _links(): YunzaiProfile[] {\n const [, getProjectInfo] = useLocalStorageProjectInfo();\n return getProjectInfo()?.profileList || [];\n }\n\n login(): void {\n this.startupSrv.load({ force: true }).subscribe(() => {});\n }\n\n logout(): void {\n const baseUrl = this.configService.get('bis')?.baseUrl || '/backstage';\n this.win.location.href = `${baseUrl}/cas-proxy/app/logout?callback=` + encodeURIComponent(this.win.location.href);\n }\n\n to(url?: string): void {\n if (url) this.win.location.href = url;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}