Reuse default invite settings in link generation (#10651)

* Reuse default invite settings in link generation

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Capability check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix warning

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
This commit is contained in:
Artyom Savchenko
2026-03-19 14:35:06 +07:00
committed by GitHub
parent dc9744ba12
commit 195d7dbff2
9 changed files with 391 additions and 73 deletions
@@ -16,15 +16,17 @@ import type { Account } from '@hcengineering/core'
import { AccountRole, hasAccountRole } from '@hcengineering/core'
import { RoleCapability, type RoleCapabilityId } from '@hcengineering/setting'
import { DEFAULT_INVITE_LINK_GENERATOR_ROLES } from './inviteSettingsUtils'
/** Default roles that have each capability when no RoleCapabilitySettings is set */
const DEFAULT_ROLES_BY_CAPABILITY: Record<string, AccountRole[]> = {
[RoleCapability.GenerateInviteLink]: [AccountRole.User, AccountRole.Maintainer, AccountRole.Owner],
[RoleCapability.GenerateInviteLink]: DEFAULT_INVITE_LINK_GENERATOR_ROLES,
[RoleCapability.ManageInviteSettings]: [AccountRole.Maintainer, AccountRole.Owner]
}
/**
* Returns whether the given account has the specified capability.
* Uses roleByCapability if provided; otherwise for GenerateInviteLink falls back to inviteLinkGeneratorRoles; otherwise uses built-in defaults.
* Uses roleByCapability if provided; otherwise for GenerateInviteLink falls back to inviteLinkGeneratorRoles (from workspace settings / resolved defaults); otherwise {@link DEFAULT_INVITE_LINK_GENERATOR_ROLES}.
* @public
*/
export function hasRoleCapability (