{"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';\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 = (injector: Injector, ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandlerFn): 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, 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  private configService: YunzaiConfigService = inject(YunzaiConfigService);\n  private pathToRegexp: PathToRegexpService = inject(PathToRegexpService);\n  private win: any = inject(WINDOW);\n  private tokenService: ITokenService = inject(YA_SERVICE_TOKEN);\n\n  constructor() {\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  private configService: YunzaiConfigService = inject(YunzaiConfigService);\n  private pathToRegexp: PathToRegexpService = inject(PathToRegexpService);\n  private router: Router = inject(Router);\n\n  constructor() {\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 { YunzaiProfile, useLocalStorageProjectInfo, useLocalStorageUser, WINDOW, YunzaiConfigService } from '@yelon/util';\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 class=\"yz-layout-website-01-link\" nz-dropdown [nzDropdownMenu]=\"menu\" [nzOverlayStyle]=\"{ width: '120px' }\">\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()\">{{ 'menu.account.logout' | i18n }} </li>\n            </ul>\n          </nz-dropdown-menu>\n        } @else {\n          <a class=\"yz-layout-website-01-link\" (click)=\"login()\"> <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a>\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 { useLocalStorageProjectInfo, useLocalStorageUser, WINDOW, YunzaiConfigService, YunzaiProfile } from '@yelon/util';\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 class=\"yz-layout-website-02-link\" nz-dropdown [nzDropdownMenu]=\"menu\" [nzDisabled]=\"!_userMenuShow\" [nzPlacement]=\"'bottomRight'\">\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()\">{{ 'menu.account.logout' | i18n }}</li>\n                </ul>\n              </nz-dropdown-menu>\n            } @else {\n              <a class=\"yz-layout-website-02-link\" (click)=\"login()\"> <span nz-icon nzType=\"login\" nzTheme=\"outline\"></span>{{ 'app.login.login' | i18n }}</a>\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: [RouterOutlet, I18nPipe, NzI18nModule, NgFor, NgIf, NzDropDownModule, NzIconModule, NgTemplateOutlet, NzAvatarModule]\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":[],"mappings":"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"}