From 9e4c43d40122506051d533adfbfda36c545afa2d Mon Sep 17 00:00:00 2001 From: "marcel.kocisek" Date: Wed, 7 May 2025 17:03:49 +0200 Subject: [PATCH 1/3] Cleanup of permission utils from un neccessary objects - remove 4113 from download apis --- server/mergin/sync/private_api.yaml | 4 -- .../lib/src/common/permission_utils.ts | 72 ++++--------------- 2 files changed, 14 insertions(+), 62 deletions(-) diff --git a/server/mergin/sync/private_api.yaml b/server/mergin/sync/private_api.yaml index 8c7c8491..389a6d7b 100644 --- a/server/mergin/sync/private_api.yaml +++ b/server/mergin/sync/private_api.yaml @@ -410,8 +410,6 @@ paths: description: Accepted "400": $ref: "#/components/responses/BadStatusResp" - "413": - $ref: "#/components/responses/FileTooLargeResp" "403": $ref: "#/components/responses/Forbidden" "404": @@ -425,8 +423,6 @@ components: description: Project not found. BadStatusResp: description: Invalid request. - FileTooLargeResp: - description: File is too large. InvalidDataResp: description: Invalid/unprocessable data. Success: diff --git a/web-app/packages/lib/src/common/permission_utils.ts b/web-app/packages/lib/src/common/permission_utils.ts index be94ba8c..6905f90e 100644 --- a/web-app/packages/lib/src/common/permission_utils.ts +++ b/web-app/packages/lib/src/common/permission_utils.ts @@ -28,20 +28,18 @@ export enum GlobalRole { global_admin } -export type WorkspaceRoleName = - | 'guest' - | 'reader' - | 'editor' - | 'writer' - | 'admin' - | 'owner' +export enum ProjectPermission { + read, + edit, + write, + owner +} -export type ProjectRoleName = Extract< - WorkspaceRoleName, - 'reader' | 'editor' | 'writer' | 'owner' -> +export type WorkspaceRoleName = keyof typeof WorkspaceRole -export type ProjectPermissionName = 'owner' | 'write' | 'edit' | 'read' +export type ProjectRoleName = keyof typeof ProjectRole + +export type ProjectPermissionName = keyof typeof ProjectPermission export const USER_ROLE_NAME_BY_ROLE: Record = { @@ -53,15 +51,6 @@ export const USER_ROLE_NAME_BY_ROLE: Record = [WorkspaceRole.owner]: 'owner' } -export const USER_ROLE_BY_NAME: Record = { - guest: WorkspaceRole.guest, - reader: WorkspaceRole.reader, - editor: WorkspaceRole.editor, - writer: WorkspaceRole.writer, - admin: WorkspaceRole.admin, - owner: WorkspaceRole.owner -} - export const PROJECT_ROLE_NAME_BY_ROLE: Record = { [ProjectRole.reader]: 'reader', [ProjectRole.editor]: 'editor', @@ -69,59 +58,26 @@ export const PROJECT_ROLE_NAME_BY_ROLE: Record = { [ProjectRole.owner]: 'owner' } -export const PROJECT_ROLE_BY_NAME: Record = { - reader: ProjectRole.reader, - editor: ProjectRole.editor, - writer: ProjectRole.writer, - owner: ProjectRole.owner -} - -export enum ProjectPermission { - read, - edit, - write, - owner -} - -export const PROJECT_PERMISSION_NAME_BY_PERMISSION: Record< - ProjectPermission, - ProjectPermissionName -> = { - [ProjectPermission.read]: 'read', - [ProjectPermission.edit]: 'edit', - [ProjectPermission.write]: 'write', - [ProjectPermission.owner]: 'owner' -} - -export const PROJECT_PERMISSION_BY_NAME: Record< - ProjectPermissionName, - ProjectPermission -> = { - read: ProjectPermission.read, - edit: ProjectPermission.edit, - write: ProjectPermission.write, - owner: ProjectPermission.owner -} export function isAtLeastRole( roleName: WorkspaceRoleName, role: WorkspaceRole ): boolean { - return USER_ROLE_BY_NAME[roleName] >= role + return WorkspaceRole[roleName] >= role } export function isAtLeastProjectRole( roleName: ProjectRoleName, role: ProjectRole ): boolean { - return PROJECT_ROLE_BY_NAME[roleName] >= role + return ProjectRole[roleName] >= role } export function isAtLeastProjectPermission( permissionName: ProjectPermissionName, permission: ProjectPermission ): boolean { - return PROJECT_PERMISSION_BY_NAME[permissionName] >= permission + return ProjectPermission[permissionName] >= permission } export function isAtLeastGlobalRole( @@ -133,7 +89,7 @@ export function isAtLeastGlobalRole( [GlobalRole.global_write]: ProjectRole.writer, [GlobalRole.global_admin]: ProjectRole.owner } - return PROJECT_ROLE_BY_NAME[roleName] >= globalProjectRole[globalRole] + return ProjectRole[roleName] >= globalProjectRole[globalRole] } export function getProjectRoleNameValues(): DropdownOption[] { From e6832729178151e1aaeb88a17795a205422eaf40 Mon Sep 17 00:00:00 2001 From: "marcel.kocisek" Date: Fri, 9 May 2025 12:30:49 +0200 Subject: [PATCH 2/3] Hide receive notifications for can_edit_profile users false --- .../lib/src/modules/user/views/ProfileViewTemplate.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web-app/packages/lib/src/modules/user/views/ProfileViewTemplate.vue b/web-app/packages/lib/src/modules/user/views/ProfileViewTemplate.vue index 7326f055..12358d8c 100644 --- a/web-app/packages/lib/src/modules/user/views/ProfileViewTemplate.vue +++ b/web-app/packages/lib/src/modules/user/views/ProfileViewTemplate.vue @@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-MerginMaps-Commercial

Account details

Advanced
Date: Mon, 12 May 2025 12:46:55 +0200 Subject: [PATCH 3/3] Some text to run tests --- server/migrations/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/migrations/README b/server/migrations/README index 98e4f9c4..995a02e0 100644 --- a/server/migrations/README +++ b/server/migrations/README @@ -1 +1 @@ -Generic single-database configuration. \ No newline at end of file +Database alembic migrations for the project.