Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions server/mergin/sync/private_api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -410,8 +410,6 @@ paths:
description: Accepted
"400":
$ref: "#/components/responses/BadStatusResp"
"413":
$ref: "#/components/responses/FileTooLargeResp"
"403":
$ref: "#/components/responses/Forbidden"
"404":
Expand All @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion server/migrations/README
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Generic single-database configuration.
Database alembic migrations for the project.
72 changes: 14 additions & 58 deletions web-app/packages/lib/src/common/permission_utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,18 @@
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<WorkspaceRole, WorkspaceRoleName> =
{
Expand All @@ -53,75 +51,33 @@
[WorkspaceRole.owner]: 'owner'
}

export const USER_ROLE_BY_NAME: Record<WorkspaceRoleName, WorkspaceRole> = {
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, ProjectRoleName> = {
[ProjectRole.reader]: 'reader',
[ProjectRole.editor]: 'editor',
[ProjectRole.writer]: 'writer',
[ProjectRole.owner]: 'owner'
}

export const PROJECT_ROLE_BY_NAME: Record<ProjectRoleName, ProjectRole> = {
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
}

Check warning on line 61 in web-app/packages/lib/src/common/permission_utils.ts

View workflow job for this annotation

GitHub Actions / JavaScript code convention check

Delete `⏎`
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(
Expand All @@ -133,7 +89,7 @@
[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<ProjectRoleName>[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-MerginMaps-Commercial
<!-- Title with buttons -->
<h1 class="headline-h3 text-color font-semibold">Account details</h1>
<div
v-if="loggedUser.can_edit_profile"
v-if="loggedUser?.can_edit_profile"
class="flex flex-grow-1 align-items-center lg:justify-content-end"
>
<PButton
Expand Down Expand Up @@ -113,6 +113,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-MerginMaps-Commercial
<template #title>Advanced</template>
<div class="flex flex-column row-gap-3 paragraph-p5 px-4 pb-4">
<div
v-if="loggedUser?.can_edit_profile"
:class="[
'flex flex-column align-items-start',
'row-gap-2',
Expand Down
Loading