Files
cloudbeaver/webapp/packages/plugin-authentication/src/AuthMenuService.ts
T

62 lines
2.1 KiB
TypeScript

/*
* cloudbeaver - Cloud Database Manager
* Copyright (C) 2020 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import { AdministrationTopAppBarService } from '@cloudbeaver/core-administration';
import { SettingsMenuService, TopNavService } from '@cloudbeaver/core-app';
import { AuthInfoService } from '@cloudbeaver/core-authentication';
import { injectable, Bootstrap } from '@cloudbeaver/core-di';
import { ServerService } from '@cloudbeaver/core-root';
import { AuthenticationService } from './AuthenticationService';
import { AuthDialogService } from './Dialog/AuthDialogService';
import { UserInfo } from './UserInfo';
@injectable()
export class AuthMenuService extends Bootstrap {
constructor(
private serverService: ServerService,
private authDialogService: AuthDialogService,
private authenticationService: AuthenticationService,
private authInfoService: AuthInfoService,
private settingsMenuService: SettingsMenuService,
private topNavService: TopNavService,
private administrationTopAppBarService: AdministrationTopAppBarService
) {
super();
}
register() {
this.settingsMenuService.addMenuItem(
SettingsMenuService.settingsMenuToken,
{
id: 'login',
order: 0,
isHidden: () => !this.serverService.config.data?.authenticationEnabled || !!this.authInfoService.userInfo,
title: 'authentication_login',
onClick: () => this.authDialogService.showLoginForm(),
}
);
this.settingsMenuService.addMenuItem(
SettingsMenuService.settingsMenuToken,
{
id: 'logout',
order: Number.MAX_SAFE_INTEGER,
isHidden: () => !this.authInfoService.userInfo,
title: 'authentication_logout',
onClick: this.authenticationService.logout.bind(this.authenticationService),
}
);
this.topNavService.placeholder.add(UserInfo, 4);
this.administrationTopAppBarService.placeholder.add(UserInfo, 4);
}
load(): void | Promise<void> { }
}