Files
Alaister YoungandKevin Grüneberg 70da0f1d1d chore: cleanup packages (#27770)
* chore: cleanup packages

- Avoid circular imports
- Export API-types as types
- pg-format without depending on Node internal Buffer (not browser-compatible)
- Avoid importing from barrel files in ui dir

* chore: avoid barrel file imports in studio (#27771)

* chore: avoid barrel file imports

- Removes some unused imports
- Avoids barrel file import for faster builds + less memory

* add eslint rule

* type fixes

* delete layouts barrel

* delete components/grid barrel file

* delete components/grid/utils barrel file

* delete components/grid/components/common barrel file

* delete components/grid/components/editor barrel file

* delete components/grid/components/formatter barrel file

* delete components/grid/components/grid barrel file

* delete components/grid/components/header/filter barrel file

* remote components/grid/store barrel file

* remove components/interfaces/Auth/Policies barrel file

* delete components/interfaces/Settings/Logs barrel file

* delete components/ui/CodeEditor barrel file

* delete components/ui/Forms barrel file

* delete components/ui/Shimmers barrel file

* delete data/analytics barrel file

* delete hooks barrel file

* cleanup lib/common/fetch barrel file

* final * barral files cleanup

* global react-data-grid styles

* remove console.log

---------

Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com>

* fix build

---------

Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com>
2024-07-04 14:48:10 +08:00

56 lines
1.7 KiB
TypeScript

import { PermissionAction } from '@supabase/shared-types/out/constants'
import type { OrganizationMember } from 'data/organizations/organization-members-query'
import { doPermissionsCheck, useGetPermissions } from 'hooks/misc/useCheckPermissions'
import type { Permission, Role } from 'types'
export const useGetRolesManagementPermissions = (
orgId?: number,
roles?: Role[],
permissions?: Permission[]
): { rolesAddable: Number[]; rolesRemovable: Number[] } => {
const { permissions: allPermissions, organizationId } = useGetPermissions(
permissions,
orgId,
permissions !== undefined && orgId !== undefined
)
const rolesAddable: Number[] = []
const rolesRemovable: Number[] = []
if (!roles || !orgId) return { rolesAddable, rolesRemovable }
roles.forEach((role: Role) => {
const canAdd = doPermissionsCheck(
allPermissions,
PermissionAction.CREATE,
'auth.subject_roles',
{
resource: { role_id: role.id },
},
organizationId
)
if (canAdd) rolesAddable.push(role.id)
const canRemove = doPermissionsCheck(
allPermissions,
PermissionAction.DELETE,
'auth.subject_roles',
{
resource: { role_id: role.id },
},
organizationId
)
if (canRemove) rolesRemovable.push(role.id)
})
return { rolesAddable, rolesRemovable }
}
export const hasMultipleOwners = (members: OrganizationMember[] = [], roles: Role[] = []) => {
const membersWhoAreOwners = members.filter((member) => {
const [memberRoleId] = member.role_ids ?? []
const role = roles.find((role: Role) => role.id === memberRoleId)
return role?.name === 'Owner' && !member.invited_at
})
return membersWhoAreOwners.length > 1
}