mirror of
https://github.com/strapi/strapi.git
synced 2025-12-25 06:04:29 +00:00
Merge branch 'api-token-v2/fix-failing-e2e-tests' into api-token-v2/regenerate-tokens-api
This commit is contained in:
commit
d4c3c6e9af
@ -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',
|
||||
|
||||
2
.github/actions/check-pr-status/package.json
vendored
2
.github/actions/check-pr-status/package.json
vendored
@ -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
23
.github/workflows/nightly.yml
vendored
Normal 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
44
.github/workflows/pages.yml
vendored
Normal 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
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
1105
docs/yarn.lock
1105
docs/yarn.lock
File diff suppressed because it is too large
Load Diff
@ -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",
|
||||
|
||||
@ -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,
|
||||
},
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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,
|
||||
},
|
||||
},
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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 don’t 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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "બીજું રિલેશનલ ફીલ્ડ દાખલ કરો",
|
||||
|
||||
@ -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": "הגדירו את הזכויות הניתנות לתפקיד",
|
||||
|
||||
@ -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": "एक और रिलेशनल फील्ड डालें",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "다른 릴레이션 필드 추가",
|
||||
|
||||
@ -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": "മറ്റൊരു റിലേഷണൽ ഫീൽഡ് ചേർക്കുക",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "Добавить еще одно связанное поле",
|
||||
|
||||
@ -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": "अन्यं सम्बन्धक्षेत्रं सम्मिलितं कुर्वन्तु",
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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": "บทบาทที่สร้าง",
|
||||
|
||||
@ -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": "内容类型有关联冲突",
|
||||
|
||||
@ -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": "插入額外的關聯欄位",
|
||||
|
||||
@ -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',
|
||||
};
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -47,7 +47,7 @@ module.exports = {
|
||||
configurable: false,
|
||||
required: true,
|
||||
},
|
||||
lastUsed: {
|
||||
lastUsedAt: {
|
||||
type: 'datetime',
|
||||
configurable: false,
|
||||
required: false,
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
}),
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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),
|
||||
});
|
||||
});
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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',
|
||||
};
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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);
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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/**',
|
||||
],
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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"
|
||||
}
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 () => {
|
||||
|
||||
@ -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" $@
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user