0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

refactor(console): add new quota items for subscription plan (#5128)

This commit is contained in:
Xiao Yijun 2023-12-20 14:08:30 +08:00 committed by GitHub
parent b5bc374f2b
commit 6b2e1c8908
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 402 additions and 27 deletions

View file

@ -26,7 +26,7 @@
"@fontsource/roboto-mono": "^5.0.0",
"@jest/types": "^29.5.0",
"@logto/app-insights": "workspace:^1.3.1",
"@logto/cloud": "0.2.5-5a698db",
"@logto/cloud": "0.2.5-5deb133",
"@logto/connector-kit": "workspace:^2.0.0",
"@logto/core-kit": "workspace:^2.2.1",
"@logto/language-kit": "workspace:^1.0.0",

View file

@ -80,13 +80,6 @@ export const ticketSupportResponseTimeMap: Record<string, number | undefined> =
[ReservedPlanId.Pro]: 48,
};
// @Todo @xiaoyijun [Pricing] read token limit from backend when it's ready
export const tokenLimitMap: Record<string, Nullable<number>> = {
[ReservedPlanId.Free]: 500_000,
[ReservedPlanId.Hobby]: 1_000_000,
[ReservedPlanId.Pro]: 1_000_000,
};
export const allowedUsersPerOrganizationMap: Record<string, Nullable<number> | undefined> = {
[ReservedPlanId.Free]: 0,
[ReservedPlanId.Hobby]: null,
@ -147,6 +140,7 @@ const enterprisePlanTable: SubscriptionPlanTable = {
standardConnectorsLimit: undefined,
userManagementEnabled: true,
rolesLimit: undefined,
machineToMachineRolesLimit: undefined,
scopesPerRoleLimit: undefined,
auditLogsRetentionDays: undefined,
hooksLimit: undefined,
@ -197,6 +191,8 @@ export const planTableGroupKeyMap: SubscriptionPlanTableGroupKeyMap = Object.fre
[SubscriptionPlanTableGroupKey.roles]: [
'userManagementEnabled',
'rolesLimit',
// Todo @xiaoyijun [Pricing] Remove feature flag
...condArray(isDevelopmentFeaturesEnabled && 'machineToMachineRolesLimit'),
'scopesPerRoleLimit',
],
[SubscriptionPlanTableGroupKey.organizations]: [

View file

@ -7,6 +7,7 @@ export const quotaItemPhrasesMap: Record<
TFuncKey<'translation', 'admin_console.subscription.quota_item'>
> = {
mauLimit: 'mau_limit.name',
tokenLimit: 'token_limit.name',
applicationsLimit: 'applications_limit.name',
machineToMachineLimit: 'machine_to_machine_limit.name',
resourcesLimit: 'resources_limit.name',
@ -16,6 +17,7 @@ export const quotaItemPhrasesMap: Record<
socialConnectorsLimit: 'social_connectors_limit.name',
standardConnectorsLimit: 'standard_connectors_limit.name',
rolesLimit: 'roles_limit.name',
machineToMachineRolesLimit: 'machine_to_machine_roles_limit.name',
scopesPerRoleLimit: 'scopes_per_role_limit.name',
hooksLimit: 'hooks_limit.name',
auditLogsRetentionDays: 'audit_logs_retention_days.name',
@ -31,6 +33,7 @@ export const quotaItemUnlimitedPhrasesMap: Record<
TFuncKey<'translation', 'admin_console.subscription.quota_item'>
> = {
mauLimit: 'mau_limit.unlimited',
tokenLimit: 'token_limit.unlimited',
applicationsLimit: 'applications_limit.unlimited',
machineToMachineLimit: 'machine_to_machine_limit.unlimited',
resourcesLimit: 'resources_limit.unlimited',
@ -40,6 +43,7 @@ export const quotaItemUnlimitedPhrasesMap: Record<
socialConnectorsLimit: 'social_connectors_limit.unlimited',
standardConnectorsLimit: 'standard_connectors_limit.unlimited',
rolesLimit: 'roles_limit.unlimited',
machineToMachineRolesLimit: 'machine_to_machine_roles_limit.unlimited',
scopesPerRoleLimit: 'scopes_per_role_limit.unlimited',
hooksLimit: 'hooks_limit.unlimited',
auditLogsRetentionDays: 'audit_logs_retention_days.unlimited',
@ -55,6 +59,7 @@ export const quotaItemLimitedPhrasesMap: Record<
TFuncKey<'translation', 'admin_console.subscription.quota_item'>
> = {
mauLimit: 'mau_limit.limited',
tokenLimit: 'token_limit.limited',
applicationsLimit: 'applications_limit.limited',
machineToMachineLimit: 'machine_to_machine_limit.limited',
resourcesLimit: 'resources_limit.limited',
@ -64,6 +69,7 @@ export const quotaItemLimitedPhrasesMap: Record<
socialConnectorsLimit: 'social_connectors_limit.limited',
standardConnectorsLimit: 'standard_connectors_limit.limited',
rolesLimit: 'roles_limit.limited',
machineToMachineRolesLimit: 'machine_to_machine_roles_limit.limited',
scopesPerRoleLimit: 'scopes_per_role_limit.limited',
hooksLimit: 'hooks_limit.limited',
auditLogsRetentionDays: 'audit_logs_retention_days.limited',
@ -79,6 +85,7 @@ export const quotaItemNotEligiblePhrasesMap: Record<
TFuncKey<'translation', 'admin_console.subscription.quota_item'>
> = {
mauLimit: 'mau_limit.not_eligible',
tokenLimit: 'token_limit.not_eligible',
applicationsLimit: 'applications_limit.not_eligible',
machineToMachineLimit: 'machine_to_machine_limit.not_eligible',
resourcesLimit: 'resources_limit.not_eligible',
@ -88,6 +95,7 @@ export const quotaItemNotEligiblePhrasesMap: Record<
socialConnectorsLimit: 'social_connectors_limit.not_eligible',
standardConnectorsLimit: 'standard_connectors_limit.not_eligible',
rolesLimit: 'roles_limit.not_eligible',
machineToMachineRolesLimit: 'machine_to_machine_roles_limit.not_eligible',
scopesPerRoleLimit: 'scopes_per_role_limit.not_eligible',
hooksLimit: 'hooks_limit.not_eligible',
auditLogsRetentionDays: 'audit_logs_retention_days.not_eligible',

View file

@ -37,6 +37,7 @@ const planQuotaKeyPhraseMap: {
ssoEnabled: 'user_authn.sso',
userManagementEnabled: 'user_management.user_management',
rolesLimit: 'user_management.roles',
machineToMachineRolesLimit: 'user_management.machine_to_machine_roles',
scopesPerRoleLimit: 'user_management.scopes_per_role',
hooksLimit: 'hooks.hooks',
auditLogsRetentionDays: 'audit_logs.retention',

View file

@ -118,6 +118,9 @@ export const quotaValueRenderer: Record<
<GenericFeatureFlag isEnabled={userManagementEnabled} />
),
rolesLimit: ({ table: { rolesLimit } }) => <GenericQuotaLimit quota={rolesLimit} />,
machineToMachineRolesLimit: ({ table: { machineToMachineRolesLimit } }) => (
<GenericQuotaLimit quota={machineToMachineRolesLimit} />
),
scopesPerRoleLimit: ({ table: { scopesPerRoleLimit } }) => (
<GenericQuotaLimit quota={scopesPerRoleLimit} />
),

View file

@ -14,7 +14,6 @@ import {
passwordSignInEnabledMap,
passwordlessSignInEnabledMap,
smsConnectorsEnabledMap,
tokenLimitMap,
userManagementEnabledMap,
} from '@/consts/plan-quotas';
import { type SubscriptionPlanTableData, type SubscriptionPlan } from '@/types/subscriptions';
@ -52,7 +51,6 @@ export const constructPlanTableDataArray = (
emailConnectorsEnabled: emailConnectorsEnabledMap[id],
smsConnectorsEnabled: smsConnectorsEnabledMap[id],
userManagementEnabled: userManagementEnabledMap[id],
tokenLimit: tokenLimitMap[id],
allowedUsersPerOrganization: allowedUsersPerOrganizationMap[id],
invitationEnabled: invitationEnabledMap[id],
orgRolesLimit: orgRolesLimitMap[id],

View file

@ -31,11 +31,6 @@ export type SubscriptionPlanTable = Partial<
SubscriptionPlanQuota & {
// Base quota
basePrice: string;
/**
* Token limit
* Todo @xiaoyijun [Pricing] retrieve the token limit from the backend
*/
tokenLimit: Nullable<number>;
mauUnitPrice: string[];
// UI and branding
customCssEnabled: boolean;

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Unbegrenzte MAU',
not_eligible: 'Entferne alle Benutzer',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Anwendungen',
limited: '{{count, number}} Anwendung',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Unbegrenzte Rollen',
not_eligible: 'Entferne deine Rollen',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Berechtigungen pro Rolle',
limited: '{{count, number}} Berechtigung pro Rolle',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Benutzerverwaltung',
user_management: 'Benutzerverwaltung',
roles: 'Rollen',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Berechtigungen pro Rolle',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Unlimited MAU',
not_eligible: 'Remove your all users',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Applications',
limited: '{{count, number}} application',
@ -79,6 +91,13 @@ const quota_item = {
unlimited: 'Unlimited roles',
not_eligible: 'Remove your roles',
},
machine_to_machine_roles_limit: {
name: 'Machine to machine roles',
limited: '{{count, number}} machine to machine role',
limited_other: '{{count, number}} machine to machine roles',
unlimited: 'Unlimited machine to machine roles',
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Role permissions',
limited: '{{count, number}} permission per role',

View file

@ -41,6 +41,7 @@ const quota_table = {
title: 'User management',
user_management: 'User management',
roles: 'Roles',
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Permissions per role',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'UAM ilimitados',
not_eligible: 'Elimine a todos sus usuarios',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Aplicaciones',
limited: '{{count, number}} aplicación',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Roles ilimitados',
not_eligible: 'Elimine sus roles',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Permisos de roles',
limited: '{{count, number}} permiso por rol',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Gestión de usuarios',
user_management: 'Gestión de usuarios',
roles: 'Roles',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Permisos por rol',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Illimité MAU',
not_eligible: 'Supprimez tous vos utilisateurs',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Applications',
limited: '{{count, number}} application',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Illimité rôles',
not_eligible: 'Supprimez vos rôles',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Permissions de rôle',
limited: '{{count, number}} permission par rôle',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Gestion des utilisateurs',
user_management: 'Gestion des utilisateurs',
roles: 'Rôles',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Autorisations par rôle',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Utenti attivi mensili illimitati',
not_eligible: 'Rimuovi tutti i tuoi utenti',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Applicazioni',
limited: '{{count, number}} applicazione',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Ruoli illimitati',
not_eligible: 'Rimuovi i tuoi ruoli',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Permessi ruolo',
limited: '{{count, number}} permesso per ruolo',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Gestione utenti',
user_management: 'Gestione utenti',
roles: 'Ruoli',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Permessi per ruolo',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: '無制限のMAU',
not_eligible: '全てのユーザーを削除してください',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'アプリケーション',
limited: '{{count, number}} アプリケーション',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: '無制限のロール',
not_eligible: 'ロールを削除してください',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'ロールの権限',
limited: '{{count, number}} ロールごとの権限',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'ユーザー管理',
user_management: 'ユーザー管理',
roles: 'ロール',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'ロールごとの権限',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: '제한 없는 월간 활성 사용자',
not_eligible: '모든 사용자를 제거하십시오',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: '애플리케이션',
limited: '{{count, number}} 애플리케이션',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: '제한 없는 역할',
not_eligible: '역할을 제거하십시오',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: '역할 권한',
limited: '{{count, number}} 역할당 권한',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: '사용자 관리',
user_management: '사용자 관리',
roles: '역할',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: '역할 당 권한',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Nieograniczona liczba MAU',
not_eligible: 'Usuń wszystkich użytkowników',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Liczba aplikacji',
limited: '{{count, number}} aplikacja',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Nieograniczona liczba ról',
not_eligible: 'Usuń swoje role',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Uprawnienia roli',
limited: '{{count, number}} uprawnienie na rolę',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Zarządzanie użytkownikami',
user_management: 'Zarządzanie użytkownikami',
roles: 'Role',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Uprawnienia na rolę',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'UAM ilimitados',
not_eligible: 'Remova todos seus usuários',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Aplicações',
limited: '{{count, number}} aplicação',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Funções ilimitadas',
not_eligible: 'Remova suas funções',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Permissões de funções',
limited: '{{count, number}} permissão por função',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Gerenciamento de usuários',
user_management: 'Gerenciamento de usuários',
roles: 'Funções',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Permissões por função',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Utilizadores ativos mensais ilimitados',
not_eligible: 'Remover todos os utilizadores',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Aplicações',
limited: '{{count, number}} aplicação',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Funções ilimitadas',
not_eligible: 'Remover as tuas funções',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Permissões de função',
limited: '{{count, number}} permissão por função',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Gestão de utilizadores',
user_management: 'Gestão de utilizadores',
roles: 'Funções',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Permissões por função',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Неограниченное количество пользователей в месяц',
not_eligible: 'Удалите всех своих пользователей',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Приложения',
limited: '{{count, number}} приложение',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Неограниченное количество ролей',
not_eligible: 'Удалите свои роли',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Разрешения роли',
limited: '{{count, number}} разрешение на роль',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Управление пользователями',
user_management: 'Управление пользователями',
roles: 'Роли',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Разрешения на роль',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: 'Sınırsız MAU',
not_eligible: 'Tüm kullanıcılarınızı kaldırın',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: 'Uygulamalar',
limited: '{{count, number}} uygulama',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: 'Sınırsız roller',
not_eligible: 'Rollerinizi kaldırın',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: 'Rol izinleri',
limited: '{{count, number}} izin rol başına',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: 'Kullanıcı Yönetimi',
user_management: 'Kullanıcı Yönetimi',
roles: 'Roller',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: 'Rol başına izinler',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: '无限制 MAU',
not_eligible: '移除你的所有用户',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: '应用',
limited: '{{count, number}} 个应用',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: '无限制角色',
not_eligible: '移除你的角色',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: '角色权限',
limited: '{{count, number}} 个权限每个角色',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: '用户管理',
user_management: '用户管理',
roles: '角色',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: '每角色权限',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: '無限月活躍用戶',
not_eligible: '刪除您的所有用戶',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: '應用程式',
limited: '{{count, number}} 個應用程式',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: '無限角色',
not_eligible: '刪除您的角色',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: '角色權限',
limited: '{{count, number}} 個角色權限',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: '用戶管理',
user_management: '用戶管理',
roles: '角色',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: '每角色權限',
},
audit_logs: {

View file

@ -12,6 +12,18 @@ const quota_item = {
unlimited: '不限月活用戶數',
not_eligible: '移除您的所有用戶',
},
token_limit: {
/** UNTRANSLATED */
name: 'Tokens',
/** UNTRANSLATED */
limited: '{{count, number}} token',
/** UNTRANSLATED */
limited_other: '{{count, number}} tokens',
/** UNTRANSLATED */
unlimited: 'Unlimited tokens',
/** UNTRANSLATED */
not_eligible: 'Remove your all users to prevent new tokens',
},
applications_limit: {
name: '應用程式',
limited: '{{count, number}} 應用程式',
@ -79,6 +91,18 @@ const quota_item = {
unlimited: '不限角色數',
not_eligible: '移除您的角色',
},
machine_to_machine_roles_limit: {
/** UNTRANSLATED */
name: 'Machine to machine roles',
/** UNTRANSLATED */
limited: '{{count, number}} machine to machine role',
/** UNTRANSLATED */
limited_other: '{{count, number}} machine to machine roles',
/** UNTRANSLATED */
unlimited: 'Unlimited machine to machine roles',
/** UNTRANSLATED */
not_eligible: 'Remove your machine to machine roles',
},
scopes_per_role_limit: {
name: '角色權限',
limited: '{{count, number}} 權限每角色',

View file

@ -41,6 +41,8 @@ const quota_table = {
title: '使用者管理',
user_management: '使用者管理',
roles: '角色',
/** UNTRANSLATED */
machine_to_machine_roles: 'Machine-to-machine roles',
scopes_per_role: '每角色權限',
},
audit_logs: {

View file

@ -2840,8 +2840,8 @@ importers:
specifier: workspace:^1.3.1
version: link:../app-insights
'@logto/cloud':
specifier: 0.2.5-5a698db
version: 0.2.5-5a698db(zod@3.22.4)
specifier: 0.2.5-5deb133
version: 0.2.5-5deb133(zod@3.22.4)
'@logto/connector-kit':
specifier: workspace:^2.0.0
version: link:../toolkit/connector-kit
@ -7512,16 +7512,6 @@ packages:
jose: 5.0.1
dev: true
/@logto/cloud@0.2.5-5a698db(zod@3.22.4):
resolution: {integrity: sha512-khGNmCJgUBQCpIxsewsoeaPHDtR5FgX03SSAYfaPJATxvMS8j+B0BeGP6J2OTsH5iB86K6dJ4BJwKlB2cweY4g==}
engines: {node: ^18.12.0}
dependencies:
'@silverhand/essentials': 2.8.5
'@withtyped/server': 0.12.9(zod@3.22.4)
transitivePeerDependencies:
- zod
dev: true
/@logto/cloud@0.2.5-5deb133(zod@3.22.4):
resolution: {integrity: sha512-3itFraudBBc3bcS6qiBFHXQKoDYPFihxRu+L4HqDVEwTCBJfVVgGgD4F0fMpSpC+ouJY+VVdZGh7Yn9772B5fg==}
engines: {node: ^18.12.0}