@strapi/plugin-users-permissions 0.0.0-next.e50ef5e2ea57ecf3da5bcf308508b51ee3c0deca → 0.0.0-next.e5b87a54008c9de2b3286a4774635dcf69895d9b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +8 -1
- package/admin/src/components/Policies/index.jsx +1 -0
- package/admin/src/components/UsersPermissions/index.jsx +1 -0
- package/admin/src/pages/AdvancedSettings/index.jsx +1 -0
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
- package/admin/src/pages/Providers/index.jsx +74 -76
- package/admin/src/pages/Roles/pages/CreatePage.jsx +26 -8
- package/admin/src/pages/Roles/pages/EditPage.jsx +13 -7
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +92 -93
- package/admin/src/translations/de.json +27 -2
- package/admin/src/translations/en.json +1 -0
- package/dist/admin/components/FormModal/Input/index.js.map +1 -1
- package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
- package/dist/admin/components/Policies/index.js +1 -0
- package/dist/admin/components/Policies/index.js.map +1 -1
- package/dist/admin/components/Policies/index.mjs +1 -0
- package/dist/admin/components/Policies/index.mjs.map +1 -1
- package/dist/admin/components/UsersPermissions/index.js +1 -0
- package/dist/admin/components/UsersPermissions/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/index.mjs +1 -0
- package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js +1 -0
- package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs +1 -0
- package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
- package/dist/admin/pages/Providers/index.js +84 -88
- package/dist/admin/pages/Providers/index.js.map +1 -1
- package/dist/admin/pages/Providers/index.mjs +84 -88
- package/dist/admin/pages/Providers/index.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js +15 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.mjs +17 -3
- package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +14 -3
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs +15 -4
- package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +96 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +96 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/de.json.js +27 -2
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +27 -2
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/server/bootstrap/index.js +28 -7
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/bootstrap/index.mjs +28 -7
- package/dist/server/bootstrap/index.mjs.map +1 -1
- package/dist/server/config.js +16 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +16 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/auth.js +204 -3
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +204 -3
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js +3 -3
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/content-manager-user.mjs +3 -3
- package/dist/server/controllers/content-manager-user.mjs.map +1 -1
- package/dist/server/controllers/validation/user.js +6 -1
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs +6 -1
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/resolvers-configs.js.map +1 -1
- package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/routes/content-api/auth.js +155 -91
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs +155 -91
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js +11 -9
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/index.mjs +11 -9
- package/dist/server/routes/content-api/index.mjs.map +1 -1
- package/dist/server/routes/content-api/permissions.js +14 -7
- package/dist/server/routes/content-api/permissions.js.map +1 -1
- package/dist/server/routes/content-api/permissions.mjs +14 -7
- package/dist/server/routes/content-api/permissions.mjs.map +1 -1
- package/dist/server/routes/content-api/role.js +61 -27
- package/dist/server/routes/content-api/role.js.map +1 -1
- package/dist/server/routes/content-api/role.mjs +61 -27
- package/dist/server/routes/content-api/role.mjs.map +1 -1
- package/dist/server/routes/content-api/user.js +119 -57
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/user.mjs +119 -57
- package/dist/server/routes/content-api/user.mjs.map +1 -1
- package/dist/server/routes/content-api/validation.js +217 -0
- package/dist/server/routes/content-api/validation.js.map +1 -0
- package/dist/server/routes/content-api/validation.mjs +215 -0
- package/dist/server/routes/content-api/validation.mjs.map +1 -0
- package/dist/server/services/constants.js +19 -0
- package/dist/server/services/constants.js.map +1 -0
- package/dist/server/services/constants.mjs +17 -0
- package/dist/server/services/constants.mjs.map +1 -0
- package/dist/server/services/jwt.js +45 -2
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs +45 -2
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/role.mjs.map +1 -1
- package/dist/server/services/user.js +29 -20
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +29 -20
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/services/users-permissions.js +12 -3
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +12 -3
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/package.json +13 -12
- package/server/bootstrap/index.js +31 -0
- package/server/config.js +22 -0
- package/server/controllers/auth.js +246 -8
- package/server/controllers/content-manager-user.js +3 -4
- package/server/controllers/validation/user.js +12 -1
- package/server/routes/content-api/auth.js +119 -71
- package/server/routes/content-api/index.js +11 -4
- package/server/routes/content-api/permissions.js +14 -7
- package/server/routes/content-api/role.js +57 -27
- package/server/routes/content-api/user.js +108 -51
- package/server/routes/content-api/validation.js +250 -0
- package/server/services/constants.js +9 -0
- package/server/services/jwt.js +50 -2
- package/server/services/user.js +11 -0
- package/server/services/users-permissions.js +6 -2
|
@@ -78,7 +78,14 @@ const SubCategory = ({ subCategory }) => {
|
|
|
78
78
|
const name = `${action.name}.enabled`;
|
|
79
79
|
|
|
80
80
|
return (
|
|
81
|
-
<Grid.Item
|
|
81
|
+
<Grid.Item
|
|
82
|
+
col={4}
|
|
83
|
+
xs={12}
|
|
84
|
+
s={6}
|
|
85
|
+
key={action.name}
|
|
86
|
+
direction="column"
|
|
87
|
+
alignItems="stretch"
|
|
88
|
+
>
|
|
82
89
|
<CheckboxWrapper isActive={isActionSelected(action.name)} padding={2} hasRadius>
|
|
83
90
|
<Checkbox
|
|
84
91
|
checked={get(modifiedData, name, false)}
|
|
@@ -144,7 +144,7 @@ export const ProvidersPage = () => {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
return (
|
|
147
|
-
<
|
|
147
|
+
<Page.Main>
|
|
148
148
|
<Page.Title>
|
|
149
149
|
{formatMessage(
|
|
150
150
|
{ id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
|
|
@@ -156,83 +156,81 @@ export const ProvidersPage = () => {
|
|
|
156
156
|
}
|
|
157
157
|
)}
|
|
158
158
|
</Page.Title>
|
|
159
|
-
<
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
<
|
|
167
|
-
<
|
|
168
|
-
<
|
|
169
|
-
<
|
|
170
|
-
<
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
<
|
|
176
|
-
|
|
177
|
-
|
|
159
|
+
<Layouts.Header
|
|
160
|
+
title={formatMessage({
|
|
161
|
+
id: getTrad('HeaderNav.link.providers'),
|
|
162
|
+
defaultMessage: 'Providers',
|
|
163
|
+
})}
|
|
164
|
+
/>
|
|
165
|
+
<Layouts.Content>
|
|
166
|
+
<Table colCount={3} rowCount={providers.length + 1}>
|
|
167
|
+
<Thead>
|
|
168
|
+
<Tr>
|
|
169
|
+
<Th>
|
|
170
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
171
|
+
{formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
|
|
172
|
+
</Typography>
|
|
173
|
+
</Th>
|
|
174
|
+
<Th>
|
|
175
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
176
|
+
{formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
|
|
177
|
+
</Typography>
|
|
178
|
+
</Th>
|
|
179
|
+
<Th>
|
|
180
|
+
<Typography variant="sigma">
|
|
181
|
+
<VisuallyHidden>
|
|
182
|
+
{formatMessage({
|
|
183
|
+
id: 'global.settings',
|
|
184
|
+
defaultMessage: 'Settings',
|
|
185
|
+
})}
|
|
186
|
+
</VisuallyHidden>
|
|
187
|
+
</Typography>
|
|
188
|
+
</Th>
|
|
189
|
+
</Tr>
|
|
190
|
+
</Thead>
|
|
191
|
+
<Tbody>
|
|
192
|
+
{providers.map((provider) => (
|
|
193
|
+
<Tr
|
|
194
|
+
key={provider.name}
|
|
195
|
+
onClick={() => (canUpdate ? handleClickEdit(provider) : undefined)}
|
|
196
|
+
>
|
|
197
|
+
<Td width="45%">
|
|
198
|
+
<Typography fontWeight="semiBold" textColor="neutral800">
|
|
199
|
+
{provider.name}
|
|
178
200
|
</Typography>
|
|
179
|
-
</
|
|
180
|
-
<
|
|
181
|
-
<Typography
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
201
|
+
</Td>
|
|
202
|
+
<Td width="65%">
|
|
203
|
+
<Typography
|
|
204
|
+
textColor={provider.enabled ? 'success600' : 'danger600'}
|
|
205
|
+
data-testid={`enable-${provider.name}`}
|
|
206
|
+
>
|
|
207
|
+
{provider.enabled
|
|
208
|
+
? formatMessage({
|
|
209
|
+
id: 'global.enabled',
|
|
210
|
+
defaultMessage: 'Enabled',
|
|
211
|
+
})
|
|
212
|
+
: formatMessage({
|
|
213
|
+
id: 'global.disabled',
|
|
214
|
+
defaultMessage: 'Disabled',
|
|
215
|
+
})}
|
|
188
216
|
</Typography>
|
|
189
|
-
</
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
onClick={() => (canUpdate ? handleClickEdit(provider) : undefined)}
|
|
197
|
-
>
|
|
198
|
-
<Td width="45%">
|
|
199
|
-
<Typography fontWeight="semiBold" textColor="neutral800">
|
|
200
|
-
{provider.name}
|
|
201
|
-
</Typography>
|
|
202
|
-
</Td>
|
|
203
|
-
<Td width="65%">
|
|
204
|
-
<Typography
|
|
205
|
-
textColor={provider.enabled ? 'success600' : 'danger600'}
|
|
206
|
-
data-testid={`enable-${provider.name}`}
|
|
217
|
+
</Td>
|
|
218
|
+
<Td onClick={(e) => e.stopPropagation()}>
|
|
219
|
+
{canUpdate && (
|
|
220
|
+
<IconButton
|
|
221
|
+
onClick={() => handleClickEdit(provider)}
|
|
222
|
+
variant="ghost"
|
|
223
|
+
label="Edit"
|
|
207
224
|
>
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
</Typography>
|
|
218
|
-
</Td>
|
|
219
|
-
<Td onClick={(e) => e.stopPropagation()}>
|
|
220
|
-
{canUpdate && (
|
|
221
|
-
<IconButton
|
|
222
|
-
onClick={() => handleClickEdit(provider)}
|
|
223
|
-
variant="ghost"
|
|
224
|
-
label="Edit"
|
|
225
|
-
>
|
|
226
|
-
<Pencil />
|
|
227
|
-
</IconButton>
|
|
228
|
-
)}
|
|
229
|
-
</Td>
|
|
230
|
-
</Tr>
|
|
231
|
-
))}
|
|
232
|
-
</Tbody>
|
|
233
|
-
</Table>
|
|
234
|
-
</Layouts.Content>
|
|
235
|
-
</Page.Main>
|
|
225
|
+
<Pencil />
|
|
226
|
+
</IconButton>
|
|
227
|
+
)}
|
|
228
|
+
</Td>
|
|
229
|
+
</Tr>
|
|
230
|
+
))}
|
|
231
|
+
</Tbody>
|
|
232
|
+
</Table>
|
|
233
|
+
</Layouts.Content>
|
|
236
234
|
<FormModal
|
|
237
235
|
initialData={data[providerToEditName]}
|
|
238
236
|
isOpen={isOpen}
|
|
@@ -249,7 +247,7 @@ export const ProvidersPage = () => {
|
|
|
249
247
|
onSubmit={handleSubmit}
|
|
250
248
|
providerToEditName={providerToEditName}
|
|
251
249
|
/>
|
|
252
|
-
</
|
|
250
|
+
</Page.Main>
|
|
253
251
|
);
|
|
254
252
|
};
|
|
255
253
|
|
|
@@ -4,14 +4,21 @@ import {
|
|
|
4
4
|
Button,
|
|
5
5
|
Flex,
|
|
6
6
|
Grid,
|
|
7
|
-
Main,
|
|
8
7
|
Textarea,
|
|
9
8
|
TextInput,
|
|
10
9
|
Typography,
|
|
11
10
|
Field,
|
|
11
|
+
Box,
|
|
12
12
|
} from '@strapi/design-system';
|
|
13
13
|
import { Check } from '@strapi/icons';
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
Page,
|
|
16
|
+
useTracking,
|
|
17
|
+
useNotification,
|
|
18
|
+
useFetchClient,
|
|
19
|
+
Layouts,
|
|
20
|
+
BackButton,
|
|
21
|
+
} from '@strapi/strapi/admin';
|
|
15
22
|
import { Formik, Form } from 'formik';
|
|
16
23
|
import { useIntl } from 'react-intl';
|
|
17
24
|
import { useMutation } from 'react-query';
|
|
@@ -68,7 +75,7 @@ export const CreatePage = () => {
|
|
|
68
75
|
};
|
|
69
76
|
|
|
70
77
|
return (
|
|
71
|
-
<Main>
|
|
78
|
+
<Page.Main>
|
|
72
79
|
<Page.Title>
|
|
73
80
|
{formatMessage(
|
|
74
81
|
{ id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
|
|
@@ -86,7 +93,12 @@ export const CreatePage = () => {
|
|
|
86
93
|
<Layouts.Header
|
|
87
94
|
primaryAction={
|
|
88
95
|
!isLoadingPlugins && (
|
|
89
|
-
<Button
|
|
96
|
+
<Button
|
|
97
|
+
type="submit"
|
|
98
|
+
loading={mutation.isLoading}
|
|
99
|
+
startIcon={<Check />}
|
|
100
|
+
fullWidth
|
|
101
|
+
>
|
|
90
102
|
{formatMessage({
|
|
91
103
|
id: 'global.save',
|
|
92
104
|
defaultMessage: 'Save',
|
|
@@ -102,6 +114,12 @@ export const CreatePage = () => {
|
|
|
102
114
|
id: 'Settings.roles.create.description',
|
|
103
115
|
defaultMessage: 'Define the rights given to the role',
|
|
104
116
|
})}
|
|
117
|
+
navigationAction={
|
|
118
|
+
// The back link for mobile works differently; it is placed higher up in the DOM.
|
|
119
|
+
<Box display={{ initial: 'none', medium: 'block' }}>
|
|
120
|
+
<BackButton fallback=".." />
|
|
121
|
+
</Box>
|
|
122
|
+
}
|
|
105
123
|
/>
|
|
106
124
|
<Layouts.Content>
|
|
107
125
|
<Flex
|
|
@@ -125,7 +143,7 @@ export const CreatePage = () => {
|
|
|
125
143
|
</Typography>
|
|
126
144
|
|
|
127
145
|
<Grid.Root gap={4}>
|
|
128
|
-
<Grid.Item col={6} direction="column" alignItems="stretch">
|
|
146
|
+
<Grid.Item col={6} xs={12} direction="column" alignItems="stretch">
|
|
129
147
|
<Field.Root
|
|
130
148
|
name="name"
|
|
131
149
|
error={
|
|
@@ -141,11 +159,11 @@ export const CreatePage = () => {
|
|
|
141
159
|
defaultMessage: 'Name',
|
|
142
160
|
})}
|
|
143
161
|
</Field.Label>
|
|
144
|
-
<TextInput value={values.name || ''} onChange={handleChange} />
|
|
162
|
+
<TextInput type="text" value={values.name || ''} onChange={handleChange} />
|
|
145
163
|
<Field.Error />
|
|
146
164
|
</Field.Root>
|
|
147
165
|
</Grid.Item>
|
|
148
|
-
<Grid.Item col={6} direction="column" alignItems="stretch">
|
|
166
|
+
<Grid.Item col={6} xs={12} direction="column" alignItems="stretch">
|
|
149
167
|
<Field.Root
|
|
150
168
|
name="description"
|
|
151
169
|
error={
|
|
@@ -183,7 +201,7 @@ export const CreatePage = () => {
|
|
|
183
201
|
</Form>
|
|
184
202
|
)}
|
|
185
203
|
</Formik>
|
|
186
|
-
</Main>
|
|
204
|
+
</Page.Main>
|
|
187
205
|
);
|
|
188
206
|
};
|
|
189
207
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
Main,
|
|
5
4
|
Button,
|
|
6
5
|
Flex,
|
|
7
6
|
TextInput,
|
|
@@ -9,6 +8,7 @@ import {
|
|
|
9
8
|
Typography,
|
|
10
9
|
Grid,
|
|
11
10
|
Field,
|
|
11
|
+
Box,
|
|
12
12
|
} from '@strapi/design-system';
|
|
13
13
|
import { Check } from '@strapi/icons';
|
|
14
14
|
import {
|
|
@@ -86,7 +86,7 @@ export const EditPage = () => {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
return (
|
|
89
|
-
<Main>
|
|
89
|
+
<Page.Main>
|
|
90
90
|
<Page.Title>
|
|
91
91
|
{formatMessage(
|
|
92
92
|
{ id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
|
|
@@ -109,6 +109,7 @@ export const EditPage = () => {
|
|
|
109
109
|
type="submit"
|
|
110
110
|
loading={mutation.isLoading}
|
|
111
111
|
startIcon={<Check />}
|
|
112
|
+
fullWidth
|
|
112
113
|
>
|
|
113
114
|
{formatMessage({
|
|
114
115
|
id: 'global.save',
|
|
@@ -119,7 +120,12 @@ export const EditPage = () => {
|
|
|
119
120
|
}
|
|
120
121
|
title={role.name}
|
|
121
122
|
subtitle={role.description}
|
|
122
|
-
navigationAction={
|
|
123
|
+
navigationAction={
|
|
124
|
+
// The back link for mobile works differently; it is placed higher up in the DOM.
|
|
125
|
+
<Box display={{ initial: 'none', medium: 'block' }}>
|
|
126
|
+
<BackButton fallback=".." />
|
|
127
|
+
</Box>
|
|
128
|
+
}
|
|
123
129
|
/>
|
|
124
130
|
<Layouts.Content>
|
|
125
131
|
<Flex
|
|
@@ -143,7 +149,7 @@ export const EditPage = () => {
|
|
|
143
149
|
</Typography>
|
|
144
150
|
|
|
145
151
|
<Grid.Root gap={4}>
|
|
146
|
-
<Grid.Item col={6} direction="column" alignItems="stretch">
|
|
152
|
+
<Grid.Item col={6} xs={12} direction="column" alignItems="stretch">
|
|
147
153
|
<Field.Root
|
|
148
154
|
name="name"
|
|
149
155
|
error={
|
|
@@ -162,11 +168,11 @@ export const EditPage = () => {
|
|
|
162
168
|
defaultMessage: 'Name',
|
|
163
169
|
})}
|
|
164
170
|
</Field.Label>
|
|
165
|
-
<TextInput value={values.name || ''} onChange={handleChange} />
|
|
171
|
+
<TextInput type="text" value={values.name || ''} onChange={handleChange} />
|
|
166
172
|
<Field.Error />
|
|
167
173
|
</Field.Root>
|
|
168
174
|
</Grid.Item>
|
|
169
|
-
<Grid.Item col={6} direction="column" alignItems="stretch">
|
|
175
|
+
<Grid.Item col={6} xs={12} direction="column" alignItems="stretch">
|
|
170
176
|
<Field.Root
|
|
171
177
|
name="description"
|
|
172
178
|
error={
|
|
@@ -204,7 +210,7 @@ export const EditPage = () => {
|
|
|
204
210
|
</Form>
|
|
205
211
|
)}
|
|
206
212
|
</Formik>
|
|
207
|
-
</Main>
|
|
213
|
+
</Page.Main>
|
|
208
214
|
);
|
|
209
215
|
};
|
|
210
216
|
|
|
@@ -153,107 +153,106 @@ export const RolesListPage = () => {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
return (
|
|
156
|
-
<
|
|
156
|
+
<Page.Main>
|
|
157
157
|
<Page.Title>
|
|
158
158
|
{formatMessage(
|
|
159
159
|
{ id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
|
|
160
160
|
{ name: pageTitle }
|
|
161
161
|
)}
|
|
162
162
|
</Page.Title>
|
|
163
|
-
<
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
})}
|
|
186
|
-
</LinkButton>
|
|
187
|
-
) : null
|
|
188
|
-
}
|
|
189
|
-
/>
|
|
190
|
-
|
|
191
|
-
<Layouts.Action
|
|
192
|
-
startActions={
|
|
193
|
-
<SearchInput
|
|
194
|
-
label={formatMessage({
|
|
195
|
-
id: 'app.component.search.label',
|
|
196
|
-
defaultMessage: 'Search',
|
|
163
|
+
<Layouts.Header
|
|
164
|
+
title={formatMessage({
|
|
165
|
+
id: 'global.roles',
|
|
166
|
+
defaultMessage: 'Roles',
|
|
167
|
+
})}
|
|
168
|
+
subtitle={formatMessage({
|
|
169
|
+
id: 'Settings.roles.list.description',
|
|
170
|
+
defaultMessage: 'List of roles',
|
|
171
|
+
})}
|
|
172
|
+
primaryAction={
|
|
173
|
+
canCreate ? (
|
|
174
|
+
<LinkButton
|
|
175
|
+
to="new"
|
|
176
|
+
tag={NavLink}
|
|
177
|
+
onClick={() => trackUsage('willCreateRole')}
|
|
178
|
+
startIcon={<Plus />}
|
|
179
|
+
size="S"
|
|
180
|
+
fullWidth
|
|
181
|
+
>
|
|
182
|
+
{formatMessage({
|
|
183
|
+
id: getTrad('List.button.roles'),
|
|
184
|
+
defaultMessage: 'Add new role',
|
|
197
185
|
})}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
186
|
+
</LinkButton>
|
|
187
|
+
) : null
|
|
188
|
+
}
|
|
189
|
+
/>
|
|
190
|
+
|
|
191
|
+
<Layouts.Action
|
|
192
|
+
startActions={
|
|
193
|
+
<SearchInput
|
|
194
|
+
label={formatMessage({
|
|
195
|
+
id: 'app.component.search.label',
|
|
196
|
+
defaultMessage: 'Search',
|
|
197
|
+
})}
|
|
198
|
+
/>
|
|
199
|
+
}
|
|
200
|
+
/>
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
</Layouts.Root>
|
|
202
|
+
<Layouts.Content>
|
|
203
|
+
{!canRead && <Page.NoPermissions />}
|
|
204
|
+
{canRead && sortedRoles && sortedRoles?.length ? (
|
|
205
|
+
<Table colCount={colCount} rowCount={rowCount}>
|
|
206
|
+
<Thead>
|
|
207
|
+
<Tr>
|
|
208
|
+
<Th>
|
|
209
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
210
|
+
{formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
|
|
211
|
+
</Typography>
|
|
212
|
+
</Th>
|
|
213
|
+
<Th>
|
|
214
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
215
|
+
{formatMessage({
|
|
216
|
+
id: 'global.description',
|
|
217
|
+
defaultMessage: 'Description',
|
|
218
|
+
})}
|
|
219
|
+
</Typography>
|
|
220
|
+
</Th>
|
|
221
|
+
<Th>
|
|
222
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
223
|
+
{formatMessage({
|
|
224
|
+
id: 'global.users',
|
|
225
|
+
defaultMessage: 'Users',
|
|
226
|
+
})}
|
|
227
|
+
</Typography>
|
|
228
|
+
</Th>
|
|
229
|
+
<Th>
|
|
230
|
+
<VisuallyHidden>
|
|
231
|
+
{formatMessage({
|
|
232
|
+
id: 'global.actions',
|
|
233
|
+
defaultMessage: 'Actions',
|
|
234
|
+
})}
|
|
235
|
+
</VisuallyHidden>
|
|
236
|
+
</Th>
|
|
237
|
+
</Tr>
|
|
238
|
+
</Thead>
|
|
239
|
+
<TableBody
|
|
240
|
+
sortedRoles={sortedRoles}
|
|
241
|
+
canDelete={canDelete}
|
|
242
|
+
canUpdate={canUpdate}
|
|
243
|
+
permissions={PERMISSIONS}
|
|
244
|
+
setRoleToDelete={setRoleToDelete}
|
|
245
|
+
onDelete={[showConfirmDelete, setShowConfirmDelete]}
|
|
246
|
+
/>
|
|
247
|
+
</Table>
|
|
248
|
+
) : (
|
|
249
|
+
<EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />
|
|
250
|
+
)}
|
|
251
|
+
</Layouts.Content>
|
|
252
|
+
<Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>
|
|
253
|
+
<ConfirmDialog onConfirm={handleConfirmDelete} />
|
|
254
|
+
</Dialog.Root>
|
|
255
|
+
</Page.Main>
|
|
257
256
|
);
|
|
258
257
|
};
|
|
259
258
|
|
|
@@ -4,15 +4,25 @@
|
|
|
4
4
|
"EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
|
|
5
5
|
"EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
|
|
6
6
|
"EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
|
|
7
|
-
"EditForm.inputToggle.description.email-confirmation-redirection": "
|
|
8
|
-
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite
|
|
7
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
|
|
8
|
+
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
|
|
9
9
|
"EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
|
|
10
10
|
"EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
|
|
11
11
|
"EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
|
|
12
12
|
"EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
|
|
13
13
|
"EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
|
|
14
14
|
"EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
|
|
15
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
|
|
16
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
|
|
17
|
+
"EditPage.form.roles": "Rollen-Details",
|
|
18
|
+
"Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
|
|
15
19
|
"Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
|
|
20
|
+
"Email.template.reset_password": "Passwort zurücksetzen",
|
|
21
|
+
"Email.template.form.edit.label": "Vorlage bearbeiten",
|
|
22
|
+
"Email.template.table.action.label": "Aktion",
|
|
23
|
+
"Email.template.table.icon.label": "Icon",
|
|
24
|
+
"Email.template.table.name.label": "Name",
|
|
25
|
+
"Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
|
|
16
26
|
"HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
|
|
17
27
|
"HeaderNav.link.emailTemplates": "E-Mail-Templates",
|
|
18
28
|
"HeaderNav.link.providers": "Methoden",
|
|
@@ -44,10 +54,25 @@
|
|
|
44
54
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
45
55
|
"PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
|
|
46
56
|
"PopUpForm.header.edit.providers": "Anbieter bearbeiten",
|
|
57
|
+
"Providers.data.loaded": "Anbieter wurden geladen",
|
|
58
|
+
"Providers.status": "Status",
|
|
59
|
+
"Roles.empty": "Du hast noch keine Rollen.",
|
|
60
|
+
"Roles.empty.search": "Keine Rollen entsprechen der Suche.",
|
|
47
61
|
"Settings.roles.deleted": "Rolle gelöscht",
|
|
48
62
|
"Settings.roles.edited": "Rolle bearbeitet",
|
|
49
63
|
"Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
|
|
64
|
+
"components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
|
|
65
|
+
"components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
|
|
66
|
+
"components.Input.error.validation.max": "Der Wert ist zu hoch.",
|
|
67
|
+
"components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
|
|
68
|
+
"components.Input.error.validation.min": "Der Wert ist zu niedrig.",
|
|
69
|
+
"components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
|
|
70
|
+
"components.Input.error.validation.minSupMax": "Kann nicht größer sein",
|
|
71
|
+
"components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
|
|
72
|
+
"components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
|
|
73
|
+
"components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
|
|
50
74
|
"notification.success.submit": "Einstellungen aktualisiert",
|
|
75
|
+
"page.title": "Einstellungen - Rollen",
|
|
51
76
|
"plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
|
|
52
77
|
"plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
|
|
53
78
|
"plugin.name": "Nutzer- & Berechtigungen-Plugin",
|