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 { MenuBarVisibility, getTitleBarStyle, IWindowOpenable, getMenuBarVisibility } from 'vs/platform/windows/common/windows';
|
||||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||||
import { IAction, Action, SubmenuAction, Separator } from 'vs/base/common/actions';
|
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 { addDisposableListener, Dimension, EventType } from 'vs/base/browser/dom';
|
||||||
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
|
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
|
||||||
import { isMacintosh, isWeb, isIOS, isNative } from 'vs/base/common/platform';
|
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 { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
|
||||||
import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys';
|
import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys';
|
||||||
import { ICommandService } from 'vs/platform/commands/common/commands';
|
import { ICommandService } from 'vs/platform/commands/common/commands';
|
||||||
|
import { ILogService } from 'vs/platform/log/common/log';
|
||||||
|
|
||||||
export abstract class MenubarControl extends Disposable {
|
export abstract class MenubarControl extends Disposable {
|
||||||
|
|
||||||
@ -312,7 +314,8 @@ export class CustomMenubarControl extends MenubarControl {
|
|||||||
@IThemeService private readonly themeService: IThemeService,
|
@IThemeService private readonly themeService: IThemeService,
|
||||||
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
|
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
|
||||||
@IHostService protected readonly hostService: IHostService,
|
@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);
|
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.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;
|
return webNavigationActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user