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:
parent
b5bc374f2b
commit
6b2e1c8908
38 changed files with 402 additions and 27 deletions
|
@ -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",
|
||||
|
|
|
@ -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]: [
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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} />
|
||||
),
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} ロールごとの権限',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} 역할당 권한',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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ę',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} разрешение на роль',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} 个权限每个角色',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} 個角色權限',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}} 權限每角色',
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in a new issue