Skip to content

Commit ebdcb02

Browse files
dnplkndllclaude
andcommitted
fix: address review feedback — role restriction, locale parity, formatting
- Restrict API token creation/revocation to AccountRole.User or higher (guests cannot use API tokens), per reviewer suggestion - Add 5 missing translation keys (ApiTokenPermissions, ApiTokenScopePreset, ApiTokenScopeReadOnly, ApiTokenScopeReadWrite, ApiTokenScopeFullAccess) to all non-en locale files to fix locale parity CI test - Fix prettier formatting in apiTokenScopes.test.ts - Rename local `extra` to `tokenExtra` in createApiToken to avoid shadowing the decoded token's `extra` field Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Don Kendall <kendall@donkendall.com>
1 parent 14a57d6 commit ebdcb02

21 files changed

Lines changed: 152 additions & 75 deletions

File tree

foundations/core/packages/account-client/src/client.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,12 @@ export interface AccountClient {
257257
getWorkspaceUsersWithPermission: (params: { permission: string }) => Promise<AccountUuid[]>
258258

259259
verify2fa: (code: string) => Promise<LoginInfo>
260-
createApiToken: (name: string, workspaceUuid: WorkspaceUuid, expiryDays: number, scopes?: string[]) => Promise<ApiTokenResult>
260+
createApiToken: (
261+
name: string,
262+
workspaceUuid: WorkspaceUuid,
263+
expiryDays: number,
264+
scopes?: string[]
265+
) => Promise<ApiTokenResult>
261266
listApiTokens: () => Promise<ApiTokenInfo[]>
262267
revokeApiToken: (tokenId: string) => Promise<void>
263268
listWorkspaceApiTokens: (workspaceUuid: WorkspaceUuid) => Promise<ApiTokenInfo[]>
@@ -1232,7 +1237,12 @@ class AccountClientImpl implements AccountClient {
12321237
await this.rpc(request)
12331238
}
12341239

1235-
async createApiToken (name: string, workspaceUuid: WorkspaceUuid, expiryDays: number, scopes?: string[]): Promise<ApiTokenResult> {
1240+
async createApiToken (
1241+
name: string,
1242+
workspaceUuid: WorkspaceUuid,
1243+
expiryDays: number,
1244+
scopes?: string[]
1245+
): Promise<ApiTokenResult> {
12361246
const request = {
12371247
method: 'createApiToken' as const,
12381248
params: { name, workspaceUuid, expiryDays, scopes }

models/setting/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export class TInviteSettings extends TConfiguration implements InviteSettings {
121121
@UX(setting.string.RoleCapabilitySettings)
122122
export class TRoleCapabilitySettings extends TConfiguration implements RoleCapabilitySettings {
123123
@Prop(TypeRecord(), setting.string.RoleCapabilitySettings)
124-
roleByCapability!: Record<string, AccountRole[]>
124+
roleByCapability!: Record<string, AccountRole[]>
125125
}
126126

127127
@Model(setting.class.OfficeSettings, core.class.Configuration, DOMAIN_SETTING)
@@ -147,7 +147,7 @@ export class TSpaceTypeCreator extends TClass implements SpaceTypeCreator {
147147
extraComponent!: AnyComponent
148148
}
149149

150-
export function createModel (builder: Builder): void {
150+
export function createModel(builder: Builder): void {
151151
builder.createModel(
152152
TIntegration,
153153
TIntegrationType,

plugins/setting-assets/lang/cs.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/de.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,11 @@
263263
"ApiTokenExpiry180Days": "180 days",
264264
"ApiTokenExpiry365Days": "365 days",
265265
"ApiTokenLoadError": "Failed to load API tokens",
266-
"ApiTokenCreateError": "Failed to create token. Please try again."
266+
"ApiTokenCreateError": "Failed to create token. Please try again.",
267+
"ApiTokenPermissions": "Permissions",
268+
"ApiTokenScopePreset": "Permissions",
269+
"ApiTokenScopeReadOnly": "Read Only",
270+
"ApiTokenScopeReadWrite": "Read & Write",
271+
"ApiTokenScopeFullAccess": "Full Access"
267272
}
268273
}

plugins/setting-assets/lang/es.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/fr.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/it.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/ja.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/pt-br.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

plugins/setting-assets/lang/pt.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@
262262
"ApiTokenExpiry180Days": "180 days",
263263
"ApiTokenExpiry365Days": "365 days",
264264
"ApiTokenLoadError": "Failed to load API tokens",
265-
"ApiTokenCreateError": "Failed to create token. Please try again."
265+
"ApiTokenCreateError": "Failed to create token. Please try again.",
266+
"ApiTokenPermissions": "Permissions",
267+
"ApiTokenScopePreset": "Permissions",
268+
"ApiTokenScopeReadOnly": "Read Only",
269+
"ApiTokenScopeReadWrite": "Read & Write",
270+
"ApiTokenScopeFullAccess": "Full Access"
266271
}
267272
}

0 commit comments

Comments
 (0)