mirror of
https://github.com/logto-io/logto.git
synced 2024-12-16 20:26:19 -05:00
chore: use sentence case
This commit is contained in:
parent
52d8e3ad37
commit
0554ee9847
49 changed files with 135 additions and 135 deletions
|
@ -29,7 +29,7 @@ Senders indicate the addresses our verification code email will be sent from. In
|
|||
|
||||
Starting from the [SendGrid console page](https://app.sendgrid.com/), go to "Settings" -> "Sender Authentication" from the sidebar.
|
||||
|
||||
Domain Authentication is recommended but not obligatory. You can click "Get Started" in "Authenticate Your Domain" card and follow the upcoming guide to link and verify a sender to SendGrid.
|
||||
Domain Authentication is recommended but not obligatory. You can click "Get started" in "Authenticate Your Domain" card and follow the upcoming guide to link and verify a sender to SendGrid.
|
||||
|
||||
By clicking the "Verify a Single Sender" button in the panel, you are now focusing on a form requiring some critical information to create a sender. Follow the guide, fill out all these fields, and hit the "Create" button.
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ export const defaultMetadata: ConnectorMetadata = {
|
|||
contentType: 'text/plain',
|
||||
content:
|
||||
'Your Logto sign-up verification code is {{code}}. The code will remain active for 10 minutes.',
|
||||
subject: 'Logto Register with SMTP',
|
||||
subject: 'Logto register with SMTP',
|
||||
usageType: 'Register',
|
||||
},
|
||||
{
|
||||
|
|
|
@ -44,7 +44,7 @@ describe('SMTP connector', () => {
|
|||
|
||||
expect(sendMail).toHaveBeenCalledWith({
|
||||
from: '<notice@test.smtp>',
|
||||
subject: 'Logto Register with SMTP',
|
||||
subject: 'Logto register with SMTP',
|
||||
text: 'This is for register purposes only. Your verification code is 123456.',
|
||||
to: 'foo',
|
||||
});
|
||||
|
@ -60,7 +60,7 @@ describe('SMTP connector', () => {
|
|||
|
||||
expect(sendMail).toHaveBeenCalledWith({
|
||||
from: '<notice@test.smtp>',
|
||||
subject: 'Logto Sign-In with SMTP 234567',
|
||||
subject: 'Logto sign-in with SMTP 234567',
|
||||
text: 'This is for sign-in purposes only. Your verification code is 234567.',
|
||||
to: 'bar',
|
||||
});
|
||||
|
|
|
@ -13,13 +13,13 @@ export const mockedConfig = {
|
|||
{
|
||||
contentType: 'text/plain',
|
||||
content: 'This is for sign-in purposes only. Your verification code is {{ code }}.',
|
||||
subject: 'Logto Sign-In with SMTP {{ code }}',
|
||||
subject: 'Logto sign-in with SMTP {{ code }}',
|
||||
usageType: 'SignIn',
|
||||
},
|
||||
{
|
||||
contentType: 'text/plain',
|
||||
content: 'This is for register purposes only. Your verification code is {{code}}.',
|
||||
subject: 'Logto Register with SMTP',
|
||||
subject: 'Logto register with SMTP',
|
||||
usageType: 'Register',
|
||||
},
|
||||
{
|
||||
|
|
|
@ -29,7 +29,7 @@ Get your app ID and app secret.
|
|||
|
||||
### Find the API identifier
|
||||
|
||||
In the "API Resource" page, find the API identifier that the app needs to access. If you haven't added an API Resource in Logto or don't know what API Resource is, see [API Resource](https://docs.logto.io/docs/references/resources).
|
||||
In the "API resources" page, find the API identifier that the app needs to access. If you haven't added an API resource in Logto or don't know what API resource is, see [API resource](https://docs.logto.io/docs/references/resources).
|
||||
|
||||
<img alt="API identifier" src={AppIdentifierSrc} width="600px" style={{ borderRadius: '6px' }} />
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ Ensure that the URI redirects to the Capacitor app, for example, `com.example.ap
|
|||
|
||||
<UriInputField name="redirectUris" />
|
||||
|
||||
Remember to click on **Save Changes** after updating the redirect URI. Then, add the following code to the `onClick` handler of the sign-in button:
|
||||
Remember to click on **Save changes** after updating the redirect URI. Then, add the following code to the `onClick` handler of the sign-in button:
|
||||
|
||||
<pre>
|
||||
<code className="language-ts">
|
||||
|
|
|
@ -162,7 +162,7 @@ void init() async {
|
|||
In the following steps, we assume your app has configured using `io.logo` as your schema .
|
||||
</InlineNotification>
|
||||
|
||||
Let's switch to the Application details page of Logto Admin Console. Add a Redirect URI `io.logto://callback` and click "Save Changes".
|
||||
Let's switch to the Application details page of Logto Admin Console. Add a Redirect URI `io.logto://callback` and click "Save changes".
|
||||
|
||||
<UriInputField name="redirectUris" />
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
The core backend service.
|
||||
|
||||
## Get Started
|
||||
## Get started
|
||||
|
||||
Copy proper `.env` to project root. (TBD: design the config process)
|
||||
|
||||
|
@ -10,7 +10,7 @@ Copy proper `.env` to project root. (TBD: design the config process)
|
|||
pnpm i && pnpm dev
|
||||
```
|
||||
|
||||
## OpenAPI Doc
|
||||
## OpenAPI documentation
|
||||
|
||||
OpenAPI (Swagger) json is available on `http(s)://your-domain/api/swagger.json`. If you are running locally, the default URL will be `http://localhost:3001/api/swagger.json`. Consume it in the way you like.
|
||||
|
||||
|
@ -22,6 +22,6 @@ The doc website can be served by [redoc-cli](https://github.com/Redocly/redoc/bl
|
|||
npx redoc-cli serve http://localhost:3001/api/swagger.json
|
||||
```
|
||||
|
||||
### Using Swagger Editor
|
||||
### Using Swagger editor
|
||||
|
||||
Copy the API output and paste it in the [Swagger Editor](https://editor.swagger.io/).
|
||||
|
|
|
@ -98,7 +98,7 @@ const verifySocialVerifiedIdentifier = async (
|
|||
|
||||
const { connectorId } = payload;
|
||||
|
||||
// Sign-In with social verified email or phone requires a social identifier in the interaction result
|
||||
// Sign-in with social verified email or phone requires a social identifier in the interaction result
|
||||
const socialIdentifierRecord = interactionRecord?.identifiers?.find(
|
||||
(entity): entity is SocialIdentifier =>
|
||||
entity.key === 'social' && entity.connectorId === connectorId
|
||||
|
@ -166,7 +166,7 @@ async function identifierPayloadVerification(
|
|||
return verifySocialIdentifier(identifierPayload, ctx, tenant);
|
||||
}
|
||||
|
||||
// Sign-In with social verified email or phone
|
||||
// Sign-in with social verified email or phone
|
||||
return verifySocialVerifiedIdentifier(identifierPayload, ctx, interactionStorage);
|
||||
}
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ const useSocialSignInListener = (connectorId?: string) => {
|
|||
[asyncSignInWithSocial, handleError, signInWithSocialErrorHandlers]
|
||||
);
|
||||
|
||||
// Social Sign-In Callback Handler
|
||||
// Social Sign-in Callback Handler
|
||||
useEffect(() => {
|
||||
if (!connectorId) {
|
||||
return;
|
||||
|
|
|
@ -27,7 +27,7 @@ const SignInPassword = () => {
|
|||
|
||||
const methodSetting = signInMethods.find((method) => method.identifier === identifier);
|
||||
|
||||
// Sign-In method not enabled
|
||||
// Sign-in method not enabled
|
||||
if (!methodSetting?.password) {
|
||||
return <ErrorPage />;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ export const expectToChooseAndClickApplicationFramework = async (page: Page, fra
|
|||
}
|
||||
);
|
||||
|
||||
await expect(frameworkCard).toClick('button span', { text: 'Start Building' });
|
||||
await expect(frameworkCard).toClick('button span', { text: 'Start building' });
|
||||
};
|
||||
|
||||
export const expectFrameworkExists = async (page: Page, framework: string) => {
|
||||
|
@ -47,13 +47,13 @@ export const expectToProceedApplicationCreationFrom = async (
|
|||
{ name, description }: { name: string; description: string }
|
||||
) => {
|
||||
// Expect the creation form to be open
|
||||
await expectModalWithTitle(page, 'Create Application');
|
||||
await expectModalWithTitle(page, 'Create application');
|
||||
|
||||
await expect(page).toFillForm('.ReactModalPortal form', {
|
||||
name,
|
||||
description,
|
||||
});
|
||||
await expectToClickModalAction(page, 'Create Application');
|
||||
await expectToClickModalAction(page, 'Create application');
|
||||
|
||||
await waitForToast(page, { text: 'Application created successfully.' });
|
||||
};
|
||||
|
|
|
@ -68,7 +68,7 @@ describe('applications', () => {
|
|||
// Back to application list page
|
||||
await expectNavigation(
|
||||
expect(page).toClick('div[class$=main] a[class$=backLink]', {
|
||||
text: 'Back to Applications',
|
||||
text: 'Back to applications',
|
||||
})
|
||||
);
|
||||
|
||||
|
@ -88,7 +88,7 @@ describe('applications', () => {
|
|||
|
||||
it('can open the logto github repo issue page when click on the framework not found button', async () => {
|
||||
await expect(page).toClick('div[class$=main] div[class$=headline] button span', {
|
||||
text: 'Create Application',
|
||||
text: 'Create application',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Start with SDK and guides');
|
||||
|
@ -110,7 +110,7 @@ describe('applications', () => {
|
|||
|
||||
it('can create an application by framework from the app creation modal and modify its data', async () => {
|
||||
await expect(page).toClick('div[class$=main] div[class$=headline] button span', {
|
||||
text: 'Create Application',
|
||||
text: 'Create application',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Start with SDK and guides');
|
||||
|
@ -138,7 +138,7 @@ describe('applications', () => {
|
|||
});
|
||||
|
||||
// Check guide
|
||||
await expect(page).toClick('div[class$=header] button span', { text: 'Check Guide' });
|
||||
await expect(page).toClick('div[class$=header] button span', { text: 'Check guide' });
|
||||
|
||||
// Wait for the guide drawer to be ready
|
||||
await page.waitForTimeout(500);
|
||||
|
@ -223,14 +223,14 @@ describe('applications', () => {
|
|||
'can create and modify a(n) $type application without framework',
|
||||
async (app: ApplicationMetadata) => {
|
||||
await expect(page).toClick('div[class$=main] div[class$=headline] button span', {
|
||||
text: 'Create Application',
|
||||
text: 'Create application',
|
||||
});
|
||||
|
||||
await expect(page).toClick('.ReactModalPortal nav[class$=actionBar] button span', {
|
||||
text: 'Create app without framework',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create Application');
|
||||
await expectModalWithTitle(page, 'Create application');
|
||||
|
||||
await expect(page).toClick(`div[class*=radio][role=radio]:has(input[value=${app.type}])`);
|
||||
|
||||
|
@ -238,7 +238,7 @@ describe('applications', () => {
|
|||
name: app.name,
|
||||
description: app.description,
|
||||
});
|
||||
await expectToClickModalAction(page, 'Create Application');
|
||||
await expectToClickModalAction(page, 'Create application');
|
||||
|
||||
await waitForToast(page, { text: 'Application created successfully.' });
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ describe('passwordless connectors', () => {
|
|||
);
|
||||
|
||||
const setupConnectorButton = await expect(connectorItem).toMatchElement('button span', {
|
||||
text: 'Set Up',
|
||||
text: 'Set up',
|
||||
});
|
||||
|
||||
await setupConnectorButton.click();
|
||||
|
|
|
@ -51,14 +51,14 @@ describe('M2M RBAC', () => {
|
|||
await expect(page).toMatchElement(
|
||||
'div[class$=main] div[class$=headline] div[class$=titleEllipsis]',
|
||||
{
|
||||
text: 'API Resources',
|
||||
text: 'API resources',
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('create an api resource', async () => {
|
||||
await expect(page).toClick('div[class$=headline] button span', {
|
||||
text: 'Create API Resource',
|
||||
text: 'Create API resource',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Start with tutorials');
|
||||
|
@ -68,14 +68,14 @@ describe('M2M RBAC', () => {
|
|||
text: 'Continue without tutorial',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create API Resource');
|
||||
await expectModalWithTitle(page, 'Create API resource');
|
||||
|
||||
await expect(page).toFillForm('.ReactModalPortal form', {
|
||||
name: apiResourceName,
|
||||
indicator: apiResourceIndicator,
|
||||
});
|
||||
|
||||
await expectToClickModalAction(page, 'Create API Resource');
|
||||
await expectToClickModalAction(page, 'Create API resource');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: `The API resource ${apiResourceName} has been successfully created`,
|
||||
|
@ -92,7 +92,7 @@ describe('M2M RBAC', () => {
|
|||
});
|
||||
|
||||
await expect(page).toClick('div[class$=filter] button[class$=createButton] span', {
|
||||
text: 'Create Permission',
|
||||
text: 'Create permission',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create permission');
|
||||
|
@ -181,7 +181,7 @@ describe('M2M RBAC', () => {
|
|||
|
||||
it('assign a permission to a role on the role details page', async () => {
|
||||
await expect(page).toClick('div[class$=filter] button span', {
|
||||
text: 'Assign Permissions',
|
||||
text: 'Assign permissions',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Assign permissions');
|
||||
|
@ -200,7 +200,7 @@ describe('M2M RBAC', () => {
|
|||
}
|
||||
);
|
||||
|
||||
await expectToClickModalAction(page, 'Assign Permissions');
|
||||
await expectToClickModalAction(page, 'Assign permissions');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: 'The selected permissions were successfully assigned to this role',
|
||||
|
|
|
@ -12,10 +12,10 @@ export const createM2mRoleAndAssignPermissions = async (
|
|||
apiResources: Array<{ apiResourceName: string; permissionName: string }>
|
||||
) => {
|
||||
await expect(page).toClick('div[class$=headline] button span', {
|
||||
text: 'Create Role',
|
||||
text: 'Create role',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create Role');
|
||||
await expectModalWithTitle(page, 'Create role');
|
||||
|
||||
// Expand role type selection
|
||||
await expect(page).toClick('button[class$=roleTypeSelectionSwitch] span', {
|
||||
|
@ -51,7 +51,7 @@ export const createM2mRoleAndAssignPermissions = async (
|
|||
}
|
||||
/* eslint-enable no-await-in-loop */
|
||||
|
||||
await expectToClickModalAction(page, 'Create Role');
|
||||
await expectToClickModalAction(page, 'Create role');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: `The role ${roleName} has been successfully created.`,
|
||||
|
|
|
@ -41,14 +41,14 @@ describe('RBAC', () => {
|
|||
await expect(page).toMatchElement(
|
||||
'div[class$=main] div[class$=headline] div[class$=titleEllipsis]',
|
||||
{
|
||||
text: 'API Resources',
|
||||
text: 'API resources',
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('create an api resource', async () => {
|
||||
await expect(page).toClick('div[class$=headline] button span', {
|
||||
text: 'Create API Resource',
|
||||
text: 'Create API resource',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Start with tutorials');
|
||||
|
@ -58,14 +58,14 @@ describe('RBAC', () => {
|
|||
text: 'Continue without tutorial',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create API Resource');
|
||||
await expectModalWithTitle(page, 'Create API resource');
|
||||
|
||||
await expect(page).toFillForm('.ReactModalPortal form', {
|
||||
name: apiResourceName,
|
||||
indicator: apiResourceIndicator,
|
||||
});
|
||||
|
||||
await expectToClickModalAction(page, 'Create API Resource');
|
||||
await expectToClickModalAction(page, 'Create API resource');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: `The API resource ${apiResourceName} has been successfully created`,
|
||||
|
@ -82,7 +82,7 @@ describe('RBAC', () => {
|
|||
});
|
||||
|
||||
await expect(page).toClick('div[class$=filter] button[class$=createButton] span', {
|
||||
text: 'Create Permission',
|
||||
text: 'Create permission',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create permission');
|
||||
|
@ -108,21 +108,21 @@ describe('RBAC', () => {
|
|||
await expect(page).toMatchElement(
|
||||
'div[class$=main] div[class$=headline] div[class$=titleEllipsis]',
|
||||
{
|
||||
text: 'User Management',
|
||||
text: 'User management',
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('create a user for rbac testing', async () => {
|
||||
await expect(page).toClick('div[class$=headline] button span', { text: 'Add User' });
|
||||
await expect(page).toClick('div[class$=headline] button span', { text: 'Add user' });
|
||||
|
||||
await expectModalWithTitle(page, 'Add User');
|
||||
await expectModalWithTitle(page, 'Add user');
|
||||
|
||||
await expect(page).toFillForm('.ReactModalPortal form', {
|
||||
username: rbacTestUsername,
|
||||
});
|
||||
|
||||
await expectToClickModalAction(page, 'Add User');
|
||||
await expectToClickModalAction(page, 'Add user');
|
||||
|
||||
await expectModalWithTitle(page, 'This user has been successfully created');
|
||||
|
||||
|
@ -142,10 +142,10 @@ describe('RBAC', () => {
|
|||
|
||||
it('create a role and assign permissions to the role', async () => {
|
||||
await expect(page).toClick('div[class$=headline] button span', {
|
||||
text: 'Create Role',
|
||||
text: 'Create role',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Create Role');
|
||||
await expectModalWithTitle(page, 'Create role');
|
||||
|
||||
await expect(page).toFillForm('.ReactModalPortal form', {
|
||||
name: roleName,
|
||||
|
@ -164,7 +164,7 @@ describe('RBAC', () => {
|
|||
}
|
||||
);
|
||||
|
||||
await expectToClickModalAction(page, 'Create Role');
|
||||
await expectToClickModalAction(page, 'Create role');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: `The role ${roleName} has been successfully created.`,
|
||||
|
@ -200,7 +200,7 @@ describe('RBAC', () => {
|
|||
|
||||
it('assign a permission to a role on the role details page', async () => {
|
||||
await expect(page).toClick('div[class$=filter] button span', {
|
||||
text: 'Assign Permissions',
|
||||
text: 'Assign permissions',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Assign permissions');
|
||||
|
@ -216,7 +216,7 @@ describe('RBAC', () => {
|
|||
}
|
||||
);
|
||||
|
||||
await expectToClickModalAction(page, 'Assign Permissions');
|
||||
await expectToClickModalAction(page, 'Assign permissions');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: 'The selected permissions were successfully assigned to this role',
|
||||
|
@ -233,7 +233,7 @@ describe('RBAC', () => {
|
|||
});
|
||||
|
||||
await expect(page).toClick('div[class$=filter] button span', {
|
||||
text: 'Assign Users',
|
||||
text: 'Assign users',
|
||||
});
|
||||
|
||||
await expectModalWithTitle(page, 'Assign users');
|
||||
|
@ -362,7 +362,7 @@ describe('RBAC', () => {
|
|||
await expect(page).toMatchElement(
|
||||
'div[class$=main] div[class$=headline] div[class$=titleEllipsis]',
|
||||
{
|
||||
text: 'API Resources',
|
||||
text: 'API resources',
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -400,7 +400,7 @@ describe('RBAC', () => {
|
|||
await expectToClickModalAction(page, 'Delete');
|
||||
|
||||
await waitForToast(page, {
|
||||
text: `The API Resource ${apiResourceName} has been successfully deleted`,
|
||||
text: `The API resource ${apiResourceName} has been successfully deleted`,
|
||||
});
|
||||
|
||||
expect(page.url()).toBe(new URL(`console/api-resources`, logtoConsoleUrl).href);
|
||||
|
|
|
@ -30,7 +30,7 @@ describe('sign-in experience: branding', () => {
|
|||
|
||||
// Start & finish guide
|
||||
await expect(page).toClick('div[class$=container] div[class$=content] button span', {
|
||||
text: 'Get Started',
|
||||
text: 'Get started',
|
||||
});
|
||||
|
||||
await expect(page).toClick(
|
||||
|
|
|
@ -71,7 +71,7 @@ export const expectToSetupPasswordlessConnector = async (
|
|||
);
|
||||
|
||||
const setupConnectorButton = await expect(connectorItem).toMatchElement('button span', {
|
||||
text: 'Set Up',
|
||||
text: 'Set up',
|
||||
});
|
||||
|
||||
await setupConnectorButton.click();
|
||||
|
|
|
@ -63,7 +63,7 @@ describe('sign-in experience(happy path): sign-up and sign-in', () => {
|
|||
});
|
||||
|
||||
it('navigate to sign-up and sign-in tab', async () => {
|
||||
await expectToClickNavTab(page, 'Sign-up and Sign-in');
|
||||
await expectToClickNavTab(page, 'Sign-up and sign-in');
|
||||
|
||||
await waitForFormCard(page, 'SIGN UP');
|
||||
await waitForFormCard(page, 'SIGN IN');
|
||||
|
|
|
@ -42,7 +42,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
});
|
||||
|
||||
it('navigate to sign-up and sign-in tab', async () => {
|
||||
await expectToClickNavTab(page, 'Sign-up and Sign-in');
|
||||
await expectToClickNavTab(page, 'Sign-up and sign-in');
|
||||
|
||||
await waitForFormCard(page, 'SIGN UP');
|
||||
await waitForFormCard(page, 'SIGN IN');
|
||||
|
@ -70,7 +70,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
await expectSignUpIdentifierSelectorError(page);
|
||||
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
});
|
||||
|
@ -86,7 +86,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Phone number');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '2 errors',
|
||||
});
|
||||
|
||||
|
@ -100,7 +100,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Phone number');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '2 errors',
|
||||
});
|
||||
});
|
||||
|
@ -126,7 +126,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
await expectSignUpIdentifierSelectorError(page);
|
||||
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
});
|
||||
|
@ -142,7 +142,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Email address');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '2 errors',
|
||||
});
|
||||
|
||||
|
@ -156,7 +156,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Email address');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '2 errors',
|
||||
});
|
||||
});
|
||||
|
@ -217,7 +217,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Phone number');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
|
||||
|
@ -231,7 +231,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Phone number');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
});
|
||||
|
@ -282,7 +282,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Email address');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
|
||||
|
@ -296,7 +296,7 @@ describe('sign-in experience(sad path): sign-up and sign-in', () => {
|
|||
|
||||
await expectSignInMethodError(page, 'Email address');
|
||||
await expectErrorsOnNavTab(page, {
|
||||
tab: 'Sign-up and Sign-in',
|
||||
tab: 'Sign-up and sign-in',
|
||||
error: '1 errors',
|
||||
});
|
||||
});
|
||||
|
|
|
@ -32,7 +32,7 @@ describe('user management', () => {
|
|||
await expect(page).toMatchElement(
|
||||
'div[class$=main] div[class$=headline] div[class$=titleEllipsis]',
|
||||
{
|
||||
text: 'User Management',
|
||||
text: 'User management',
|
||||
}
|
||||
);
|
||||
});
|
||||
|
|
|
@ -49,13 +49,13 @@ export const expectUnsavedChangesAlert = async (page: Page) => {
|
|||
'.ReactModalPortal div[class$=content]::-p-text(You have made some changes. Are you sure you want to leave this page?)'
|
||||
);
|
||||
|
||||
await expectToClickModalAction(page, 'Stay on Page');
|
||||
await expectToClickModalAction(page, 'Stay on page');
|
||||
};
|
||||
|
||||
export const expectToSaveChanges = async (page: Page) => {
|
||||
// Wait for the action bar to finish animating
|
||||
await waitFor(500);
|
||||
await expect(page).toClick('div[class$=actionBar] button span', { text: 'Save Changes' });
|
||||
await expect(page).toClick('div[class$=actionBar] button span', { text: 'Save changes' });
|
||||
};
|
||||
|
||||
export const expectToDiscardChanges = async (page: Page) => {
|
||||
|
|
|
@ -24,7 +24,7 @@ const connectors = {
|
|||
},
|
||||
placeholder_title: 'Social connector',
|
||||
placeholder_description:
|
||||
'Logto hat viele weit verbreitete Social-Sign-in-Connectors bereitgestellt. Inzwischen können Sie mit Standardprotokollen Ihre eigenen erstellen.',
|
||||
'Logto hat viele weit verbreitete Social-Sign-In-Connectors bereitgestellt. Inzwischen können Sie mit Standardprotokollen Ihre eigenen erstellen.',
|
||||
save_and_done: 'Speichern und fertigstellen',
|
||||
type: {
|
||||
email: 'E-Mail Connector',
|
||||
|
@ -41,15 +41,15 @@ const connectors = {
|
|||
general_setting: 'Allgemeine Einstellungen',
|
||||
parameter_configuration: 'Parameterkonfiguration',
|
||||
test_connection: 'Verbindungstest',
|
||||
name: 'Name für Social-Sign-in-Button',
|
||||
name_placeholder: 'Geben Sie den Namen für den Social-Sign-in-Button ein',
|
||||
name: 'Name für Social-Sign-In-Button',
|
||||
name_placeholder: 'Geben Sie den Namen für den Social-Sign-In-Button ein',
|
||||
name_tip:
|
||||
'Der Name des Connector-Buttons wird als "Weiter mit {{name}}" angezeigt. Achten Sie darauf, dass der Name nicht zu lang wird.',
|
||||
logo: 'Logo-URL für Social-Sign-in-Button',
|
||||
logo: 'Logo-URL für Social-Sign-In-Button',
|
||||
logo_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
logo_tip:
|
||||
'Das Logobild wird auf dem Connector angezeigt. Holen Sie sich einen öffentlich zugänglichen Bildlink und fügen Sie den Link hier ein.',
|
||||
logo_dark: 'Logo-URL für Social-Sign-in-Button (Dark mode)',
|
||||
logo_dark: 'Logo-URL für Social-Sign-In-Button (Dark mode)',
|
||||
logo_dark_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
logo_dark_tip:
|
||||
'Legen Sie das Logo Ihres Connectors für den Dark-Modus fest, nachdem Sie ihn in der Anmeldeerfahrung der Admin Console aktiviert haben.',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const guide = {
|
||||
start_building: 'Start Building',
|
||||
start_building: 'Start building',
|
||||
get_started: 'Beginnen Sie',
|
||||
categories: {
|
||||
featured: 'Beliebt und für dich',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const log_details = {
|
||||
page_title: 'Audit Log Details',
|
||||
back_to_logs: 'Zurück zu Audit Logs',
|
||||
back_to_logs: 'Zurück zu audit logs',
|
||||
back_to: 'Zurück zu {{name}}',
|
||||
success: 'Erfolgreich',
|
||||
failed: 'Fehlgeschlagen',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const logs = {
|
||||
page_title: 'Audit Logs',
|
||||
title: 'Audit Logs',
|
||||
page_title: 'Audit logs',
|
||||
title: 'Audit logs',
|
||||
subtitle:
|
||||
'Anzeige der Log Daten von Authentifizierungsereignissen, die von Admins und Benutzern stammen',
|
||||
event: 'Event',
|
||||
|
|
|
@ -9,7 +9,7 @@ const tabs = {
|
|||
/** UNTRANSLATED */
|
||||
organizations: 'Organizations',
|
||||
users: 'Benutzerverwaltung',
|
||||
audit_logs: 'Audit Logs',
|
||||
audit_logs: 'Audit logs',
|
||||
roles: 'Rollen',
|
||||
docs: 'Dokumentation',
|
||||
tenant_settings: 'Einstellungen',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const api_resource_details = {
|
||||
page_title: 'API Resource details',
|
||||
page_title: 'API resource details',
|
||||
back_to_api_resources: 'Back to API resources',
|
||||
settings_tab: 'Settings',
|
||||
permissions_tab: 'Permissions',
|
||||
|
@ -15,9 +15,9 @@ const api_resource_details = {
|
|||
delete_description:
|
||||
'This action cannot be undone. It will permanently delete the API resource. Please enter the api resource name <span>{{name}}</span> to confirm.',
|
||||
enter_your_api_resource_name: 'Enter your API resource name',
|
||||
api_resource_deleted: 'The API Resource {{name}} has been successfully deleted',
|
||||
api_resource_deleted: 'The API resource {{name}} has been successfully deleted',
|
||||
permission: {
|
||||
create_button: 'Create Permission',
|
||||
create_button: 'Create permission',
|
||||
create_title: 'Create permission',
|
||||
create_subtitle: 'Define the permissions (scopes) needed by this API.',
|
||||
confirm_create: 'Create permission',
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
const api_resources = {
|
||||
page_title: 'API Resources',
|
||||
title: 'API Resources',
|
||||
page_title: 'API resources',
|
||||
title: 'API resources',
|
||||
subtitle: 'Define APIs that your authorized applications can utilize',
|
||||
create: 'Create API Resource',
|
||||
create: 'Create API resource',
|
||||
api_name: 'API name',
|
||||
api_name_placeholder: 'Enter your API name',
|
||||
api_identifier: 'API Identifier',
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const application_details = {
|
||||
page_title: 'Application details',
|
||||
back_to_applications: 'Back to Applications',
|
||||
check_guide: 'Check Guide',
|
||||
back_to_applications: 'Back to applications',
|
||||
check_guide: 'Check guide',
|
||||
settings: 'Settings',
|
||||
settings_description:
|
||||
'Applications are used to identify your applications in Logto for OIDC, sign-in experience, audit logs, etc.',
|
||||
|
|
|
@ -4,7 +4,7 @@ const applications = {
|
|||
subtitle:
|
||||
'Set up Logto authentication for your native, single page, machine to machine, or traditional application',
|
||||
subtitle_with_app_type: 'Set up Logto authentication for your {{name}} application',
|
||||
create: 'Create Application',
|
||||
create: 'Create application',
|
||||
application_name: 'Application name',
|
||||
application_name_placeholder: 'My App',
|
||||
application_description: 'Application description',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const connector_details = {
|
||||
page_title: 'Connector details',
|
||||
back_to_connectors: 'Back to Connectors',
|
||||
back_to_connectors: 'Back to connectors',
|
||||
check_readme: 'Check README',
|
||||
settings: 'General settings',
|
||||
settings_description:
|
||||
|
|
|
@ -51,7 +51,7 @@ const connectors = {
|
|||
logo_dark: 'Logo URL for social sign-in button (Dark mode)',
|
||||
logo_dark_placeholder: 'https://your.cdn.domain/logo.png',
|
||||
logo_dark_tip:
|
||||
'Set your connector’s logo for dark mode after enabling it in the Sign-in Experience of Admin Console.',
|
||||
'Set your connector’s logo for dark mode after enabling it in the sign-in experience.',
|
||||
logo_dark_collapse: 'Collapse',
|
||||
logo_dark_show: 'Show logo setting for dark mode',
|
||||
target: 'Identity provider name',
|
||||
|
|
|
@ -4,13 +4,13 @@ const general = {
|
|||
skip: 'Skip',
|
||||
next: 'Next',
|
||||
back: 'Back',
|
||||
retry: 'Try Again',
|
||||
retry: 'Try again',
|
||||
done: 'Done',
|
||||
search: 'Search',
|
||||
search_placeholder: 'Search',
|
||||
clear_result: 'Clear Results',
|
||||
clear_result: 'Clear results',
|
||||
save: 'Save',
|
||||
save_changes: 'Save Changes',
|
||||
save_changes: 'Save changes',
|
||||
saved: 'Saved',
|
||||
discard: 'Discard',
|
||||
loading: 'Loading...',
|
||||
|
@ -19,9 +19,9 @@ const general = {
|
|||
added: 'Added',
|
||||
cancel: 'Cancel',
|
||||
confirm: 'Confirm',
|
||||
check_out: 'Check Out',
|
||||
check_out: 'Check out',
|
||||
create: 'Create',
|
||||
set_up: 'Set Up',
|
||||
set_up: 'Set up',
|
||||
customize: 'Customize',
|
||||
enable: 'Enable',
|
||||
reminder: 'Reminder',
|
||||
|
@ -37,8 +37,8 @@ const general = {
|
|||
deletion_confirmation: 'Are you sure you want to delete this {{title}}?',
|
||||
settings_nav: 'Settings',
|
||||
unsaved_changes_warning: 'You have made some changes. Are you sure you want to leave this page?',
|
||||
leave_page: 'Leave Page',
|
||||
stay_on_page: 'Stay on Page',
|
||||
leave_page: 'Leave page',
|
||||
stay_on_page: 'Stay on page',
|
||||
type_to_search: 'Type to search',
|
||||
got_it: 'Got it',
|
||||
continue: 'Continue',
|
||||
|
@ -49,7 +49,7 @@ const general = {
|
|||
remove: 'Remove',
|
||||
visit: 'Visit',
|
||||
join: 'Join',
|
||||
try_now: 'Try Now',
|
||||
try_now: 'Try now',
|
||||
multiple_form_field: '(Multiple)',
|
||||
demo: 'Demo',
|
||||
unnamed: 'Unnamed',
|
||||
|
@ -57,7 +57,7 @@ const general = {
|
|||
hide: 'Hide',
|
||||
unknown_error: 'Unknown error, please try again later.',
|
||||
select: 'Select',
|
||||
contact_us_action: 'Contact Us',
|
||||
contact_us_action: 'Contact us',
|
||||
description: 'Description',
|
||||
name: 'Name',
|
||||
add_field: 'Add {{field}}',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const get_started = {
|
||||
page_title: 'Get Started',
|
||||
page_title: 'Get started',
|
||||
title: 'Something to help you succeed',
|
||||
subtitle: 'A few things you can do to quickly get value of Logto',
|
||||
develop: {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const guide = {
|
||||
start_building: 'Start Building',
|
||||
get_started: 'Get Started',
|
||||
start_building: 'Start building',
|
||||
get_started: 'Get started',
|
||||
categories: {
|
||||
featured: 'Popular and for you',
|
||||
Traditional: 'Traditional web app',
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
const log_details = {
|
||||
page_title: 'Audit Log details',
|
||||
back_to_logs: 'Back to Audit Logs',
|
||||
page_title: 'Audit log details',
|
||||
back_to_logs: 'Back to audit logs',
|
||||
back_to: 'Back to {{name}}',
|
||||
success: 'Success',
|
||||
failed: 'Failed',
|
||||
event_key: 'Event Key',
|
||||
event_key: 'Event key',
|
||||
application: 'Application',
|
||||
ip_address: 'IP address',
|
||||
user: 'User',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const logs = {
|
||||
page_title: 'Audit Logs',
|
||||
title: 'Audit Logs',
|
||||
page_title: 'Audit logs',
|
||||
title: 'Audit logs',
|
||||
subtitle: 'View log data of authentication events made by your users',
|
||||
event: 'Event',
|
||||
user: 'User',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const profile = {
|
||||
page_title: 'Account Settings',
|
||||
title: 'Account Settings',
|
||||
page_title: 'Account settings',
|
||||
title: 'Account settings',
|
||||
description:
|
||||
'Change your account settings and manage your personal information here to ensure your account security.',
|
||||
settings: {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const role_details = {
|
||||
back_to_roles: 'Back to Roles',
|
||||
back_to_roles: 'Back to roles',
|
||||
identifier: 'Identifier',
|
||||
delete_description:
|
||||
'Doing so will remove the permissions associated with this role from the affected users and delete the mapping between roles, users, and permissions.',
|
||||
|
@ -16,7 +16,7 @@ const role_details = {
|
|||
type_m2m_role_tag: 'Machine-to-machine app role',
|
||||
type_user_role_tag: 'User role',
|
||||
permission: {
|
||||
assign_button: 'Assign Permissions',
|
||||
assign_button: 'Assign permissions',
|
||||
assign_title: 'Assign permissions',
|
||||
assign_subtitle:
|
||||
'Assign permissions to this role. The role will gain the added permissions, and users with this role will inherit these permissions.',
|
||||
|
@ -25,7 +25,7 @@ const role_details = {
|
|||
added_text_other: '{{count, number}} permissions added',
|
||||
api_permission_count_one: '{{count, number}} permission',
|
||||
api_permission_count_other: '{{count, number}} permissions',
|
||||
confirm_assign: 'Assign Permissions',
|
||||
confirm_assign: 'Assign permissions',
|
||||
permission_assigned: 'The selected permissions were successfully assigned to this role',
|
||||
deletion_description:
|
||||
'If this permission is removed, the affected user with this role will lose the access granted by this permission.',
|
||||
|
@ -33,7 +33,7 @@ const role_details = {
|
|||
empty: 'No permission available',
|
||||
},
|
||||
users: {
|
||||
assign_button: 'Assign Users',
|
||||
assign_button: 'Assign users',
|
||||
name_column: 'User',
|
||||
app_column: 'App',
|
||||
latest_sign_in_column: 'Latest sign in',
|
||||
|
|
|
@ -3,7 +3,7 @@ const roles = {
|
|||
title: 'Roles',
|
||||
subtitle:
|
||||
'Roles include permissions that determine what a user can do. RBAC uses roles to give users access to resources for specific actions.',
|
||||
create: 'Create Role',
|
||||
create: 'Create role',
|
||||
role_name: 'Role name',
|
||||
role_type: 'Role type',
|
||||
show_role_type_button_text: 'Show more options',
|
||||
|
@ -22,10 +22,10 @@ const roles = {
|
|||
user_count: '{{count}} user',
|
||||
application_count: '{{count}} app',
|
||||
assign_permissions: 'Assign permissions',
|
||||
create_role_title: 'Create Role',
|
||||
create_role_title: 'Create role',
|
||||
create_role_description:
|
||||
'Create and manage roles for your applications. Roles contain collections of permissions and can be assigned to users.',
|
||||
create_role_button: 'Create Role',
|
||||
create_role_button: 'Create role',
|
||||
role_created: 'The role {{name}} has been successfully created.',
|
||||
search: 'Search by role name, description or ID',
|
||||
placeholder_title: 'Roles',
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
const session_expired = {
|
||||
title: 'Session Expired',
|
||||
title: 'Session expired',
|
||||
subtitle:
|
||||
'Your session might have expired and you have been disconnected. Click the button below to sign in to admin console again.',
|
||||
button: 'Sign In Again',
|
||||
button: 'Sign in again',
|
||||
};
|
||||
|
||||
export default Object.freeze(session_expired);
|
||||
|
|
|
@ -8,7 +8,7 @@ const sign_in_exp = {
|
|||
description: 'Customize the sign in UI to match your brand and view in real time',
|
||||
tabs: {
|
||||
branding: 'Branding',
|
||||
sign_up_and_sign_in: 'Sign-up and Sign-in',
|
||||
sign_up_and_sign_in: 'Sign-up and sign-in',
|
||||
content: 'Content',
|
||||
password_policy: 'Password policy',
|
||||
},
|
||||
|
@ -16,7 +16,7 @@ const sign_in_exp = {
|
|||
title: 'Customize sign-in experience',
|
||||
description:
|
||||
'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
|
||||
get_started: 'Get Started',
|
||||
get_started: 'Get started',
|
||||
apply_remind:
|
||||
'Please note that sign-in experience will apply to all applications under this account.',
|
||||
},
|
||||
|
@ -45,8 +45,8 @@ const sign_in_exp = {
|
|||
},
|
||||
custom_css: {
|
||||
title: 'Custom CSS',
|
||||
css_code_editor_title: 'Personalize your UI with Custom CSS',
|
||||
css_code_editor_description1: 'See the example of Custom CSS.',
|
||||
css_code_editor_title: 'Personalize your UI with custom CSS',
|
||||
css_code_editor_description1: 'See the example of custom CSS.',
|
||||
css_code_editor_description2: '<a>{{link}}</a>',
|
||||
css_code_editor_description_link_content: 'Learn more',
|
||||
css_code_editor_content_placeholder:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const user_details = {
|
||||
page_title: 'User details',
|
||||
back_to_users: 'Back to User Management',
|
||||
back_to_users: 'Back to user management',
|
||||
created_title: 'This user has been successfully created',
|
||||
created_guide: 'Here’s the information to assist the user with their sign-in process.',
|
||||
created_email: 'Email address:',
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
const users = {
|
||||
page_title: 'User Management',
|
||||
title: 'User Management',
|
||||
page_title: 'User management',
|
||||
title: 'User management',
|
||||
subtitle:
|
||||
'Manage user identities including creating users, editing user information, viewing user logs, password resets and deleting users',
|
||||
create: 'Add User',
|
||||
create: 'Add user',
|
||||
create_subtitle: 'Provide at least one of the following fields to proceed.',
|
||||
error_missing_identifier: 'You must provide at least one identifier to create a user.',
|
||||
user_name: 'User',
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const webhook_details = {
|
||||
page_title: 'Webhook details',
|
||||
back_to_webhooks: 'Back to Webhooks',
|
||||
back_to_webhooks: 'Back to webhooks',
|
||||
not_in_use: 'Not in use',
|
||||
success_rate: 'success rate',
|
||||
requests: '{{value, number}} requests in 24h',
|
||||
|
|
|
@ -3,11 +3,11 @@ const demo_app = {
|
|||
subtitle: 'Here is your log in information:',
|
||||
username: 'Username: ',
|
||||
user_id: 'User ID: ',
|
||||
sign_out: 'Sign Out the Live Preview',
|
||||
sign_out: 'Sign out the live preview',
|
||||
continue_explore: 'Or continue to explore',
|
||||
customize_sign_in_experience: 'Customize Sign-in Experience',
|
||||
enable_passwordless: 'Enable Passwordless',
|
||||
add_social_connector: 'Add Social Connector',
|
||||
customize_sign_in_experience: 'Customize sign-in experience',
|
||||
enable_passwordless: 'Enable passwordless',
|
||||
add_social_connector: 'Add social connector',
|
||||
};
|
||||
|
||||
export default Object.freeze(demo_app);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const logs = {
|
||||
page_title: 'Audit Logs',
|
||||
title: 'Audit Logs',
|
||||
page_title: 'Audit logs',
|
||||
title: 'Audit logs',
|
||||
subtitle:
|
||||
'Visualize os dados de log dos eventos de autenticação feitos por seu administrador e usuários',
|
||||
event: 'Evento',
|
||||
|
|
Loading…
Reference in a new issue