From fdaa9cc48e6c2ddc3ddfddce10a7f076775e3392 Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Mon, 22 May 2023 01:33:55 +0800 Subject: [PATCH] refactor: make adminToken usage clearer --- src/services/auth/index.ts | 14 ++++++++++---- src/services/wiki/index.ts | 11 ++++++++--- src/services/wiki/interface.ts | 2 +- src/services/workspacesView/index.ts | 7 +------ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/services/auth/index.ts b/src/services/auth/index.ts index 28880346..d1d8446d 100644 --- a/src/services/auth/index.ts +++ b/src/services/auth/index.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/require-await */ /* eslint-disable unicorn/no-null */ import { IGitUserInfos } from '@services/git/interface'; +import { logger } from '@services/libs/log'; import { IAuthingUserInfo, SupportedStorageServices } from '@services/types'; import { IWorkspace } from '@services/workspaces/interface'; import settings from 'electron-settings'; @@ -110,9 +111,10 @@ export class Authentication implements IAuthenticationService { } public generateOneTimeAdminAuthTokenForWorkspace(workspaceID: string): string { - const newToken = nanoid().toLowerCase(); - this.oneTimeAdminAuthToken.set(workspaceID, newToken); - return newToken; + const adminToken = nanoid().toLowerCase(); + logger.error(`generateOneTimeAdminAuthTokenForWorkspace() adminToken for ${workspaceID} is ${adminToken}`); + this.oneTimeAdminAuthToken.set(workspaceID, adminToken); + return adminToken; } public async getOneTimeAdminAuthTokenForWorkspace(workspaceID: string): Promise { @@ -120,7 +122,11 @@ export class Authentication implements IAuthenticationService { } public getOneTimeAdminAuthTokenForWorkspaceSync(workspaceID: string): string | undefined { - return this.oneTimeAdminAuthToken.get(workspaceID); + const adminToken = this.oneTimeAdminAuthToken.get(workspaceID); + if (adminToken === undefined) { + logger.error(`getOneTimeAdminAuthTokenForWorkspaceSync() No adminToken for ${workspaceID}`); + } + return adminToken; } /** diff --git a/src/services/wiki/index.ts b/src/services/wiki/index.ts index 83cb8c8e..a72b340e 100644 --- a/src/services/wiki/index.ts +++ b/src/services/wiki/index.ts @@ -581,8 +581,8 @@ export class Wiki implements IWikiService { }); } - public async wikiStartup(workspace: IWorkspace, configs?: { adminToken?: string }): Promise { - const { wikiFolderLocation, isSubWiki, mainWikiToLink, id, name, mainWikiID } = workspace; + public async wikiStartup(workspace: IWorkspace): Promise { + const { wikiFolderLocation, isSubWiki, mainWikiToLink, id, name, mainWikiID, tokenAuth } = workspace; // remove $:/StoryList, otherwise it sometimes cause $__StoryList_1.tid to be generated // and it will leak private sub-wiki's opened tiddler title @@ -593,6 +593,11 @@ export class Wiki implements IWikiService { } const userName = await this.authService.getUserName(workspace); + let adminToken = ''; + if (tokenAuth) { + logger.debug(`initializeWorkspaceView() generateOneTimeAdminAuthTokenForWorkspace`); + adminToken = this.authService.generateOneTimeAdminAuthTokenForWorkspace(id); + } // if is main wiki if (isSubWiki) { @@ -608,7 +613,7 @@ export class Wiki implements IWikiService { } else { try { logger.debug('startWiki() calling startWiki'); - await this.startWiki(id, userName, { adminToken: configs?.adminToken }); + await this.startWiki(id, userName, { adminToken }); logger.debug('startWiki() done'); } catch (error) { logger.warn(`Get startWiki() error: ${(error as Error)?.message}`); diff --git a/src/services/wiki/interface.ts b/src/services/wiki/interface.ts index b0bef3f4..10e91ded 100644 --- a/src/services/wiki/interface.ts +++ b/src/services/wiki/interface.ts @@ -73,7 +73,7 @@ export interface IWikiService { ...arguments_: Parameters ): undefined | ReturnType; /** handle start/restart of wiki/subwiki, will handle wiki sync too */ - wikiStartup(workspace: IWorkspace, configs?: { adminToken?: string }): Promise; + wikiStartup(workspace: IWorkspace): Promise; } export const WikiServiceIPCDescriptor = { channel: WikiChannel.name, diff --git a/src/services/workspacesView/index.ts b/src/services/workspacesView/index.ts index bdd1a338..36c69174 100644 --- a/src/services/workspacesView/index.ts +++ b/src/services/workspacesView/index.ts @@ -123,13 +123,8 @@ export class WorkspaceView implements IWorkspaceViewService { }); } } - let adminToken = ''; - if (workspace.tokenAuth) { - logger.debug(`initializeWorkspaceView() generateOneTimeAdminAuthTokenForWorkspace`); - adminToken = this.authService.generateOneTimeAdminAuthTokenForWorkspace(workspace.id); - } logger.debug(`initializeWorkspaceView() calling wikiStartup()`); - await this.wikiService.wikiStartup(workspace, { adminToken }); + await this.wikiService.wikiStartup(workspace); const userInfo = await this.authService.getStorageServiceUserInfo(workspace.storageService); const { wikiFolderLocation, gitUrl: githubRepoUrl, storageService, homeUrl } = workspace;