mirror of
https://github.com/standardnotes/server
synced 2026-10-18 15:03:08 -04:00
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { RoleName, SubscriptionName } from '@standardnotes/common'
|
|
import { injectable } from 'inversify'
|
|
import { Role } from './Role'
|
|
|
|
import { RoleToSubscriptionMapInterface } from './RoleToSubscriptionMapInterface'
|
|
|
|
@injectable()
|
|
export class RoleToSubscriptionMap implements RoleToSubscriptionMapInterface {
|
|
private readonly roleNameToSubscriptionNameMap = new Map<RoleName, SubscriptionName>([
|
|
[RoleName.PlusUser, SubscriptionName.PlusPlan],
|
|
[RoleName.ProUser, SubscriptionName.ProPlan],
|
|
])
|
|
|
|
private readonly nonSubscriptionRoles = [RoleName.CoreUser, RoleName.FilesBetaUser]
|
|
|
|
filterNonSubscriptionRoles(roles: Role[]): Array<Role> {
|
|
return roles.filter((role) => this.nonSubscriptionRoles.includes(role.name as RoleName))
|
|
}
|
|
|
|
getSubscriptionNameForRoleName(roleName: RoleName): SubscriptionName | undefined {
|
|
return this.roleNameToSubscriptionNameMap.get(roleName)
|
|
}
|
|
|
|
getRoleNameForSubscriptionName(subscriptionName: SubscriptionName): RoleName | undefined {
|
|
for (const [roleNameItem, subscriptionNameItem] of this.roleNameToSubscriptionNameMap) {
|
|
if (subscriptionNameItem === subscriptionName) {
|
|
return roleNameItem
|
|
}
|
|
}
|
|
return undefined
|
|
}
|
|
}
|