Merge branch 'api-token-v2/fix-failing-e2e-tests' into api-token-v2/regenerate-tokens-api

This commit is contained in:
Ben Irvin 2022-08-23 20:18:13 +02:00
commit d4c3c6e9af
64 changed files with 2106 additions and 1304 deletions

View File

@ -28,7 +28,7 @@ module.exports = {
'no-use-before-define': 'warn',
'no-param-reassign': 'warn',
'no-continue': 'warn',
'no-process-exit': 'warn',
'no-process-exit': 'off',
'no-plusplus': 'warn',
'no-loop-func': 'warn',
'guard-for-in': 'warn',

View File

@ -9,7 +9,7 @@
"watch": "NODE_ENV=production ncc build index.js -w -o dist --minify"
},
"devDependencies": {
"@actions/core": "1.9.0",
"@actions/core": "1.9.1",
"@actions/github": "5.0.0",
"@vercel/ncc": "0.34.0"
}

23
.github/workflows/nightly.yml vendored Normal file
View File

@ -0,0 +1,23 @@
name: 'Nightly Releases'
on:
schedule:
- cron: '0 0 * * 2-6'
workflow_dispatch:
jobs:
publish:
name: 'Publish'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup npmrc
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc
- uses: actions/setup-node@v3
with:
node-version: 16
- run: yarn
- run: ./scripts/pre-publish.sh --yes
env:
VERSION: '0.0.0-${{ github.sha }}'
DIST_TAG: experimental

44
.github/workflows/pages.yml vendored Normal file
View File

@ -0,0 +1,44 @@
name: Deploy static content to Pages
on:
push:
branches:
- 'main'
workflow_dispatch:
concurrency:
group: 'pages'
cancel-in-progress: true
defaults:
run:
working-directory: docs
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
cache: yarn
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Build website
run: yarn build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/build
user_name: github-actions[bot]
user_email: 41898282+github-actions[bot]@users.noreply.github.com

View File

@ -22,6 +22,9 @@
<a href="https://discord.strapi.io">
<img src="https://img.shields.io/discord/811989166782021633?label=Discord" alt="Strapi on Discord" />
</a>
<a href="https://github.com/strapi/strapi/actions/workflows/nightly.yml">
<img src="https://github.com/strapi/strapi/actions/workflows/nightly.yml/badge.svg" alt="Strapi Nightly Release Build Status" />
</a>
</p>
<br>

View File

@ -9,12 +9,13 @@ const config = {
title: 'Doc',
tagline: 'Dinosaurs are cool',
url: 'https://your-docusaurus-test-site.com',
baseUrl: '/',
baseUrl: '/strapi/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
favicon: 'img/favicon.ico',
organizationName: 'strapi',
projectName: 'strapi',
trailingSlash: false,
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want

View File

@ -14,8 +14,8 @@
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "2.0.0-beta.21",
"@docusaurus/preset-classic": "2.0.0-beta.21",
"@docusaurus/core": "2.0.1",
"@docusaurus/preset-classic": "2.0.1",
"@mdx-js/react": "^1.6.22",
"clsx": "^1.1.1",
"prism-react-renderer": "^1.3.3",

File diff suppressed because it is too large Load Diff

View File

@ -91,7 +91,7 @@
"jest-circus": "26.6.3",
"jest-cli": "26.6.3",
"jest-watch-typeahead": "0.6.5",
"lerna": "5.1.6",
"lerna": "5.4.3",
"lint-staged": "10.5.4",
"lodash": "4.17.21",
"npm-run-all": "4.1.5",

View File

@ -36,16 +36,34 @@ const DynamicTable = ({
});
const formattedHeaders = headers.displayedHeaders.map((header) => {
const { metadatas } = header;
if (header.fieldSchema.type === 'relation') {
const sortFieldValue = `${header.name}.${header.metadatas.mainField.name}`;
return {
...header,
metadatas: {
...metadatas,
label: formatMessage({
id: getTrad(`containers.ListPage.table-headers.${header.name}`),
defaultMessage: header.name,
}),
},
name: sortFieldValue,
};
}
return header;
return {
...header,
metadatas: {
...metadatas,
label: formatMessage({
id: getTrad(`containers.ListPage.table-headers.${header.name}`),
defaultMessage: header.name,
}),
},
};
});
if (!hasDraftAndPublish) {
@ -61,7 +79,10 @@ const DynamicTable = ({
type: 'custom',
},
metadatas: {
label: formatMessage({ id: getTrad('containers.ListPage.table-headers.published_at') }),
label: formatMessage({
id: getTrad(`containers.ListPage.table-headers.publishedAt`),
defaultMessage: 'publishedAt',
}),
searchable: false,
sortable: true,
},

View File

@ -1,4 +1,8 @@
import React from 'react';
import { useIntl } from 'react-intl';
import PropTypes from 'prop-types';
import { useHistory } from 'react-router-dom';
import { Typography } from '@strapi/design-system/Typography';
import { Tbody, Tr, Td } from '@strapi/design-system/Table';
import { Flex } from '@strapi/design-system/Flex';
@ -9,9 +13,7 @@ import {
pxToRem,
useTracking,
} from '@strapi/helper-plugin';
import { useIntl } from 'react-intl';
import PropTypes from 'prop-types';
import { useHistory } from 'react-router-dom';
import DeleteButton from './DeleteButton';
import UpdateButton from './UpdateButton';
import ReadButton from './ReadButton';

View File

@ -1,5 +1,9 @@
import React, { useEffect, useRef } from 'react';
import { useIntl } from 'react-intl';
import { useQuery, useMutation, useQueryClient } from 'react-query';
import { useHistory } from 'react-router-dom';
import qs from 'qs';
import {
SettingsPageTitle,
useFocusWhenNavigate,
@ -16,9 +20,7 @@ import { HeaderLayout, ContentLayout } from '@strapi/design-system/Layout';
import { Main } from '@strapi/design-system/Main';
import { Button } from '@strapi/design-system/Button';
import Plus from '@strapi/icons/Plus';
import { useQuery, useMutation, useQueryClient } from 'react-query';
import { useHistory } from 'react-router-dom';
import qs from 'qs';
import { axiosInstance } from '../../../../../core/utils';
import adminPermissions from '../../../../../permissions';
import tableHeaders from './utils/tableHeaders';
@ -47,6 +49,14 @@ const ApiTokenListView = () => {
push({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });
}, [push]);
const headers = tableHeaders.map((header) => ({
...header,
metadatas: {
...header.metadatas,
label: formatMessage(header.metadatas.label),
},
}));
const {
data: apiTokens,
status,
@ -134,7 +144,7 @@ const ApiTokenListView = () => {
{!canRead && <NoPermissions />}
{shouldDisplayDynamicTable && (
<DynamicTable
headers={tableHeaders}
headers={headers}
contentType="api-tokens"
rows={apiTokens}
withBulkActions={canDelete || canUpdate || canRead}

View File

@ -3,7 +3,10 @@ const tableHeaders = [
name: 'name',
key: 'name',
metadatas: {
label: 'Name',
label: {
id: 'Settings.apiTokens.ListView.headers.name',
defaultMessage: 'Name',
},
sortable: true,
},
},
@ -11,7 +14,10 @@ const tableHeaders = [
name: 'description',
key: 'description',
metadatas: {
label: 'Description',
label: {
id: 'Settings.apiTokens.ListView.headers.description',
defaultMessage: 'Description',
},
sortable: false,
},
},
@ -19,7 +25,10 @@ const tableHeaders = [
name: 'type',
key: 'type',
metadatas: {
label: 'Token type',
label: {
id: 'Settings.apiTokens.ListView.headers.type',
defaultMessage: 'Token type',
},
sortable: false,
},
},
@ -27,7 +36,10 @@ const tableHeaders = [
name: 'createdAt',
key: 'createdAt',
metadatas: {
label: 'Created at',
label: {
id: 'Settings.apiTokens.ListView.headers.createdAt',
defaultMessage: 'Created at',
},
sortable: false,
},
},

View File

@ -38,6 +38,14 @@ const ListPage = () => {
const { notifyStatus } = useNotifyAT();
const queryName = ['users', search];
const headers = tableHeaders.map((header) => ({
...header,
metadatas: {
...header.metadatas,
label: formatMessage(header.metadatas.label),
},
}));
const title = formatMessage({
id: 'global.users',
defaultMessage: 'Users',
@ -143,14 +151,14 @@ const ListPage = () => {
isLoading={isLoading}
onConfirmDeleteAll={deleteAllMutation.mutateAsync}
onConfirmDelete={(id) => deleteAllMutation.mutateAsync([id])}
headers={tableHeaders}
headers={headers}
rows={data?.results}
withBulkActions
withMainAction={canDelete}
>
<TableRows
canDelete={canDelete}
headers={tableHeaders}
headers={headers}
rows={data?.results || []}
withBulkActions
withMainAction={canDelete}

View File

@ -7,30 +7,50 @@ const tableHeaders = [
{
name: 'firstname',
key: 'firstname',
metadatas: { label: 'Firstname', sortable: true },
metadatas: {
label: {
id: 'Settings.permissions.users.firstname',
defaultMessage: 'Firstname',
},
sortable: true,
},
},
{
name: 'lastname',
key: 'lastname',
metadatas: { label: 'Lastname', sortable: true },
metadatas: {
label: {
id: 'Settings.permissions.users.lastname',
defaultMessage: 'Lastname',
},
sortable: true,
},
},
{
key: 'email',
name: 'email',
metadatas: { label: 'Email', sortable: true },
metadatas: {
label: { id: 'Settings.permissions.users.email', defaultMessage: 'Email' },
sortable: true,
},
},
{
key: 'roles',
name: 'roles',
metadatas: { label: 'Roles', sortable: false },
/* eslint-disable react/prop-types */
metadatas: {
label: {
id: 'Settings.permissions.users.roles',
defaultMessage: 'Roles',
},
sortable: false,
},
cellFormatter({ roles }, { formatMessage }) {
return (
<Typography textColor="neutral800">
{roles
.map((role) =>
formatMessage({
id: `global.${role.code}`,
id: `Settings.permissions.users.${role.code}`,
defaultMessage: role.name,
})
)
@ -38,25 +58,37 @@ const tableHeaders = [
</Typography>
);
},
/* eslint-enable react/prop-types */
},
{
key: 'username',
name: 'username',
metadatas: { label: 'Username', sortable: true },
metadatas: {
label: {
id: 'Settings.permissions.users.username',
defaultMessage: 'Username',
},
sortable: true,
},
},
{
key: 'isActive',
name: 'isActive',
metadatas: { label: 'User status', sortable: false },
// eslint-disable-next-line react/prop-types
metadatas: {
label: {
id: 'Settings.permissions.users.user-status',
defaultMessage: 'User status',
},
sortable: false,
},
cellFormatter({ isActive }, { formatMessage }) {
return (
<Flex>
<Status isActive={isActive} variant={isActive ? 'success' : 'danger'} />
<Typography textColor="neutral800">
{formatMessage({
id: isActive ? 'global.active' : 'global.inactive',
id: isActive
? 'Settings.permissions.users.active'
: 'Settings.permissions.users.inactive',
defaultMessage: isActive ? 'Active' : 'Inactive',
})}
</Typography>

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission": "Seleccioneu tots els permisos de {label}",
"Settings.permissions.select-by-permission": "Seleccionar permís de {label}",
"Settings.permissions.users.create": "Crear nou usuari",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Nom",
"Settings.permissions.users.form.lastname": "Cognom",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Nom",
"Settings.permissions.users.lastname": "Cognom",
"Settings.permissions.users.form.sso": "connecta amb SSO",
"Settings.permissions.users.form.sso.description": "quan està disponible, els usuaris poden accedir via SSO",
"Settings.permissions.users.listview.header.subtitle": "Tots els usuaris que tenen accés al panell d'administració de Strapi",
@ -545,7 +545,7 @@
"content-manager.containers.List.published": "Publicat",
"content-manager.containers.ListPage.displayedFields": "Camps mostrats",
"content-manager.containers.ListPage.items": "{number, plural, =0 {elements} one {element} other {elements}}",
"content-manager.containers.ListPage.table-headers.published_at": "Estat",
"content-manager.containers.ListPage.table-headers.publishedAt": "Estat",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edita l'etiqueta",
"content-manager.containers.SettingPage.add.field": "Inserir un altre camp",
"content-manager.containers.SettingPage.add.relational-field": "Inserir un altre camp relacional",

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission": "Wähle alle {label}-Berechtigungen",
"Settings.permissions.select-by-permission": "Wähle {label}-Berechtigung",
"Settings.permissions.users.create": "Benutzer einladen",
"Settings.permissions.users.form.email": "E-Mail",
"Settings.permissions.users.form.firstname": "Vorname",
"Settings.permissions.users.form.lastname": "Nachname",
"Settings.permissions.users.email": "E-Mail",
"Settings.permissions.users.firstname": "Vorname",
"Settings.permissions.users.lastname": "Nachname",
"Settings.permissions.users.form.sso": "Mit SSO einloggen",
"Settings.permissions.users.form.sso.description": "Nutzer können sich per SSO einloggen wenn aktiviert (ON)",
"Settings.permissions.users.listview.header.subtitle": "Alle Nutzer mit Zugriff auf diese Administrationsoberfläche",
@ -539,7 +539,7 @@
"content-manager.containers.List.published": "Veröffentlicht",
"content-manager.containers.ListPage.displayedFields": "Dargestellte Felder",
"content-manager.containers.ListPage.items": "{number, plural, one {Eintrag} other {Einträge}}",
"content-manager.containers.ListPage.table-headers.published_at": "Status",
"content-manager.containers.ListPage.table-headers.publishedAt": "Status",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Beschriftung ändern",
"content-manager.containers.SettingPage.add.field": "Ein weiteres Feld hinzufügen",
"content-manager.containers.SettingPage.add.relational-field": "Ein weiteres Beziehungs-Feld hinzufügen",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Vælg alle {label} tilladelser",
"Settings.permissions.select-by-permission": "Vælg {label} tilladelse",
"Settings.permissions.users.create": "Opret ny bruger",
"Settings.permissions.users.form.email": "E-mail",
"Settings.permissions.users.form.firstname": "Fornavn",
"Settings.permissions.users.form.lastname": "Efternavn",
"Settings.permissions.users.email": "E-mail",
"Settings.permissions.users.firstname": "Fornavn",
"Settings.permissions.users.lastname": "Efternavn",
"Settings.permissions.users.form.sso": "Forbind med SSO",
"Settings.permissions.users.form.sso.description": "Når aktiveret (TIL), kan brugere logge ind med SSO",
"Settings.permissions.users.listview.header.subtitle": "Alle brugere som har adgnag til Strapi admin panelet",
@ -485,7 +485,7 @@
"content-manager.containers.List.published": "Offentliggjort",
"content-manager.containers.ListPage.displayedFields": "Viste felter",
"content-manager.containers.ListPage.items": "{number, plural, =0 {elementer} one {element} other {elementer}}",
"content-manager.containers.ListPage.table-headers.published_at": "Tilstand",
"content-manager.containers.ListPage.table-headers.publishedAt": "Tilstand",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Redigér label",
"content-manager.containers.SettingPage.add.field": "Indsæt endnu et felt",
"content-manager.containers.SettingPage.add.relational-field": "Indsæt endnu et relationsfelt",

View File

@ -87,6 +87,10 @@
"Settings.apiTokens.create": "Create new API Token",
"Settings.apiTokens.description": "List of generated tokens to consume the API",
"Settings.apiTokens.emptyStateLayout": "You dont have any content yet...",
"Settings.apiTokens.ListView.headers.name": "Name",
"Settings.apiTokens.ListView.headers.description": "Description",
"Settings.apiTokens.ListView.headers.type": "Token type",
"Settings.apiTokens.ListView.headers.createdAt": "Created at",
"Settings.apiTokens.notification.copied": "Token copied to clipboard.",
"Settings.apiTokens.title": "API Tokens",
"Settings.apiTokens.types.full-access": "Full access",
@ -149,13 +153,21 @@
"Settings.permissions.select-all-by-permission": "Select all {label} permissions",
"Settings.permissions.select-by-permission": "Select {label} permission",
"Settings.permissions.users.create": "Invite new user",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "First name",
"Settings.permissions.users.form.lastname": "Last name",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Firstname",
"Settings.permissions.users.lastname": "Lastname",
"Settings.permissions.users.user-status": "User status",
"Settings.permissions.users.roles": "Roles",
"Settings.permissions.users.username": "Username",
"Settings.permissions.users.active": "Active",
"Settings.permissions.users.inactive": "Inactive",
"Settings.permissions.users.form.sso": "Connect with SSO",
"Settings.permissions.users.form.sso.description": "When enabled (ON), users can login via SSO",
"Settings.permissions.users.listview.header.subtitle": "All the users who have access to the Strapi admin panel",
"Settings.permissions.users.tabs.label": "Tabs Permissions",
"Settings.permissions.users.strapi-super-admin": "Super Admin",
"Settings.permissions.users.strapi-editor": "Editor",
"Settings.permissions.users.strapi-author": "Author",
"Settings.profile.form.notify.data.loaded": "Your profile data has been loaded",
"Settings.profile.form.section.experience.clear.select": "Clear the interface language selected",
"Settings.profile.form.section.experience.here": "here",
@ -585,7 +597,7 @@
"content-manager.containers.List.published": "Published",
"content-manager.containers.ListPage.displayedFields": "Displayed Fields",
"content-manager.containers.ListPage.items": "{number, plural, =0 {items} one {item} other {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "State",
"content-manager.containers.ListPage.table-headers.publishedAt": "State",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edit {fieldName}",
"content-manager.containers.SettingPage.add.field": "Insert another field",
"content-manager.containers.SettingPage.add.relational-field": "Insert another relational field",
@ -694,8 +706,6 @@
"form.button.done": "Done",
"global.search": "Search",
"global.actions": "Actions",
"global.active": "Active",
"global.inactive": "Inactive",
"global.back": "Back",
"global.cancel": "Cancel",
"global.change-password": "Change password",
@ -741,15 +751,6 @@
"global.select": "Select",
"global.select-all-entries": "Select all entries",
"global.settings": "Settings",
"global.strapi-super-admin": "Super Admin",
"global.strapi-editor": "Editor",
"global.strapi-author": "Author",
"global.table.header.email": "Email",
"global.table.header.firstname": "Firstname",
"global.table.header.isActive": "User status",
"global.table.header.lastname": "Lastname",
"global.table.header.roles": "Roles",
"global.table.header.username": "Username",
"global.type": "Type",
"global.users": "Users",
"notification.contentType.relations.conflict": "Content type has conflicting relations",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Seleccionar todos los permisos de {label}",
"Settings.permissions.select-by-permission": "Seleccionar permiso de {label}",
"Settings.permissions.users.create": "Crear nuevo usuario",
"Settings.permissions.users.form.email": "Correo electrónico",
"Settings.permissions.users.form.firstname": "Nombre",
"Settings.permissions.users.form.lastname": "Apellido",
"Settings.permissions.users.email": "Correo electrónico",
"Settings.permissions.users.firstname": "Nombre",
"Settings.permissions.users.lastname": "Apellido",
"Settings.permissions.users.form.sso": "connect with sso",
"Settings.permissions.users.form.sso.description": "when enabled (on), users can login via sso",
"Settings.permissions.users.listview.header.subtitle": "Todos los usuarios que tienen acceso al panel de administración de strapi",
@ -485,7 +485,7 @@
"content-manager.containers.List.published": "Publicado",
"content-manager.containers.ListPage.displayedFields": "Campos mostrados",
"content-manager.containers.ListPage.items": "{number, plural, =0 {elementos} one {elemento} other {elementos}}",
"content-manager.containers.ListPage.table-headers.published_at": "Estado",
"content-manager.containers.ListPage.table-headers.publishedAt": "Estado",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edita la etiqueta",
"content-manager.containers.SettingPage.add.field": "Insertar otro campo",
"content-manager.containers.SettingPage.add.relational-field": "Insertar otro campo relacional",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Sélectionner toutes les permissions de {label}",
"Settings.permissions.select-by-permission": "Sélectionner la permission de {label}",
"Settings.permissions.users.create": "Créer un nouvel Utilisateur",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Prénom",
"Settings.permissions.users.form.lastname": "Nom",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Prénom",
"Settings.permissions.users.lastname": "Nom",
"Settings.permissions.users.form.sso": "Se connecter via SSO",
"Settings.permissions.users.form.sso.description": "Quand activé, les utilisateurs peuvent se connecter via SSO",
"Settings.permissions.users.listview.header.subtitle": "Tous les utilisateurs ayant accès au panneau d'administration de Strapi",
@ -484,7 +484,7 @@
"content-manager.containers.List.published": "Publié",
"content-manager.containers.ListPage.displayedFields": "Champs affichés",
"content-manager.containers.ListPage.items": "{number, plural, =0 {élements} one {élement} other {élements}}",
"content-manager.containers.ListPage.table-headers.published_at": "Statut",
"content-manager.containers.ListPage.table-headers.publishedAt": "Statut",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Editer le label",
"content-manager.containers.SettingPage.add.field": "Insérer un autre champ",
"content-manager.containers.SettingPage.add.relational-field": "Insérer un autre champ relationnel",

View File

@ -35,9 +35,9 @@
"settings.permissions.select-all-by-permission": "બધી {label} પરવાનગીઓ પસંદ કરો",
"settings.permissions.select-by-permission": "{label} પરવાનગી પસંદ કરો",
"Settings.permissions.users.create": "નવા વપરાશકર્તાને આમંત્રિત કરો",
"Settings.permissions.users.form.email": "ઈમેલ",
"Settings.permissions.users.form.firstname": "પ્રથમ નામ",
"Settings.permissions.users.form.lastname": "છેલ્લું નામ",
"Settings.permissions.users.email": "ઈમેલ",
"Settings.permissions.users.firstname": "પ્રથમ નામ",
"Settings.permissions.users.lastname": "છેલ્લું નામ",
"Settings.permissions.users.form.sso": "SSO સાથે કનેક્ટ કરો",
"Settings.permissions.users.form.sso.description": "જ્યારે સક્ષમ (ચાલુ) હોય, ત્યારે વપરાશકર્તાઓ SSO દ્વારા લૉગિન કરી શકે છે",
"Settings.permissions.users.listview.header.subtitle": "સ્ટ્રેપી એડમિન પેનલની ઍક્સેસ ધરાવતા તમામ વપરાશકર્તાઓ",
@ -462,7 +462,7 @@
"content-manager.containers.List.published": "પ્રકાશિત",
"content-manager.containers.ListPage.displayedFields": "પ્રદર્શિત ક્ષેત્રો",
"content-manager.containers.ListPage.items": "{સંખ્યા, બહુવચન, =0 {items} એક {item} અન્ય {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "રાજ્ય",
"content-manager.containers.ListPage.table-headers.publishedAt": "રાજ્ય",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "{fieldName} સંપાદિત કરો",
"content-manager.containers.SettingPage.add.field": "બીજું ક્ષેત્ર દાખલ કરો",
"content-manager.containers.SettingPage.add.relational-field": "બીજું રિલેશનલ ફીલ્ડ દાખલ કરો",

View File

@ -83,9 +83,9 @@
"Settings.permissions.conditions.or": "או",
"Settings.permissions.conditions.when": "כאשר",
"Settings.permissions.users.create": "יצירת משתמש חדש",
"Settings.permissions.users.form.email": "דוא\"ל",
"Settings.permissions.users.form.firstname": "שם פרטי",
"Settings.permissions.users.form.lastname": "שם משפחה",
"Settings.permissions.users.email": "דוא\"ל",
"Settings.permissions.users.firstname": "שם פרטי",
"Settings.permissions.users.lastname": "שם משפחה",
"Settings.permissions.users.form.sso": "התחבר באמצעות SSO",
"Settings.permissions.users.form.sso.description": "כשמאופשר (ON), משתמשים יוכלו להתחבר באמצעות SSO",
"Settings.roles.create.description": "הגדירו את הזכויות הניתנות לתפקיד",

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission": "सभी {लेबल} अनुमतियों का चयन करें",
"Settings.permissions.select-by-permission": "{लेबल} अनुमति चुनें",
"Settings.permissions.users.create": "नए उपयोगकर्ता को आमंत्रित करें",
"Settings.permissions.users.form.email": "ईमेल",
"Settings.permissions.users.form.firstname": "प्रथम नाम",
"Settings.permissions.users.form.lastname": "उपनाम",
"Settings.permissions.users.email": "ईमेल",
"Settings.permissions.users.firstname": "प्रथम नाम",
"Settings.permissions.users.lastname": "उपनाम",
"Settings.permissions.users.form.sso": "एसएसओ से जुड़ें",
"Settings.permissions.users.form.sso.description": "सक्षम (चालू) होने पर, उपयोगकर्ता एसएसओ के माध्यम से लॉगिन कर सकते हैं",
"Settings.permissions.users.listview.header.subtitle": "वे सभी उपयोगकर्ता जिनके पास Strapi व्यवस्थापक पैनल तक पहुंच है",
@ -543,7 +543,7 @@
"content-manager.containers.List.published": "प्रकाशित",
"content-manager.containers.ListPage.displayedFields": "प्रदर्शित फ़ील्ड",
"content-manager.containers.ListPage.items": "{संख्या, बहुवचन, =0 {आइटम} एक {आइटम} अन्य {आइटम}}",
"content-manager.containers.ListPage.table-headers.published_at": "राज्य",
"content-manager.containers.ListPage.table-headers.publishedAt": "राज्य",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "संपादित करें {फ़ील्डनाम}",
"content-manager.containers.SettingPage.add.field": "एक और फ़ील्ड डालें",
"content-manager.containers.SettingPage.add.relational-field": "एक और रिलेशनल फील्ड डालें",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Minden {label} hozzáféres kiválasztása",
"Settings.permissions.select-by-permission": "{label} hozzáféres kiválasztása",
"Settings.permissions.users.create": "Új felhasználó meghívása",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Keresztnév",
"Settings.permissions.users.form.lastname": "Vezetéknév",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Keresztnév",
"Settings.permissions.users.lastname": "Vezetéknév",
"Settings.permissions.users.form.sso": "Csatlakozas SSO-val",
"Settings.permissions.users.form.sso.description": "Ha engedélyezve van (ON), a felhasználók bejelentkezhetnek SSO-n keresztül",
"Settings.permissions.users.listview.header.subtitle": "Minden felhasználó, aki hozzáfér a Strapi adminisztrációs panelhez",
@ -486,7 +486,7 @@
"content-manager.containers.List.published": "Közzétett",
"content-manager.containers.ListPage.displayedFields": "Megjelenített mezők",
"content-manager.containers.ListPage.items": "{number} elem",
"content-manager.containers.ListPage.table-headers.published_at": "Állapot",
"content-manager.containers.ListPage.table-headers.publishedAt": "Állapot",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "{fieldName} szerkesztése",
"content-manager.containers.SettingPage.add.field": "Másik mező beszúrása",
"content-manager.containers.SettingPage.add.relational-field": "Másik relációs mező beszúrása",

View File

@ -73,9 +73,9 @@
"Settings.permissions.conditions.or": "ATAU",
"Settings.permissions.conditions.when": "Ketika",
"Settings.permissions.users.create": "Buat pengguna Baru",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Nama depan",
"Settings.permissions.users.form.lastname": "Nama belakang",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Nama depan",
"Settings.permissions.users.lastname": "Nama belakang",
"Settings.roles.create.description": "Tentukan hak yang diberikan untuk peran tersebut",
"Settings.roles.create.title": "Buat peran",
"Settings.roles.created": "Peran dibuat",
@ -334,7 +334,7 @@
"content-manager.containers.List.errorFetchRecords": "Eror",
"content-manager.containers.List.published": "Dipublikasi",
"content-manager.containers.ListPage.displayedFields": "Bidang Ditampilkan",
"content-manager.containers.ListPage.table-headers.published_at": "Status",
"content-manager.containers.ListPage.table-headers.publishedAt": "Status",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edit label",
"content-manager.containers.SettingPage.add.field": "Tambah bidang lain",
"content-manager.containers.SettingPage.add.relational-field": "Tambah bidang relasional",

View File

@ -81,9 +81,9 @@
"Settings.permissions.conditions.or": "Oppure",
"Settings.permissions.conditions.when": "Quando",
"Settings.permissions.users.create": "Crea nuovo utente",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Nome",
"Settings.permissions.users.form.lastname": "Cognome",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Nome",
"Settings.permissions.users.lastname": "Cognome",
"Settings.roles.create.description": "Definisci permessi del ruolo",
"Settings.roles.create.title": "Crea ruolo",
"Settings.roles.created": "Ruolo creato",
@ -343,7 +343,7 @@
"content-manager.containers.List.errorFetchRecords": "Errore",
"content-manager.containers.List.published": "Pubblicato",
"content-manager.containers.ListPage.displayedFields": "Campi visualizzati",
"content-manager.containers.ListPage.table-headers.published_at": "Stato",
"content-manager.containers.ListPage.table-headers.publishedAt": "Stato",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Modifica etichetta",
"content-manager.containers.SettingPage.add.field": "Inserisci nuovo campo",
"content-manager.containers.SettingPage.add.relational-field": "Inserisci nuovo campo relazione",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Select all {label} permissions",
"Settings.permissions.select-by-permission": "Select {label} permission",
"Settings.permissions.users.create": "新しいユーザーを作成",
"Settings.permissions.users.form.email": "Eメール",
"Settings.permissions.users.form.firstname": "名",
"Settings.permissions.users.form.lastname": "姓",
"Settings.permissions.users.email": "Eメール",
"Settings.permissions.users.firstname": "名",
"Settings.permissions.users.lastname": "姓",
"Settings.permissions.users.form.sso": "Connect with SSO",
"Settings.permissions.users.form.sso.description": "When enabled (ON), users can login via SSO",
"Settings.permissions.users.listview.header.subtitle": "All the users who have access to the Strapi admin panel",
@ -485,7 +485,7 @@
"content-manager.containers.List.published": "Published",
"content-manager.containers.ListPage.displayedFields": "フィールドが表示されました",
"content-manager.containers.ListPage.items": "{number, plural, =0 {items} one {item} other {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "State",
"content-manager.containers.ListPage.table-headers.publishedAt": "State",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edit {fieldName}",
"content-manager.containers.SettingPage.add.field": "Insert another field",
"content-manager.containers.SettingPage.add.relational-field": "Insert another relational field",

View File

@ -112,9 +112,9 @@
"Settings.permissions.select-all-by-permission": "Select all {label} permissions",
"Settings.permissions.select-by-permission": "Select {label} permission",
"Settings.permissions.users.create": "새 사용자 추가",
"Settings.permissions.users.form.email": "이메일",
"Settings.permissions.users.form.firstname": "이름",
"Settings.permissions.users.form.lastname": "성",
"Settings.permissions.users.email": "이메일",
"Settings.permissions.users.firstname": "이름",
"Settings.permissions.users.lastname": "성",
"Settings.permissions.users.form.sso": "Connect with SSO",
"Settings.permissions.users.form.sso.description": "When enabled (ON), users can login via SSO",
"Settings.permissions.users.listview.header.subtitle": "{number, plural, =0 {# 명} one {# 명} other {# 명}}의 사용자를 찾았습니다.",
@ -483,7 +483,7 @@
"content-manager.containers.List.published": "발행됨",
"content-manager.containers.ListPage.displayedFields": "표시 필드",
"content-manager.containers.ListPage.items": "{number, plural, =0 {items} one {item} other {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "상태",
"content-manager.containers.ListPage.table-headers.publishedAt": "상태",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "{fieldName} 수정",
"content-manager.containers.SettingPage.add.field": "다른 필드 추가",
"content-manager.containers.SettingPage.add.relational-field": "다른 릴레이션 필드 추가",

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission": "എല്ലാ {label} അനുമതികളും തിരഞ്ഞെടുക്കുക",
"Settings.permissions.select-by-permission": "{label} അനുമതി തിരഞ്ഞെടുക്കുക",
"Settings.permissions.users.create": "പുതിയ ഉപയോക്താവിനെ ക്ഷണിക്കുക",
"Settings.permissions.users.form.email": "ഇമെയിൽ",
"Settings.permissions.users.form.firstname": "പേരിന്റെ ആദ്യഭാഗം",
"Settings.permissions.users.form.lastname": "പേരിന്റെ അവസാന ഭാഗം",
"Settings.permissions.users.email": "ഇമെയിൽ",
"Settings.permissions.users.firstname": "പേരിന്റെ ആദ്യഭാഗം",
"Settings.permissions.users.lastname": "പേരിന്റെ അവസാന ഭാഗം",
"Settings.permissions.users.form.sso": "SSO-മായി ബന്ധിപ്പിക്കുക",
"Settings.permissions.users.form.sso.description": "പ്രാപ്തമാക്കുമ്പോൾ (ഓൺ), ഉപയോക്താക്കൾക്ക് SSO വഴി ലോഗിൻ ചെയ്യാൻ കഴിയും",
"Settings.permissions.users.listview.header.subtitle": "Strapi അഡ്മിൻ പാനലിലേക്ക് ആക്‌സസ് ഉള്ള എല്ലാ ഉപയോക്താക്കളും",
@ -543,7 +543,7 @@
"content-manager.containers.List.published": "പ്രസിദ്ധീകരിച്ചു",
"content-manager.containers.ListPage.displayedFields": "പ്രദർശിപ്പിച്ച ഫീൽഡുകൾ",
"content-manager.containers.ListPage.items": "{സംഖ്യ, ബഹുവചനം, =0 {ഇനങ്ങൾ} ഒന്ന് {ഇനം} മറ്റൊന്ന് {ഇനങ്ങൾ}}",
"content-manager.containers.ListPage.table-headers.published_at": "സ്റ്റേറ്റ്",
"content-manager.containers.ListPage.table-headers.publishedAt": "സ്റ്റേറ്റ്",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "എഡിറ്റ് {fieldName}",
"content-manager.containers.SettingPage.add.field": "മറ്റൊരു ഫീൽഡ് ചേർക്കുക",
"content-manager.containers.SettingPage.add.relational-field": "മറ്റൊരു റിലേഷണൽ ഫീൽഡ് ചേർക്കുക",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Selecteer alle {label} rechten",
"Settings.permissions.select-by-permission": "Selecteer {label} recht",
"Settings.permissions.users.create": "Nodig nieuwe gebruiker uit",
"Settings.permissions.users.form.email": "E-mail",
"Settings.permissions.users.form.firstname": "Voornaam",
"Settings.permissions.users.form.lastname": "Achternaam",
"Settings.permissions.users.email": "E-mail",
"Settings.permissions.users.firstname": "Voornaam",
"Settings.permissions.users.lastname": "Achternaam",
"Settings.permissions.users.form.sso": "Verbind met SSO",
"Settings.permissions.users.form.sso.description": "Wanneer dit aan staat (ON), kunnen gebruikers inloggen met SSO",
"Settings.permissions.users.listview.header.subtitle": "Alle gebruikers die toegang hebben tot het Strapi beheerdersdashboard",
@ -488,7 +488,7 @@
"content-manager.containers.List.published": "Gepubliceerd",
"content-manager.containers.ListPage.displayedFields": "Weergegeven velden",
"content-manager.containers.ListPage.items": "{number, plural, =0 {items} één {item} ander {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "Status",
"content-manager.containers.ListPage.table-headers.publishedAt": "Status",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Pas {fieldName} aan",
"content-manager.containers.SettingPage.add.field": "Voeg nog een veld toe",
"content-manager.containers.SettingPage.add.relational-field": "Voeg nog een gerelateerd veld toe",

View File

@ -81,9 +81,9 @@
"Settings.permissions.conditions.or": "ELLER",
"Settings.permissions.conditions.when": "Når",
"Settings.permissions.users.create": "Opprett ny bruker",
"Settings.permissions.users.form.email": "Epost",
"Settings.permissions.users.form.firstname": "Fornavn",
"Settings.permissions.users.form.lastname": "Etternavn",
"Settings.permissions.users.email": "Epost",
"Settings.permissions.users.firstname": "Fornavn",
"Settings.permissions.users.lastname": "Etternavn",
"Settings.permissions.users.form.sso": "Koble til med SSO",
"Settings.roles.create.description": "Definér rollens rettigheter",
"Settings.roles.create.title": "Opprett en rolle",

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission": "Wybierz wszystkie {label} uprawnienia",
"Settings.permissions.select-by-permission": "Wybierz {label} uprawnienie",
"Settings.permissions.users.create": "Utwórz nowego użytkownika",
"Settings.permissions.users.form.email": "E-mail",
"Settings.permissions.users.form.firstname": "Imię",
"Settings.permissions.users.form.lastname": "Nazwisko",
"Settings.permissions.users.email": "E-mail",
"Settings.permissions.users.firstname": "Imię",
"Settings.permissions.users.lastname": "Nazwisko",
"Settings.permissions.users.form.sso": "Połącz z logowaniem jednokrotnym (SSO)",
"Settings.permissions.users.form.sso.description": "Po włączeniu (ON) użytkownicy mogą logować się za pomocą logowania jednokrotnego (SSO)",
"Settings.permissions.users.listview.header.subtitle": "Wszyscy użytkownicy posiadający dostęp do panelu admina",
@ -543,7 +543,7 @@
"content-manager.containers.List.published": "Opublikowany",
"content-manager.containers.ListPage.displayedFields": "Wyświetlone atrybuty",
"content-manager.containers.ListPage.items": "{number, plural, =0 {items} one {item} other {items}}",
"content-manager.containers.ListPage.table-headers.published_at": "Stan",
"content-manager.containers.ListPage.table-headers.publishedAt": "Stan",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Edytuj etykietę",
"content-manager.containers.SettingPage.add.field": "Wstaw inne pole",
"content-manager.containers.SettingPage.add.relational-field": "Wstaw inne pole relacyjne",

View File

@ -114,9 +114,9 @@
"Settings.permissions.select-all-by-permission": "Selecionar todas as permissões de {label}",
"Settings.permissions.select-by-permission": "Selecionar permissão de {label}",
"Settings.permissions.users.create": "Convidar novo usuário",
"Settings.permissions.users.form.email": "E-mail",
"Settings.permissions.users.form.firstname": "Primeiro nome",
"Settings.permissions.users.form.lastname": "Último nome",
"Settings.permissions.users.email": "E-mail",
"Settings.permissions.users.firstname": "Primeiro nome",
"Settings.permissions.users.lastname": "Último nome",
"Settings.permissions.users.form.sso": "Conectar com SSO",
"Settings.permissions.users.form.sso.description": "Quando ativado, usuários podem se conectar com SSO",
"Settings.permissions.users.listview.header.subtitle": "Todos os usuários com acesso ao painel administrativo",
@ -488,7 +488,7 @@
"content-manager.containers.List.published": "Publicado",
"content-manager.containers.ListPage.displayedFields": "Campos exibidos",
"content-manager.containers.ListPage.items": "{number, plural, =0 {itens} one {item} other {itens}}",
"content-manager.containers.ListPage.table-headers.published_at": "Estado",
"content-manager.containers.ListPage.table-headers.publishedAt": "Estado",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Editar {fieldName}",
"content-manager.containers.SettingPage.add.field": "Criar outro campo",
"content-manager.containers.SettingPage.add.relational-field": "Criar outro campo relacional",

View File

@ -93,9 +93,9 @@
"Settings.permissions.conditions.or": "ИЛИ",
"Settings.permissions.conditions.when": "Когда",
"Settings.permissions.users.create": "Создать нового пользователя",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Имя",
"Settings.permissions.users.form.lastname": "Фамилия",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Имя",
"Settings.permissions.users.lastname": "Фамилия",
"Settings.permissions.users.form.sso": "Соединить с SSO",
"Settings.permissions.users.form.sso.description": "Когда включено (ВКЛЮЧЕНО), пользователи смогут входить через SSO",
"Settings.profile.form.section.experience.interfaceLanguage": "Язык интерфейса",
@ -378,7 +378,7 @@
"content-manager.containers.List.errorFetchRecords": "Ошибка",
"content-manager.containers.List.published": "Опубликованный",
"content-manager.containers.ListPage.displayedFields": "Отображаемые поля",
"content-manager.containers.ListPage.table-headers.published_at": "Состояние",
"content-manager.containers.ListPage.table-headers.publishedAt": "Состояние",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Отредактируйте ярлык",
"content-manager.containers.SettingPage.add.field": "Добавить еще одно поле",
"content-manager.containers.SettingPage.add.relational-field": "Добавить еще одно связанное поле",

View File

@ -116,9 +116,9 @@
"Settings.permissions.select-all-by-permission":"सर्व {लेबल} अनुमतिः चिनोतु",
"Settings.permissions.select-by-permission": "{नामपत्र} अनुमतिं चिनोतु",
"Settings.permissions.users.create": "नवप्रयोक्तारं आमन्त्रयतु",
"Settings.permissions.users.form.email":"ईमेल",
"Settings.permissions.users.form.firstname":"प्रथमनाम",
"Settings.permissions.users.form.lastname": "अन्तिनाम",
"Settings.permissions.users.email":"ईमेल",
"Settings.permissions.users.firstname":"प्रथमनाम",
"Settings.permissions.users.lastname": "अन्तिनाम",
"Settings.permissions.users.form.sso": "SSO इत्यनेन सह संयोजयन्तु",
"Settings.permissions.users.form.sso.description": "यदा सक्षम (ON) भवति तदा उपयोक्तारः SSO मार्गेण प्रवेशं कर्तुं शक्नुवन्ति",
"Settings.permissions.users.listview.header.subtitle": "सर्वप्रयोक्तारः येषां Strapi व्यवस्थापकपटले प्रवेशः अस्ति",
@ -543,7 +543,7 @@
"content-manager.containers.List.published": "प्रकाशित",
"content-manager.containers.ListPage.displayedFields": "प्रदर्शितक्षेत्राणि",
"content-manager.containers.ListPage.items": "{संख्या, बहुवचन, =0 {आइटम} एक {आइटम} अन्य {आइटम}}",
"content-manager.containers.ListPage.table-headers.published_at": "राज्यम्",
"content-manager.containers.ListPage.table-headers.publishedAt": "राज्यम्",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "{क्षेत्रनाम} सम्पादित करें",
"content-manager.containers.SettingPage.add.field": "अन्यं क्षेत्रं सम्मिलितं कुर्वन्तु",
"content-manager.containers.SettingPage.add.relational-field": "अन्यं सम्बन्धक्षेत्रं सम्मिलितं कुर्वन्तु",

View File

@ -73,9 +73,9 @@
"Settings.permissions.conditions.or": "ALEBO",
"Settings.permissions.conditions.when": "Kedy",
"Settings.permissions.users.create": "Vytvoriť používateľa",
"Settings.permissions.users.form.email": "Email",
"Settings.permissions.users.form.firstname": "Krstné meno",
"Settings.permissions.users.form.lastname": "Priezvisko",
"Settings.permissions.users.email": "Email",
"Settings.permissions.users.firstname": "Krstné meno",
"Settings.permissions.users.lastname": "Priezvisko",
"Settings.roles.create.description": "Definujte práva priradené role",
"Settings.roles.create.title": "Votvoriť rolu",
"Settings.roles.created": "Rola bola vytvorená",
@ -333,7 +333,7 @@
"content-manager.containers.List.errorFetchRecords": "Chyba",
"content-manager.containers.List.published": "Publikované",
"content-manager.containers.ListPage.displayedFields": "Zobrazené políčka",
"content-manager.containers.ListPage.table-headers.published_at": "Stav",
"content-manager.containers.ListPage.table-headers.publishedAt": "Stav",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "Upraviť popis",
"content-manager.containers.SettingPage.add.field": "Vložiť ďalšie políčko",
"content-manager.containers.SettingPage.add.relational-field": "Vložiť ďalšie políčko prepojenia",

View File

@ -73,9 +73,9 @@
"Settings.permissions.conditions.or": "หรือ",
"Settings.permissions.conditions.when": "เมื่อ",
"Settings.permissions.users.create": "สร้างผู้ใช้ใหม่",
"Settings.permissions.users.form.email": "อีเมล",
"Settings.permissions.users.form.firstname": "ชื่อ",
"Settings.permissions.users.form.lastname": "นามสกุล",
"Settings.permissions.users.email": "อีเมล",
"Settings.permissions.users.firstname": "ชื่อ",
"Settings.permissions.users.lastname": "นามสกุล",
"Settings.roles.create.description": "กำหนดสิทธิที่กำหนดให้กับบทบาท",
"Settings.roles.create.title": "สร้างบทบาท",
"Settings.roles.created": "บทบาทที่สร้าง",

View File

@ -115,13 +115,21 @@
"Settings.permissions.select-all-by-permission": "选择所有 {label} 权限",
"Settings.permissions.select-by-permission": "选择 {label} 权限",
"Settings.permissions.users.create": "邀请新用户",
"Settings.permissions.users.form.email": "电子邮件",
"Settings.permissions.users.form.firstname": "名字",
"Settings.permissions.users.form.lastname": "姓氏",
"Settings.permissions.users.email": "电子邮件",
"Settings.permissions.users.firstname": "名字",
"Settings.permissions.users.lastname": "姓氏",
"Settings.permissions.users.user-status": "是否激活",
"Settings.permissions.users.roles": "用户角色",
"Settings.permissions.users.username": "用户名",
"Settings.permissions.users.active": "已激活",
"Settings.permissions.users.inactive": "未激活",
"Settings.permissions.users.form.sso": "通过 SSO 登录",
"Settings.permissions.users.form.sso.description": "当启用这个选项ON用户可以通过SSO登录",
"Settings.permissions.users.listview.header.subtitle": "所有能够访问 Strapi 管理后台的用户",
"Settings.permissions.users.tabs.label": "标签页权限",
"Settings.permissions.users.strapi-super-admin": "超级管理员",
"Settings.permissions.users.strapi-editor": "编辑",
"Settings.permissions.users.strapi-author": "作者",
"Settings.profile.form.notify.data.loaded": "你的个人数据已经加载完成",
"Settings.profile.form.section.experience.clear.select": "清除已选择的界面语言",
"Settings.profile.form.section.experience.documentation": "文档",
@ -498,7 +506,7 @@
"content-manager.containers.List.published": "已发布",
"content-manager.containers.ListPage.displayedFields": "显示字段",
"content-manager.containers.ListPage.items": "{number, plural, =0 {项} one {项} other {项}}",
"content-manager.containers.ListPage.table-headers.published_at": "状态",
"content-manager.containers.ListPage.table-headers.publishedAt": "状态",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "编辑 {fieldName}",
"content-manager.containers.SettingPage.add.field": "添加字段",
"content-manager.containers.SettingPage.add.relational-field": "添加关联字段",
@ -614,8 +622,6 @@
"content-type-builder.plugin.name": "模型构建器",
"form.button.done": "完成",
"global.search": "搜索",
"global.active": "已激活",
"global.inactive": "未激活",
"global.back": "返回",
"global.cancel": "取消",
"global.change-password": "修改密码",
@ -653,15 +659,6 @@
"global.roles": "角色列表",
"global.save": "保存",
"global.settings": "设置",
"global.strapi-super-admin": "超级管理员",
"global.strapi-editor": "编辑",
"global.strapi-author": "作者",
"global.table.header.email": "电子邮件",
"global.table.header.firstname": "名字",
"global.table.header.isActive": "是否激活",
"global.table.header.lastname": "姓氏",
"global.table.header.roles": "用户角色",
"global.table.header.username": "用户名",
"global.users": "用户列表",
"global.type": "类型",
"notification.contentType.relations.conflict": "内容类型有关联冲突",

View File

@ -115,9 +115,9 @@
"Settings.permissions.select-all-by-permission": "選擇所有 {label} 權限",
"Settings.permissions.select-by-permission": "選擇 {label} 權限",
"Settings.permissions.users.create": "新增使用者",
"Settings.permissions.users.form.email": "電子郵件",
"Settings.permissions.users.form.firstname": "名字",
"Settings.permissions.users.form.lastname": "姓氏",
"Settings.permissions.users.email": "電子郵件",
"Settings.permissions.users.firstname": "名字",
"Settings.permissions.users.lastname": "姓氏",
"Settings.permissions.users.form.sso": "透過 SSO 登入",
"Settings.permissions.users.form.sso.description": "當啟動這個選項時 (ON),使用者可以透過 SSO 登入",
"Settings.permissions.users.listview.header.subtitle": "找到 {number, plural, =0 {# users} one {# user } other {# users}}",
@ -490,7 +490,7 @@
"content-manager.containers.List.published": "已發布",
"content-manager.containers.ListPage.displayedFields": "顯示欄位",
"content-manager.containers.ListPage.items": "{number, plural, =0 {項} one {項} other {項}}",
"content-manager.containers.ListPage.table-headers.published_at": "狀態",
"content-manager.containers.ListPage.table-headers.publishedAt": "狀態",
"content-manager.containers.ListSettingsView.modal-form.edit-label": "編輯 {fieldName}",
"content-manager.containers.SettingPage.add.field": "插入其他欄位",
"content-manager.containers.SettingPage.add.relational-field": "插入額外的關聯欄位",

View File

@ -7,4 +7,6 @@ module.exports = {
...baseConfig,
displayName: (pkg.strapi && pkg.strapi.name) || pkg.name,
roots: [__dirname],
collectCoverageFrom: ['<rootDir>/packages/core/admin/admin/**/*.js'],
coverageDirectory: '<rootDir>/packages/core/admin/coverage',
};

View File

@ -35,7 +35,7 @@
"test:front:watch": "cross-env IS_EE=true jest --config ./jest.config.front.js --watchAll",
"test:front:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js",
"test:front:watch:ce": "cross-env IS_EE=false jest --config ./jest.config.front.js --watchAll",
"test:front:ce:cov": "cross-env IS_EE=false jest --config ./jest.config.front.js --coverage --collectCoverageFrom='<rootDir>/packages/core/admin/admin/**/*.js' --coverageDirectory='<rootDir>/packages/core/admin/coverage'"
"test:front:ce:cov": "cross-env IS_EE=false jest --config ./jest.config.front.js --coverage"
},
"dependencies": {
"@babel/core": "7.18.10",
@ -67,7 +67,7 @@
"codemirror": "^5.65.6",
"cross-env": "^7.0.3",
"css-loader": "6.7.1",
"date-fns": "2.28.0",
"date-fns": "2.29.2",
"dotenv": "8.5.1",
"esbuild-loader": "^2.19.0",
"execa": "^1.0.0",

View File

@ -47,7 +47,7 @@ module.exports = {
configurable: false,
required: true,
},
lastUsed: {
lastUsedAt: {
type: 'datetime',
configurable: false,
required: false,

View File

@ -100,9 +100,9 @@ module.exports = {
attributes.description = trim(body.description);
}
// Don't allow updating lastUsed time
if (has(attributes, 'lastUsed')) {
throw new ApplicationError('lastUsed cannot be updated');
// Don't allow updating lastUsedAt time
if (has(attributes, 'lastUsedAt')) {
throw new ApplicationError('lastUsedAt cannot be updated');
}
await validateApiTokenUpdateInput(attributes);

View File

@ -11,7 +11,15 @@ describe('API Token', () => {
hexedString: '6170692d746f6b656e5f746573742d72616e646f6d2d6279746573',
};
const SELECT_FIELDS = ['id', 'name', 'description', 'lastUsed', 'type', 'createdAt', 'updatedAt'];
const SELECT_FIELDS = [
'id',
'name',
'description',
'lastUsedAt',
'type',
'createdAt',
'updatedAt',
];
beforeAll(() => {
jest

View File

@ -14,11 +14,11 @@ const constants = require('./constants');
*
* @property {number|string} id
* @property {string} name
* @property {string} [description]
* @property {string} description
* @property {string} accessKey
* @property {number} lastUsed
* @property {number} lastUsedAt
* @property {TokenType} type
* @property {(number|ApiTokenPermission)[]} [permissions]
* @property {(number|ApiTokenPermission)[]} permissions
*/
/**
@ -26,15 +26,20 @@ const constants = require('./constants');
*
* @property {number|string} id
* @property {string} action
* @property {ApiToken|number} [token]
* @property {ApiToken|number} token
*/
/** @constant {Array<string>} */
const SELECT_FIELDS = ['id', 'name', 'description', 'lastUsed', 'type', 'createdAt', 'updatedAt'];
const SELECT_FIELDS = ['id', 'name', 'description', 'lastUsedAt', 'type', 'createdAt', 'updatedAt'];
/** @constant {Array<string>} */
const POPULATE_FIELDS = ['permissions'];
/**
* Assert that a token's permissions attribute is valid for its type
*
* @param {ApiToken} token
*/
const assertCustomTokenPermissionsValidity = (attributes) => {
// Ensure non-custom tokens doesn't have permissions
if (attributes.type !== constants.API_TOKEN_TYPE.CUSTOM && !isEmpty(attributes.permissions)) {
@ -48,12 +53,54 @@ const assertCustomTokenPermissionsValidity = (attributes) => {
};
/**
* Flatten a token's database permissions objects to an array of strings
*
* @param {ApiToken} token
*
* @returns {ApiToken}
*/
const flattenTokenPermissions = (token) => {
if (!token) return token;
return {
...token,
permissions: isArray(token.permissions) ? map('action', token.permissions) : token.permissions,
};
};
/**
* Get a token
*
* @param {Object} whereParams
* @param {string|number} [whereParams.id]
* @param {string} [whereParams.name]
* @param {number} [whereParams.lastUsed]
* @param {string} [whereParams.description]
* @param {string} [whereParams.accessKey]
* @param {string|number} whereParams.id
* @param {string} whereParams.name
* @param {number} whereParams.lastUsedAt
* @param {string} whereParams.description
* @param {string} whereParams.accessKey
*
* @returns {Promise<Omit<ApiToken, 'accessKey'> | null>}
*/
const getBy = async (whereParams = {}) => {
if (Object.keys(whereParams).length === 0) {
return null;
}
const token = await strapi
.query('admin::api-token')
.findOne({ select: SELECT_FIELDS, populate: POPULATE_FIELDS, where: whereParams });
if (!token) return token;
return flattenTokenPermissions(token);
};
/**
* Check if token exists
*
* @param {Object} whereParams
* @param {string|number} whereParams.id
* @param {string} whereParams.name
* @param {number} whereParams.lastUsedAt
* @param {string} whereParams.description
* @param {string} whereParams.accessKey
*
* @returns {Promise<boolean>}
*/
@ -64,6 +111,8 @@ const exists = async (whereParams = {}) => {
};
/**
* Return a secure sha512 hash of an accessKey
*
* @param {string} accessKey
*
* @returns {string}
@ -76,11 +125,13 @@ const hash = (accessKey) => {
};
/**
* Create a token and its permissions
*
* @param {Object} attributes
* @param {TokenType} attributes.type
* @param {string} attributes.name
* @param {string[]} [attributes.permissions]
* @param {string} [attributes.description]
* @param {string[]} attributes.permissions
* @param {string} attributes.description
*
* @returns {Promise<ApiToken>}
*/
@ -177,6 +228,8 @@ For security reasons, prefer storing the secret in an environment variable and r
};
/**
* Return a list of all tokens and their permissions
*
* @returns {Promise<Omit<ApiToken, 'accessKey'>>}
*/
const list = async () => {
@ -187,10 +240,12 @@ const list = async () => {
});
if (!tokens) return tokens;
return tokens.map((token) => mapTokenPermissions(token));
return tokens.map((token) => flattenTokenPermissions(token));
};
/**
* Revoke (delete) a token
*
* @param {string|number} id
*
* @returns {Promise<Omit<ApiToken, 'accessKey'>>}
@ -202,6 +257,8 @@ const revoke = async (id) => {
};
/**
* Retrieve a token by id
*
* @param {string|number} id
*
* @returns {Promise<Omit<ApiToken, 'accessKey'>>}
@ -211,6 +268,8 @@ const getById = async (id) => {
};
/**
* Retrieve a token by name
*
* @param {string} name
*
* @returns {Promise<Omit<ApiToken, 'accessKey'>>}
@ -220,13 +279,15 @@ const getByName = async (name) => {
};
/**
* Update a token and its permissions
*
* @param {string|number} id
* @param {Object} attributes
* @param {TokenType} attributes.type
* @param {string} attributes.name
* @param {number} attributes.lastUsed
* @param {string[]} [attributes.permissions]
* @param {string} [attributes.description]
* @param {number} attributes.lastUsedAt
* @param {string[]} attributes.permissions
* @param {string} attributes.description
*
* @returns {Promise<Omit<ApiToken, 'accessKey'>>}
*/
@ -334,37 +395,6 @@ const update = async (id, attributes) => {
};
};
/**
* @param {Object} whereParams
* @param {string|number} [whereParams.id]
* @param {string} [whereParams.name]
* @param {number} [whereParams.lastUsed]
* @param {string} [whereParams.description]
* @param {string} [whereParams.accessKey]
*
* @returns {Promise<Omit<ApiToken, 'accessKey'> | null>}
*/
const getBy = async (whereParams = {}) => {
if (Object.keys(whereParams).length === 0) {
return null;
}
const token = await strapi
.query('admin::api-token')
.findOne({ select: SELECT_FIELDS, populate: POPULATE_FIELDS, where: whereParams });
if (!token) return token;
return mapTokenPermissions(token);
};
const mapTokenPermissions = (token) => {
if (!token) return token;
return {
...token,
permissions: isArray(token.permissions) ? map('action', token.permissions) : token.permissions,
};
};
module.exports = {
create,
regenerate,

View File

@ -40,7 +40,7 @@ describe('API Token Auth Strategy', () => {
const response = await apiTokenStrategy.authenticate(ctx);
expect(getBy).toHaveBeenCalledWith({ accessKey: 'api-token_tests-hashed-access-key' });
expect(update).toHaveBeenCalledWith(apiToken.id, { lastUsed: expect.any(Date) });
expect(update).toHaveBeenCalledWith(apiToken.id, { lastUsedAt: expect.any(Date) });
expect(response).toStrictEqual({ authenticated: true, credentials: apiToken });
});
@ -115,7 +115,7 @@ describe('API Token Auth Strategy', () => {
// mock ability.can (since normally it only gets added to credentials in authenticate)
const ability = {
can: jest.fn(ability => {
can: jest.fn((ability) => {
if (customApiToken.permissions.includes(ability)) return true;
return false;
}),

View File

@ -38,9 +38,9 @@ const authenticate = async (ctx) => {
return { authenticated: false };
}
// update lastUsed
// update lastUsedAt
await apiTokenService.update(apiToken.id, {
lastUsed: new Date(),
lastUsedAt: new Date(),
});
if (apiToken.type === constants.API_TOKEN_TYPE.CUSTOM) {

View File

@ -1,6 +1,6 @@
'use strict';
const { omit, map } = require('lodash');
const { omit } = require('lodash');
const { createStrapiInstance } = require('../../../../../test/helpers/strapi');
const { createAuthRequest } = require('../../../../../test/helpers/request');
@ -139,7 +139,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: body.type,
id: expect.any(Number),
createdAt: expect.any(String),
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -198,7 +198,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: body.type,
id: expect.any(Number),
createdAt: expect.any(String),
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -226,7 +226,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: body.type,
id: expect.any(Number),
createdAt: expect.any(String),
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -278,7 +278,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: body.type,
id: expect.any(Number),
createdAt: expect.any(String),
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -305,7 +305,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: body.type,
id: expect.any(Number),
createdAt: expect.any(String),
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -332,7 +332,16 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
expect(res.statusCode).toBe(200);
expect(res.body.data.length).toBe(4);
expect(res.body.data).toMatchObject(map(tokens, (t) => omit(t, ['accessKey'])));
// check that each token exists in data
tokens.forEach((token) => {
const t = res.body.data.find((t) => t.id === token.id);
if (t.permissions) {
t.permissions = t.permissions.sort();
// eslint-disable-next-line no-param-reassign
token.permissions = token.permissions.sort();
}
expect(t).toMatchObject(omit(token, ['accessKey']));
});
});
test('Deletes a token (successfully)', async () => {
@ -351,7 +360,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -384,7 +393,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -408,7 +417,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -466,7 +475,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: updatedBody.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
// expect(updatedRes.body.data.updated)
@ -518,7 +527,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -577,7 +586,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});
@ -603,7 +612,7 @@ describe('Admin API Token v2 CRUD (e2e)', () => {
type: token.type,
id: token.id,
createdAt: token.createdAt,
lastUsed: null,
lastUsedAt: null,
updatedAt: expect.any(String),
});
});

View File

@ -20,7 +20,6 @@ const apiTokenUpdateSchema = yup
description: yup.string().nullable(),
type: yup.string().oneOf(Object.values(constants.API_TOKEN_TYPE)).notNull(),
permissions: yup.array().of(yup.string()).nullable(),
lastUsed: yup.date().nullable(),
})
.noUnknown();

View File

@ -31,7 +31,7 @@
"test:unit": "jest --verbose"
},
"dependencies": {
"date-fns": "2.28.0",
"date-fns": "2.29.2",
"debug": "4.3.1",
"fs-extra": "10.0.0",
"knex": "1.0.7",

View File

@ -5,4 +5,6 @@ module.exports = {
...baseConfig,
displayName: (pkg.strapi && pkg.strapi.name) || pkg.name,
roots: [__dirname],
collectCoverageFrom: ['<rootDir>/packages/core/helper-plugin/lib/src/**/*.js'],
coverageDirectory: '<rootDir>/packages/core/helper-plugin/coverage',
};

View File

@ -45,14 +45,9 @@ const TableHead = ({
const isSorted = sortBy === name;
const isUp = sortOrder === 'ASC';
const intlLabel = formatMessage({
id: `global.table.header.${name}`,
defaultMessage: label,
});
const sortLabel = formatMessage(
{ id: 'components.TableHeader.sort', defaultMessage: 'Sort on {label}' },
{ label: intlLabel }
{ label }
);
const handleClickSort = (shouldAllowClick = true) => {
@ -80,15 +75,15 @@ const TableHead = ({
)
}
>
<Tooltip label={isSortable ? sortLabel : intlLabel}>
<Tooltip label={isSortable ? sortLabel : label}>
<Typography
textColor="neutral600"
as={!isSorted && isSortable ? 'button' : 'span'}
label={intlLabel}
label={label}
onClick={() => handleClickSort(!isSorted)}
variant="sigma"
>
{intlLabel}
{label}
</Typography>
</Tooltip>
</Th>

View File

@ -34,7 +34,7 @@
"prepublishOnly": "npm run build",
"storybook": "start-storybook -p 6006",
"test:front": "jest --config ./jest.config.front.js",
"test:front:cov": "jest --config ./jest.config.front.js --coverage --collectCoverageFrom='<rootDir>/packages/core/helper-plugin/lib/src/**/*.js' --coverageDirectory='<rootDir>/packages/core/helper-plugin/coverage'",
"test:front:cov": "jest --config ./jest.config.front.js --coverage",
"test:front:watch": "jest --config ./jest.config.front.js --watchAll",
"watch": "yarn create:index && cross-env NODE_ENV=development webpack-cli -w"
},
@ -45,7 +45,7 @@
"@fortawesome/free-solid-svg-icons": "^5.15.3",
"@fortawesome/react-fontawesome": "^0.2.0",
"axios": "0.27.2",
"date-fns": "2.28.0",
"date-fns": "2.29.2",
"formik": "^2.2.6",
"immer": "9.0.6",
"invariant": "^2.2.1",

View File

@ -34,7 +34,7 @@ const createContentAPI = (/* strapi */) => {
Promise.all(
uniq(actions).map((action) =>
providers.action.register(action).catch(() => {
console.log('Key already exists', action);
// console.log('Key already exists', action);
})
)
);

View File

@ -28,7 +28,7 @@
"@strapi/utils": "4.3.4",
"byte-size": "7.0.1",
"cropperjs": "1.5.12",
"date-fns": "2.28.0",
"date-fns": "2.29.2",
"fs-extra": "10.0.0",
"immer": "9.0.15",
"koa-range": "0.3.0",

View File

@ -36,7 +36,7 @@
},
"dependencies": {
"@sindresorhus/slugify": "1.1.0",
"date-fns": "2.28.0",
"date-fns": "2.29.2",
"http-errors": "1.8.1",
"lodash": "4.17.21",
"yup": "0.32.9"

View File

@ -9,8 +9,12 @@ module.exports = () => ({
},
include: [
// Include the root directory
// Include root files
'./',
// Include all ts files
'./**/*.ts',
// Include all js files
'./**/*.js',
// Force the JSON files in the src folder to be included
'src/**/*.json',
],
@ -25,7 +29,7 @@ module.exports = () => ({
// Do not include admin files in the server compilation
'src/admin/',
// Do not include test files
'**/*.test.ts',
'**/*.test.*',
// Do not include plugins in the server compilation
'src/plugins/**',
],

View File

@ -36,7 +36,7 @@
"test": "echo \"no tests yet\""
},
"dependencies": {
"@sentry/node": "6.19.6",
"@sentry/node": "6.19.7",
"chalk": "^4.1.1",
"execa": "^1.0.0",
"fs-extra": "10.0.0",

View File

@ -1,7 +1,65 @@
{
"CMEditViewCopyLocale.copy-failure": "Échec de la copie de la locale",
"CMEditViewCopyLocale.copy-success": "Locale copiée",
"CMEditViewCopyLocale.copy-text": "Remplir à partir d'une autre locale",
"CMEditViewCopyLocale.submit-text": "Oui, remplir",
"CMListView.popover.display-locales.label": "Afficher les locales traduites",
"CheckboxConfirmation.Modal.body": "Voulez-vous le désactiver ?",
"CheckboxConfirmation.Modal.button-confirm": "Oui, désactiver",
"CheckboxConfirmation.Modal.content": "La désactivation de la localisation entraînera la suppression de tout votre contenu, à l'exception de celui associé à votre locale par défaut (si elle existe).",
"Field.localized": "Cette valeur est unique pour la locale sélectionnée",
"Field.not-localized": "Cette valeur est commune à toutes les locales",
"Settings.list.actions.add": "Ajouter une locale",
"Settings.list.actions.delete": "Supprimer une locale",
"Settings.list.actions.deleteAdditionalInfos": "Cela supprimera les versions locales actives <em>(d'Internationalisation)</em>.",
"Settings.list.actions.edit": "Modifier une locale",
"Settings.list.description": "Configurer les paramètres du plugin d'internationalisation",
"Settings.list.empty.description": "Ce n'est pas un comportement habituel, ce qui signifie que vous avez peut-être modifié la base de données manuellement. Assurez-vous d'avoir au moins une locale enregistrée dans votre base de données afin de pouvoir utiliser Strapi correctement.",
"Settings.list.empty.title": "Il n'y a pas de locale",
"Settings.locales.default": "Par défaut",
"Settings.locales.list.sort.default": "Trier par la locale par défaut",
"Settings.locales.list.sort.displayName": "Trier par nom d'affichage",
"Settings.locales.list.sort.id": "Trier par ID",
"Settings.locales.modal.advanced": "Paramètres avancés",
"Settings.locales.modal.advanced.setAsDefault": "Définir comme locale par défaut",
"Settings.locales.modal.advanced.setAsDefault.hint": "Une locale par défaut est requise, changez-la en en sélectionnant une autre",
"Settings.locales.modal.advanced.settings": "Paramètres",
"Settings.locales.modal.base": "Paramètres de base",
"Settings.locales.modal.create.alreadyExist": "Cette locale existe déjà",
"Settings.locales.modal.create.defaultLocales.loading": "Chargement des locales disponibles...",
"Settings.locales.modal.create.success": "Locale ajoutée avec succès",
"Settings.locales.modal.create.tab.label": "Navigation entre les paramètres de base et les paramètres avancés de l'I18N",
"Settings.locales.modal.delete.confirm": "Oui, supprimer",
"Settings.locales.modal.delete.message": "La suppression de cette locale entraîne la suppression de tout le contenu associé. Si vous souhaitez conserver du contenu, veillez à le réaffecter à une autre locale au préalable.",
"Settings.locales.modal.delete.secondMessage": "Voulez-vous supprimer cette locale ?",
"Settings.locales.modal.delete.success": "Locale supprimée avec succès",
"Settings.locales.modal.edit.confirmation": "Terminer",
"Settings.locales.modal.edit.locales.label": "Locales",
"Settings.locales.modal.edit.success": "Locale modifiée avec succès",
"Settings.locales.modal.edit.tab.label": "Navigation entre les paramètres de base et les paramètres avancés de l'I18N",
"Settings.locales.modal.locales.displayName": "Nom d'affichage de la locale",
"Settings.locales.modal.locales.displayName.description": "La locale sera affichée sous ce nom dans le panneau d'administration.",
"Settings.locales.modal.locales.displayName.error": "Le nom d'affichage de la locale doit avoir moins de 50 caractères.",
"Settings.locales.modal.locales.label": "Locales",
"Settings.locales.modal.locales.loaded": "Les locales ont été chargées avec succès.",
"Settings.locales.modal.title": "Configurations",
"Settings.locales.row.default-locale": "Locale par défaut",
"Settings.locales.row.displayName": "Nom d'affichage",
"Settings.locales.row.id": "ID",
"Settings.permissions.loading": "Chargement des autorisations",
"Settings.permissions.read.denied.description": "Afin de pouvoir lire ceci, assurez de contacter l'administrateur de votre système.",
"Settings.permissions.read.denied.title": "Vous n'avez pas les autorisations nécessaires pour accéder à ce contenu.",
"actions.select-locale": "Sélectionnez une locale",
"components.Select.locales.not-available": "Aucun contenu disponible",
"plugin.description.long": "Créez, lisez et modifiez votre contenu en différentes langues depuis le panel d'administration et votre API.",
"plugin.description.short": "Créez, lisez et modifiez votre contenu en différentes langues depuis le panel d'administration et votre API.",
"plugin.name": "Internationalisation"
}
"plugin.name": "Internationalisation",
"plugin.schema.i18n.ensure-unique-localization": "Les champs uniques doivent avoir une locale",
"plugin.schema.i18n.localized.description": "Donne la possibilité d'avoir du contenu dans différentes locales",
"plugin.schema.i18n.localized.description-content-type": "Donne la possibilité d'avoir du contenu dans différentes locales",
"plugin.schema.i18n.localized.description-field": "Le champ peut avoir des valeurs différentes dans chaque locale",
"plugin.schema.i18n.localized.label": "Activer la localisation pour ce type de contenu",
"plugin.schema.i18n.localized.label-content-type": "Activer la localisation pour ce type de contenu",
"plugin.schema.i18n.localized.label-field": "Activer la localisation pour ce champ"
}

View File

@ -24,7 +24,7 @@
"test:unit": "jest --verbose"
},
"dependencies": {
"@sentry/node": "6.19.6"
"@sentry/node": "6.19.7"
},
"peerDependencies": {
"@strapi/strapi": "^4.0.0"

View File

@ -45,7 +45,9 @@ describe('Auth API', () => {
body: {},
});
expect(res.statusCode).toBe(403);
expect(res.statusCode).toBe(400);
expect(res.body.error.name).toBe('ApplicationError');
expect(res.body.error.message).toBe('You must be authenticated to reset your password');
});
test('Fails on invalid confirmation password', async () => {

View File

@ -5,15 +5,18 @@ cd "$(dirname "$0")/.."
set -e
version=""
distTag=""
version=$VERSION
distTag=$DIST_TAG
echo "Please enter the version you want to publish"
read -r version
if [[ -z "$version" ]]; then
echo "Please enter the version you want to publish"
read -r version
fi
echo "Please enter the dist-tag you want to publish with"
read -r distTag
if [[ -z "$distTag" ]]; then
echo "Please enter the dist-tag you want to publish with"
read -r distTag
fi
# publish packages
./node_modules/.bin/lerna publish --no-push --no-git-tag-version --force-publish --exact "$version" --dist-tag "$distTag"
./node_modules/.bin/lerna publish --no-push --no-git-tag-version --force-publish --exact "$version" --dist-tag "$distTag" $@

1531
yarn.lock

File diff suppressed because it is too large Load Diff