0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-06 20:40:08 -05:00

refactor(console,phrases): improve org guide introduction diagram

This commit is contained in:
Charles Zhao 2023-11-02 13:58:26 +08:00
parent 9ed7be3f67
commit c724bcaecf
No known key found for this signature in database
GPG key ID: 3EBD576D8B273301
20 changed files with 1538 additions and 77 deletions

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,79 @@
@use '@/scss/underscore' as _;
.container,
.section {
width: 100%;
display: flex;
flex-direction: column;
}
.container {
gap: _.unit(6);
}
.section {
gap: _.unit(3);
}
.title {
font: var(--font-title-1);
}
.subtitle {
font: var(--font-title-2);
}
.description {
font: var(--font-body-2);
}
.panel {
border: 1px solid var(--color-on-info-container);
border-radius: 8px;
.header {
font: var(--font-title-2);
color: var(--color-white);
background: var(--color-on-info-container);
line-height: 36px;
text-align: center;
}
.body {
display: flex;
padding: _.unit(8);
gap: _.unit(5);
.cell {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: _.unit(2.5);
font-family: 'Roboto Mono', monospace;
min-height: 68px;
color: var(--color-text);
background: var(--color-surface-variant);
border-radius: 4px;
padding: _.unit(4) 0;
.cellTitle {
font: var(--font-title-2);
}
.items {
display: flex;
flex-direction: column;
align-items: center;
flex: 1;
gap: inherit;
font: var(--font-body-2);
}
}
}
}
.diagramText {
fill: var(--color-layer-1);
}

View file

@ -0,0 +1,83 @@
import { useTranslation } from 'react-i18next';
import Diagram from './Diagram';
import * as styles from './index.module.scss';
function Introduction() {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.organizations.guide' });
return (
<div className={styles.container}>
<div className={styles.section}>
<div className={styles.title}>{t('introduction.section_1.title')}</div>
<div className={styles.description}>{t('introduction.section_1.description')}</div>
</div>
<div className={styles.title}>{t('introduction.section_2.title')}</div>
<div className={styles.section}>
<div className={styles.subtitle}>{t('organization_permissions')}</div>
<div className={styles.description}>
{t('introduction.section_2.organization_permission_description')}
</div>
<div className={styles.panel}>
<div className={styles.header}>{t('organization_permissions')}</div>
<div className={styles.body}>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('read_resource')}</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('edit_resource')}</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('delete_resource')}</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('ellipsis')}</div>
</div>
</div>
</div>
</div>
<div className={styles.section}>
<div className={styles.subtitle}>{t('organization_roles')}</div>
<div className={styles.description}>
{t('introduction.section_2.organization_role_description')}
</div>
<div className={styles.panel}>
<div className={styles.header}>{t('organization_roles')}</div>
<div className={styles.body}>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('admin')}</div>
<div className={styles.items}>
<div>{t('read_resource')}</div>
<div>{t('edit_resource')}</div>
<div>{t('delete_resource')}</div>
</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('member')}</div>
<div className={styles.items}>
<div>{t('read_resource')}</div>
<div>{t('edit_resource')}</div>
</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('guest')}</div>
<div className={styles.items}>
<div>{t('read_resource')}</div>
</div>
</div>
<div className={styles.cell}>
<div className={styles.cellTitle}>{t('ellipsis')}</div>
</div>
</div>
</div>
</div>
<div className={styles.section}>
<div className={styles.title}>{t('introduction.section_3.title')}</div>
<div className={styles.description}>{t('introduction.section_3.description')}</div>
<Diagram />
</div>
</div>
);
}
export default Introduction;

View file

@ -9,7 +9,6 @@ import OrganizationFeatureDark from '@/assets/icons/organization-feature-dark.sv
import OrganizationFeature from '@/assets/icons/organization-feature.svg';
import PermissionFeatureDark from '@/assets/icons/permission-feature-dark.svg';
import PermissionFeature from '@/assets/icons/permission-feature.svg';
import workflowImage from '@/assets/images/organization-workflow.webp';
import ActionBar from '@/components/ActionBar';
import Button from '@/ds-components/Button';
import Card from '@/ds-components/Card';
@ -26,6 +25,8 @@ import DynamicFormFields from '../DynamicFormFields';
import { steps } from '../const';
import * as styles from '../index.module.scss';
import Introduction from './Introduction';
const icons = {
[Theme.Light]: { OrganizationIcon: OrganizationFeature, PermissionIcon: PermissionFeature },
[Theme.Dark]: {
@ -97,9 +98,7 @@ function CreatePermissions() {
<div className={classNames(styles.content)}>
<Card className={styles.card}>
<OrganizationIcon className={styles.icon} />
<div className={styles.title}>{t('brief_title')}</div>
<img className={styles.image} src={workflowImage} alt="Organization workflow" />
<div className={styles.description}>{t('brief_introduction')}</div>
<Introduction />
</Card>
<Card className={styles.card}>
<PermissionIcon className={styles.icon} />

View file

@ -27,6 +27,7 @@
flex-direction: column;
width: 100%;
max-width: dim.$guide-main-content-max-width;
min-width: dim.$guide-content-min-width;
padding: _.unit(12);
gap: _.unit(6);

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -28,9 +28,25 @@ const organization = {
guide: {
title: 'Start with guides',
subtitle: 'Jumpstart your app development process with our guides',
brief_title: "First, let's understand how organizations works in Logto",
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
title: "First, let's understand how organizations works in Logto",
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
title: 'Organization template consists of two parts',
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
title: 'Interact the illustration to see how everything connects',
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
step_1: 'Step 1: Define organization permissions',
step_2: 'Step 2: Define organization roles',
step_2_description:
@ -49,6 +65,26 @@ const organization = {
organization_roles: 'Organization roles',
role_name: 'Role name',
organization_name: 'Organization name',
admin: 'Admin',
admin_description:
'Role "Admin" share the same organization template across different organizations.',
member: 'Member',
member_description:
'Role "Member" share the same organization template across different organizations.',
guest: 'Guest',
guest_description:
'Role "Guest" share the same organization template across different organizations.',
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
read_resource: 'read:resource',
edit_resource: 'edit:resource',
delete_resource: 'delete:resource',
ellipsis: '……',
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};

View file

@ -52,11 +52,32 @@ const organizations = {
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
introduction: {
section_1: {
/** UNTRANSLATED */
title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
description:
'In multi-tenant SaaS apps, we often make several organizations with the same set of permissions and roles, but within the context of an organization it can play an important part in controlling varying levels of access. Think of each tenant is like a Logto organization, and they naturally share the same access control “template”. We call this the "organization template."',
},
section_2: {
/** UNTRANSLATED */
title: 'Organization template consists of two parts',
/** UNTRANSLATED */
organization_permission_description:
'Organization permission refers to the authorization to access a resource in the context of organization. An organization permission should be represented as a meaningful string, also serving as the name and unique identifier.',
/** UNTRANSLATED */
organization_role_description:
'Organization role is a grouping of permissions that can be assigned to users. The permissions must come from the predefined organization permissions.',
},
section_3: {
/** UNTRANSLATED */
title: 'Interact the illustration to see how everything connects',
/** UNTRANSLATED */
description:
"Let's take an example. John, Sarah and Tony are in different organizations with different roles in the context of different organizations. Hover over the different modules and see what happens.",
},
},
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
@ -91,6 +112,40 @@ const organizations = {
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
/** UNTRANSLATED */
admin: 'Admin',
/** UNTRANSLATED */
admin_description:
'Role "Admin" share the same organization template across different organizations.',
/** UNTRANSLATED */
member: 'Member',
/** UNTRANSLATED */
member_description:
'Role "Member" share the same organization template across different organizations.',
/** UNTRANSLATED */
guest: 'Guest',
/** UNTRANSLATED */
guest_description:
'Role "Guest" share the same organization template across different organizations.',
/** UNTRANSLATED */
create_more_roles:
'You can create more roles in the organization template settings. Those organization roles will apply to different organizations.',
/** UNTRANSLATED */
read_resource: 'read:resource',
/** UNTRANSLATED */
edit_resource: 'edit:resource',
/** UNTRANSLATED */
delete_resource: 'delete:resource',
/** UNTRANSLATED */
ellipsis: '……',
/** UNTRANSLATED */
johnny:
'Johny belongs to two organization with the email "john@email.com" as the single identifier. He is the admin of organization A as well as guest of organization B.',
/** UNTRANSLATED */
sarah:
'Sarah belongs to one organization with the email "sarah@email.com" as the single identifier. She is the admin of organization B.',
/** UNTRANSLATED */
tony: 'Tony belongs to one organization with the email "tony@email.com" as the single identifier. He is the member of organization C.',
},
};