feat(lib/vscode): add log out to application menu
This adds a new option to the Application Menu called Log out. It deletes the code-server cookie and logs a user out.
This commit is contained in:
parent
24dc2080f9
commit
9f790fd2f3
@ -9,6 +9,7 @@ import { registerThemingParticipant, IThemeService } from 'vs/platform/theme/com
|
||||
import { MenuBarVisibility, getTitleBarStyle, IWindowOpenable, getMenuBarVisibility } from 'vs/platform/windows/common/windows';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IAction, Action, SubmenuAction, Separator } from 'vs/base/common/actions';
|
||||
import * as DOM from 'vs/base/browser/dom';
|
||||
import { addDisposableListener, Dimension, EventType } from 'vs/base/browser/dom';
|
||||
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
|
||||
import { isMacintosh, isWeb, isIOS, isNative } from 'vs/base/common/platform';
|
||||
@ -38,6 +39,7 @@ import { KeyCode } from 'vs/base/common/keyCodes';
|
||||
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||
import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys';
|
||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
|
||||
export abstract class MenubarControl extends Disposable {
|
||||
|
||||
@ -312,7 +314,8 @@ export class CustomMenubarControl extends MenubarControl {
|
||||
@IThemeService private readonly themeService: IThemeService,
|
||||
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
|
||||
@IHostService protected readonly hostService: IHostService,
|
||||
@ICommandService commandService: ICommandService
|
||||
@ICommandService commandService: ICommandService,
|
||||
@ILogService private readonly logService: ILogService
|
||||
) {
|
||||
super(menuService, workspacesService, contextKeyService, keybindingService, configurationService, labelService, updateService, storageService, notificationService, preferencesService, environmentService, accessibilityService, hostService, commandService);
|
||||
|
||||
@ -711,6 +714,28 @@ export class CustomMenubarControl extends MenubarControl {
|
||||
webNavigationActions.pop();
|
||||
}
|
||||
|
||||
webNavigationActions.push(new Action('logout', localize('logout', "Log out"), undefined, true,
|
||||
async (event?: MouseEvent) => {
|
||||
const COOKIE_KEY = 'key';
|
||||
const loginCookie = DOM.getCookieValue(COOKIE_KEY);
|
||||
|
||||
this.logService.info('Logging out of code-server');
|
||||
|
||||
if(loginCookie) {
|
||||
this.logService.info(`Removing cookie under ${COOKIE_KEY}`);
|
||||
|
||||
if (document && document.cookie) {
|
||||
// We delete the cookie by setting the expiration to a date/time in the past
|
||||
document.cookie = COOKIE_KEY +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
|
||||
window.location.href = '/login';
|
||||
} else {
|
||||
this.logService.warn('Could not delete cookie because document and/or document.cookie is undefined');
|
||||
}
|
||||
} else {
|
||||
this.logService.warn('Could not log out because we could not find cookie');
|
||||
}
|
||||
}))
|
||||
|
||||
return webNavigationActions;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user