26 lines
828 B
TypeScript
26 lines
828 B
TypeScript
import type { RolePermissionKey, UserRole } from '@mento/shared';
|
|
import { sanitizePermissions } from '../org-roles/role-defaults';
|
|
|
|
export type ConversationAccess = {
|
|
canUse: boolean;
|
|
canCreateGroup: boolean;
|
|
canCreateChannel: boolean;
|
|
};
|
|
|
|
export function resolveConversationAccess(
|
|
membershipRole: UserRole | string,
|
|
orgRolePermissions: unknown,
|
|
): ConversationAccess {
|
|
if (membershipRole === 'owner' || membershipRole === 'admin') {
|
|
return { canUse: true, canCreateGroup: true, canCreateChannel: true };
|
|
}
|
|
const permissions = sanitizePermissions(orgRolePermissions) as RolePermissionKey[];
|
|
const canUse = permissions.includes('conversations');
|
|
const canCreateGroup = permissions.includes('conversations_groups');
|
|
return {
|
|
canUse,
|
|
canCreateGroup,
|
|
canCreateChannel: canCreateGroup,
|
|
};
|
|
}
|