@strapi/plugin-users-permissions 0.0.0-fd8e4c6bfa → 0.0.0-ffd0a215143bcafd0354d791533a57a084e53ffb

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.
Files changed (37) hide show
  1. package/admin/src/hooks/useFetchRole/index.js +3 -3
  2. package/admin/src/hooks/usePlugins/index.js +5 -3
  3. package/admin/src/pages/AdvancedSettings/index.js +1 -1
  4. package/admin/src/pages/AdvancedSettings/utils/api.js +7 -3
  5. package/admin/src/pages/EmailTemplates/utils/api.js +7 -3
  6. package/admin/src/pages/Providers/index.js +1 -12
  7. package/admin/src/pages/Providers/utils/api.js +7 -3
  8. package/admin/src/pages/Providers/utils/forms.js +15 -0
  9. package/admin/src/pages/Roles/CreatePage/index.js +3 -2
  10. package/admin/src/pages/Roles/EditPage/index.js +3 -2
  11. package/admin/src/pages/Roles/ListPage/index.js +1 -1
  12. package/admin/src/pages/Roles/ListPage/utils/api.js +6 -3
  13. package/admin/src/translations/dk.json +0 -1
  14. package/admin/src/translations/en.json +0 -1
  15. package/admin/src/translations/es.json +0 -1
  16. package/admin/src/translations/ko.json +0 -1
  17. package/admin/src/translations/pl.json +0 -1
  18. package/admin/src/translations/sv.json +31 -7
  19. package/admin/src/translations/tr.json +38 -1
  20. package/admin/src/translations/zh.json +40 -2
  21. package/admin/src/utils/index.js +0 -1
  22. package/documentation/content-api.yaml +53 -31
  23. package/package.json +14 -14
  24. package/server/bootstrap/grant-config.js +8 -0
  25. package/server/controllers/content-manager-user.js +2 -2
  26. package/server/controllers/user.js +2 -2
  27. package/server/controllers/validation/email-template.js +32 -8
  28. package/server/controllers/validation/user.js +34 -1
  29. package/server/services/index.js +2 -0
  30. package/server/services/permission.js +45 -0
  31. package/server/services/providers-registry.js +79 -12
  32. package/server/services/providers.js +1 -1
  33. package/server/services/user.js +18 -10
  34. package/server/services/users-permissions.js +15 -2
  35. package/server/strategies/users-permissions.js +30 -18
  36. package/server/utils/index.d.ts +2 -0
  37. package/admin/src/utils/axiosInstance.js +0 -36
@@ -1,13 +1,13 @@
1
1
  import { useCallback, useReducer, useEffect, useRef } from 'react';
2
- import { useNotification } from '@strapi/helper-plugin';
2
+ import { useNotification, useFetchClient } from '@strapi/helper-plugin';
3
3
  import reducer, { initialState } from './reducer';
4
- import axiosIntance from '../../utils/axiosInstance';
5
4
  import pluginId from '../../pluginId';
6
5
 
7
6
  const useFetchRole = (id) => {
8
7
  const [state, dispatch] = useReducer(reducer, initialState);
9
8
  const toggleNotification = useNotification();
10
9
  const isMounted = useRef(null);
10
+ const { get } = useFetchClient();
11
11
 
12
12
  useEffect(() => {
13
13
  isMounted.current = true;
@@ -29,7 +29,7 @@ const useFetchRole = (id) => {
29
29
  try {
30
30
  const {
31
31
  data: { role },
32
- } = await axiosIntance.get(`/${pluginId}/roles/${roleId}`);
32
+ } = await get(`/${pluginId}/roles/${roleId}`);
33
33
 
34
34
  // Prevent updating state on an unmounted component
35
35
  if (isMounted.current) {
@@ -1,10 +1,9 @@
1
1
  import { useCallback, useEffect, useReducer } from 'react';
2
- import { useNotification } from '@strapi/helper-plugin';
2
+ import { useNotification, useFetchClient } from '@strapi/helper-plugin';
3
3
  import { get } from 'lodash';
4
4
  import init from './init';
5
5
  import pluginId from '../../pluginId';
6
6
  import { cleanPermissions } from '../../utils';
7
- import axiosInstance from '../../utils/axiosInstance';
8
7
  import reducer, { initialState } from './reducer';
9
8
 
10
9
  const usePlugins = (shouldFetchData = true) => {
@@ -12,6 +11,7 @@ const usePlugins = (shouldFetchData = true) => {
12
11
  const [{ permissions, routes, isLoading }, dispatch] = useReducer(reducer, initialState, () =>
13
12
  init(initialState, shouldFetchData)
14
13
  );
14
+ const fetchClient = useFetchClient();
15
15
 
16
16
  const fetchPlugins = useCallback(async () => {
17
17
  try {
@@ -21,7 +21,7 @@ const usePlugins = (shouldFetchData = true) => {
21
21
 
22
22
  const [{ permissions }, { routes }] = await Promise.all(
23
23
  [`/${pluginId}/permissions`, `/${pluginId}/routes`].map(async (endpoint) => {
24
- const res = await axiosInstance.get(endpoint);
24
+ const res = await fetchClient.get(endpoint);
25
25
 
26
26
  return res.data;
27
27
  })
@@ -46,6 +46,8 @@ const usePlugins = (shouldFetchData = true) => {
46
46
  });
47
47
  }
48
48
  }
49
+
50
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
51
  }, [toggleNotification]);
50
52
 
51
53
  useEffect(() => {
@@ -152,7 +152,7 @@ const AdvancedSettingsPage = () => {
152
152
  type="submit"
153
153
  disabled={!canUpdate}
154
154
  startIcon={<Check />}
155
- size="L"
155
+ size="S"
156
156
  >
157
157
  {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
158
158
  </Button>
@@ -1,13 +1,17 @@
1
- import { axiosInstance, getRequestURL } from '../../../utils';
1
+ import { getFetchClient } from '@strapi/helper-plugin';
2
+ import { getRequestURL } from '../../../utils';
2
3
 
3
4
  const fetchData = async () => {
4
- const { data } = await axiosInstance.get(getRequestURL('advanced'));
5
+ const { get } = getFetchClient();
6
+ const { data } = await get(getRequestURL('advanced'));
5
7
 
6
8
  return data;
7
9
  };
8
10
 
9
11
  const putAdvancedSettings = (body) => {
10
- return axiosInstance.put(getRequestURL('advanced'), body);
12
+ const { put } = getFetchClient();
13
+
14
+ return put(getRequestURL('advanced'), body);
11
15
  };
12
16
 
13
17
  export { fetchData, putAdvancedSettings };
@@ -1,13 +1,17 @@
1
- import { axiosInstance, getRequestURL } from '../../../utils';
1
+ import { getFetchClient } from '@strapi/helper-plugin';
2
+ import { getRequestURL } from '../../../utils';
2
3
 
3
4
  const fetchData = async () => {
4
- const { data } = await axiosInstance.get(getRequestURL('email-templates'));
5
+ const { get } = getFetchClient();
6
+ const { data } = await get(getRequestURL('email-templates'));
5
7
 
6
8
  return data;
7
9
  };
8
10
 
9
11
  const putEmailTemplate = (body) => {
10
- return axiosInstance.put(getRequestURL('email-templates'), body);
12
+ const { put } = getFetchClient();
13
+
14
+ return put(getRequestURL('email-templates'), body);
11
15
  };
12
16
 
13
17
  export { fetchData, putEmailTemplate };
@@ -14,7 +14,6 @@ import {
14
14
  } from '@strapi/helper-plugin';
15
15
  import has from 'lodash/has';
16
16
  import upperFirst from 'lodash/upperFirst';
17
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
18
17
  import { HeaderLayout, Layout, ContentLayout } from '@strapi/design-system/Layout';
19
18
  import { Main } from '@strapi/design-system/Main';
20
19
  import { useNotifyAT } from '@strapi/design-system/LiveRegions';
@@ -163,16 +162,9 @@ export const ProvidersPage = () => {
163
162
  <LoadingIndicatorPage />
164
163
  ) : (
165
164
  <ContentLayout>
166
- <Table colCount={4} rowCount={rowCount + 1}>
165
+ <Table colCount={3} rowCount={rowCount + 1}>
167
166
  <Thead>
168
167
  <Tr>
169
- <Th>
170
- <Typography variant="sigma" textColor="neutral600">
171
- <VisuallyHidden>
172
- {formatMessage({ id: getTrad('Providers.image'), defaultMessage: 'Image' })}
173
- </VisuallyHidden>
174
- </Typography>
175
- </Th>
176
168
  <Th>
177
169
  <Typography variant="sigma" textColor="neutral600">
178
170
  {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
@@ -204,9 +196,6 @@ export const ProvidersPage = () => {
204
196
  condition: canUpdate,
205
197
  })}
206
198
  >
207
- <Td width="">
208
- <FontAwesomeIcon icon={provider.icon} />
209
- </Td>
210
199
  <Td width="45%">
211
200
  <Typography fontWeight="semiBold" textColor="neutral800">
212
201
  {provider.name}
@@ -1,9 +1,11 @@
1
- import { getRequestURL, axiosInstance } from '../../../utils';
1
+ import { getFetchClient } from '@strapi/helper-plugin';
2
+ import { getRequestURL } from '../../../utils';
2
3
 
3
4
  // eslint-disable-next-line import/prefer-default-export
4
5
  export const fetchData = async (toggleNotification) => {
5
6
  try {
6
- const { data } = await axiosInstance.get(getRequestURL('providers'));
7
+ const { get } = getFetchClient();
8
+ const { data } = await get(getRequestURL('providers'));
7
9
 
8
10
  return data;
9
11
  } catch (err) {
@@ -17,5 +19,7 @@ export const fetchData = async (toggleNotification) => {
17
19
  };
18
20
 
19
21
  export const putProvider = (body) => {
20
- return axiosInstance.put(getRequestURL('providers'), body);
22
+ const { put } = getFetchClient();
23
+
24
+ return put(getRequestURL('providers'), body);
21
25
  };
@@ -173,6 +173,21 @@ const forms = {
173
173
  },
174
174
  },
175
175
  ],
176
+ [
177
+ {
178
+ intlLabel: {
179
+ id: getTrad({ id: 'PopUpForm.Providers.jwksurl.label' }),
180
+ defaultMessage: 'JWKS URL',
181
+ },
182
+ name: 'jwksurl',
183
+ type: 'text',
184
+ placeholder: textPlaceholder,
185
+ size: 12,
186
+ validations: {
187
+ required: false,
188
+ },
189
+ },
190
+ ],
176
191
 
177
192
  [
178
193
  {
@@ -15,6 +15,7 @@ import { useIntl } from 'react-intl';
15
15
  import {
16
16
  useOverlayBlocker,
17
17
  SettingsPageTitle,
18
+ useFetchClient,
18
19
  useTracking,
19
20
  Form,
20
21
  useNotification,
@@ -24,7 +25,6 @@ import getTrad from '../../../utils/getTrad';
24
25
  import pluginId from '../../../pluginId';
25
26
  import { usePlugins } from '../../../hooks';
26
27
  import schema from './utils/schema';
27
- import axiosInstance from '../../../utils/axiosInstance';
28
28
 
29
29
  const EditPage = () => {
30
30
  const { formatMessage } = useIntl();
@@ -35,6 +35,7 @@ const EditPage = () => {
35
35
  const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();
36
36
  const { trackUsage } = useTracking();
37
37
  const permissionsRef = useRef();
38
+ const { post } = useFetchClient();
38
39
 
39
40
  const handleCreateRoleSubmit = async (data) => {
40
41
  // Set loading state
@@ -43,7 +44,7 @@ const EditPage = () => {
43
44
  try {
44
45
  const permissions = permissionsRef.current.getPermissions();
45
46
  // Update role in Strapi
46
- await axiosInstance.post(`/${pluginId}/roles`, { ...data, ...permissions, users: [] });
47
+ await post(`/${pluginId}/roles`, { ...data, ...permissions, users: [] });
47
48
  // Notify success
48
49
  trackUsage('didCreateRole');
49
50
  toggleNotification({
@@ -3,6 +3,7 @@ import { Formik } from 'formik';
3
3
  import { useIntl } from 'react-intl';
4
4
  import { useRouteMatch } from 'react-router-dom';
5
5
  import {
6
+ useFetchClient,
6
7
  useOverlayBlocker,
7
8
  SettingsPageTitle,
8
9
  LoadingIndicatorPage,
@@ -26,7 +27,6 @@ import getTrad from '../../../utils/getTrad';
26
27
  import pluginId from '../../../pluginId';
27
28
  import { usePlugins, useFetchRole } from '../../../hooks';
28
29
  import schema from './utils/schema';
29
- import axiosInstance from '../../../utils/axiosInstance';
30
30
 
31
31
  const EditPage = () => {
32
32
  const { formatMessage } = useIntl();
@@ -39,6 +39,7 @@ const EditPage = () => {
39
39
  const { isLoading: isLoadingPlugins, routes } = usePlugins();
40
40
  const { role, onSubmitSucceeded, isLoading: isLoadingRole } = useFetchRole(id);
41
41
  const permissionsRef = useRef();
42
+ const { put } = useFetchClient();
42
43
 
43
44
  const handleEditRoleSubmit = async (data) => {
44
45
  // Set loading state
@@ -47,7 +48,7 @@ const EditPage = () => {
47
48
  try {
48
49
  const permissions = permissionsRef.current.getPermissions();
49
50
  // Update role in Strapi
50
- await axiosInstance.put(`/${pluginId}/roles/${id}`, { ...data, ...permissions, users: [] });
51
+ await put(`/${pluginId}/roles/${id}`, { ...data, ...permissions, users: [] });
51
52
  // Notify success
52
53
  onSubmitSucceeded({ name: data.name, description: data.description });
53
54
  toggleNotification({
@@ -131,7 +131,7 @@ const RoleListPage = () => {
131
131
  })}
132
132
  primaryAction={
133
133
  <CheckPermissions permissions={permissions.createRole}>
134
- <Button onClick={handleNewRoleClick} startIcon={<Plus />} size="L">
134
+ <Button onClick={handleNewRoleClick} startIcon={<Plus />} size="S">
135
135
  {formatMessage({
136
136
  id: getTrad('List.button.roles'),
137
137
  defaultMessage: 'Add new role',
@@ -1,8 +1,10 @@
1
- import { getRequestURL, axiosInstance } from '../../../../utils';
1
+ import { getFetchClient } from '@strapi/helper-plugin';
2
+ import { getRequestURL } from '../../../../utils';
2
3
 
3
4
  export const fetchData = async (toggleNotification, notifyStatus) => {
4
5
  try {
5
- const { data } = await axiosInstance.get(getRequestURL('roles'));
6
+ const { get } = getFetchClient();
7
+ const { data } = await get(getRequestURL('roles'));
6
8
  notifyStatus('The roles have loaded successfully');
7
9
 
8
10
  return data;
@@ -18,7 +20,8 @@ export const fetchData = async (toggleNotification, notifyStatus) => {
18
20
 
19
21
  export const deleteData = async (id, toggleNotification) => {
20
22
  try {
21
- await axiosInstance.delete(`${getRequestURL('roles')}/${id}`);
23
+ const { del } = getFetchClient();
24
+ await del(`${getRequestURL('roles')}/${id}`);
22
25
  } catch (error) {
23
26
  toggleNotification({
24
27
  type: 'warning',
@@ -54,7 +54,6 @@
54
54
  "PopUpForm.header.edit.email-templates": "Redigér e-mail skabeloner",
55
55
  "PopUpForm.header.edit.providers": "Redigér udbydere",
56
56
  "Providers.data.loaded": "Providers hentet",
57
- "Providers.image": "Billede",
58
57
  "Providers.status": "Status",
59
58
  "Roles.empty": "Du har endnu ingen roller.",
60
59
  "Roles.empty.search": "Ingen roller matcher søgningen.",
@@ -54,7 +54,6 @@
54
54
  "PopUpForm.header.edit.email-templates": "Edit email template",
55
55
  "PopUpForm.header.edit.providers": "Edit Provider",
56
56
  "Providers.data.loaded": "Providers have been loaded",
57
- "Providers.image": "Image",
58
57
  "Providers.status": "Status",
59
58
  "Roles.empty": "You don't have any roles yet.",
60
59
  "Roles.empty.search": "No roles match the search.",
@@ -54,7 +54,6 @@
54
54
  "PopUpForm.header.edit.email-templates": "Editar Plantillas de Email",
55
55
  "PopUpForm.header.edit.providers": "Editar proveedor",
56
56
  "Providers.data.loaded": "Los proveedores se han cargado",
57
- "Providers.image": "Imagen",
58
57
  "Providers.status": "Estado",
59
58
  "Roles.empty": "Aún no tienes ningún rol.",
60
59
  "Roles.empty.search": "Ningún rol coincide con la búsqueda.",
@@ -54,7 +54,6 @@
54
54
  "PopUpForm.header.edit.email-templates": "이메일 템플릿 수정",
55
55
  "PopUpForm.header.edit.providers": "프로바이더 수정",
56
56
  "Providers.data.loaded": "프로바이더를 불러왔습니다.",
57
- "Providers.image": "이미지",
58
57
  "Providers.status": "상태",
59
58
  "Roles.empty": "아직 역할이 없습니다.",
60
59
  "Roles.empty.search": "검색과 일치하는 역할이 없습니다.",
@@ -54,7 +54,6 @@
54
54
  "PopUpForm.header.edit.email-templates": "Zmień szablony e-mail",
55
55
  "PopUpForm.header.edit.providers": "Edytuj dostawcę",
56
56
  "Providers.data.loaded": "Dostawcy zostali załadowani",
57
- "Providers.image": "Obrazek",
58
57
  "Providers.status": "Status",
59
58
  "Roles.empty": "Nie masz jeszcze żadnych ról.",
60
59
  "Roles.empty.search": "Żadne role nie pasują do wyszukiwania.",
@@ -2,20 +2,29 @@
2
2
  "BoundRoute.title": "Bind rutt till",
3
3
  "EditForm.inputSelect.description.role": "Den bifogar den nya autentiserade användaren till den valda rollen.",
4
4
  "EditForm.inputSelect.label.role": "Standardroll för autentiserade användare",
5
- "EditForm.inputToggle.description.email": "Tillåt ej användaren att skapa flera konton med samma e-postadress med olika autentiseringsleverantörer.",
5
+ "EditForm.inputToggle.description.email": "Tillåt ej användaren att skapa flera konton med samma e-postadress med olika autentiseringstjänster.",
6
6
  "EditForm.inputToggle.description.email-confirmation": "När aktiverat (PÅ) får nya registrerade användare ett bekräftelsemeddelande.",
7
7
  "EditForm.inputToggle.description.email-confirmation-redirection": "När du har bekräftat din e-post väljer du var du ska omdirigeras.",
8
8
  "EditForm.inputToggle.description.email-reset-password": "URL:en till din applikations sida för återställning av lösenord",
9
- "EditForm.inputToggle.description.sign-up": "När inaktiverad (AV) är registreringsprocessen förbjuden. Ingen kan prenumerera längre oavsett vilken leverantör som används.",
9
+ "EditForm.inputToggle.description.sign-up": "När inaktiverad (AV) är registreringsprocessen förbjuden. Ingen kan prenumerera längre oavsett vilken autentiseringstjänst som används.",
10
10
  "EditForm.inputToggle.label.email": "Ett konto per e-postadress",
11
11
  "EditForm.inputToggle.label.email-confirmation": "Aktivera e-postbekräftelse",
12
12
  "EditForm.inputToggle.label.email-confirmation-redirection": "Omdirigerings-url",
13
13
  "EditForm.inputToggle.label.email-reset-password": "Återställ lösenordssidan",
14
14
  "EditForm.inputToggle.label.sign-up": "Tillåt registreringar",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "t.ex: https://yourfrontend.com/email-confirmation-redirection",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "t.ex: https://yourfrontend.com/reset-password",
17
+ "EditPage.form.roles": "Rolldetaljer",
18
+ "Email.template.data.loaded": "E-postmallar har laddats",
15
19
  "Email.template.email_confirmation": "Bekräftelse av e-postadress",
20
+ "Email.template.form.edit.label": "Redigera en mall",
21
+ "Email.template.table.action.label": "händelse",
22
+ "Email.template.table.icon.label": "ikon",
23
+ "Email.template.table.name.label": "namn",
24
+ "Form.advancedSettings.data.loaded": "Data för avancerade inställningar har laddats",
16
25
  "HeaderNav.link.advancedSettings": "Avancerade inställningar",
17
26
  "HeaderNav.link.emailTemplates": "E-postmall",
18
- "HeaderNav.link.providers": "Leverantörer",
27
+ "HeaderNav.link.providers": "Autentiseringstjänster",
19
28
  "Plugin.permissions.plugins.description": "Definiera alla tillåtna åtgärder för {name} plugin.",
20
29
  "Plugins.header.description": "Endast åtgärder som är bundna av en rutt listas nedan.",
21
30
  "Plugins.header.title": "Behörigheter",
@@ -32,7 +41,7 @@
32
41
  "PopUpForm.Email.options.object.placeholder": "Bekräfta din e-postadress för %APP_NAME%",
33
42
  "PopUpForm.Email.options.response_email.label": "Svarsmail",
34
43
  "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
35
- "PopUpForm.Providers.enabled.description": "Om inaktiverat kan användarna inte använda den här leverantören.",
44
+ "PopUpForm.Providers.enabled.description": "Om inaktiverat kan användarna inte använda den här tjänsten.",
36
45
  "PopUpForm.Providers.enabled.label": "Tillåt",
37
46
  "PopUpForm.Providers.key.label": "Klient ID",
38
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
@@ -41,13 +50,28 @@
41
50
  "PopUpForm.Providers.secret.label": "Klient hemlighet",
42
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
43
52
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomän)",
44
- "PopUpForm.Providers.subdomain.placeholder": "min.subdomän.com",
53
+ "PopUpForm.Providers.subdomain.placeholder": "min.subdoman.com",
45
54
  "PopUpForm.header.edit.email-templates": "Redigera e-postmallar",
46
- "PopUpForm.header.edit.providers": "Redigera leverantör",
55
+ "PopUpForm.header.edit.providers": "Redigera tjänst",
56
+ "Providers.data.loaded": "Tjänster har laddats in",
57
+ "Providers.status": "Status",
58
+ "Roles.empty": "Du har inga roller än.",
59
+ "Roles.empty.search": "Inga roller matchar sökningen.",
47
60
  "Settings.roles.deleted": "Roll borttagen",
48
- "Settings.roles.edited": "Role redigerad",
61
+ "Settings.roles.edited": "Roll redigerad",
49
62
  "Settings.section-label": "Roller och behörigheter",
63
+ "components.Input.error.validation.email": "E-postadressen är ogiltig",
64
+ "components.Input.error.validation.json": "Detta är inte giltig JSON",
65
+ "components.Input.error.validation.max": "Värdet är för högt.",
66
+ "components.Input.error.validation.maxLength": "Värdet är för långt.",
67
+ "components.Input.error.validation.min": "Värdet är för lågt.",
68
+ "components.Input.error.validation.minLength": "Värdet är för kort.",
69
+ "components.Input.error.validation.minSupMax": "Minsta värdet är större än maximalt värde.",
70
+ "components.Input.error.validation.regex": "Värdet matchar inte regex-mönstret.",
71
+ "components.Input.error.validation.required": "Värdet är obligatoriskt.",
72
+ "components.Input.error.validation.unique": "Detta värdet är redan använt.",
50
73
  "notification.success.submit": "Inställningar har uppdaterats",
74
+ "page.title": "Inställningar - Roller",
51
75
  "plugin.description.long": "Skydda ditt API med en fullständig autentiseringsprocess baserad på JWT. Detta plugin har också en ACL-strategi som låter dig hantera behörigheterna mellan användargrupperna.",
52
76
  "plugin.description.short": "Skydda ditt API med en fullständig autentiseringsprocess baserad på JWT",
53
77
  "plugin.name": "Roller och behörigheter",
@@ -10,6 +10,16 @@
10
10
  "EditForm.inputToggle.label.email-confirmation": "E-posta onayını etkinleştir",
11
11
  "EditForm.inputToggle.label.email-confirmation-redirection": "Yönlendirme URL'si",
12
12
  "EditForm.inputToggle.label.sign-up": "Kayıtları etkinleştir",
13
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "ör: https://yourfrontend.com/email-confirmation-redirection",
14
+ "EditForm.inputToggle.placeholder.email-reset-password": "ör: https://yourfrontend.com/reset-password",
15
+ "EditPage.form.roles": "Rol detayları",
16
+ "Email.template.data.loaded": "E-posta şablonları yüklendi",
17
+ "Email.template.email_confirmation": "E-posta adresi doğrulaması",
18
+ "Email.template.form.edit.label": "Şablonu düzenle",
19
+ "Email.template.table.action.label": "eylem",
20
+ "Email.template.table.icon.label": "ikon",
21
+ "Email.template.table.name.label": "ad",
22
+ "Form.advancedSettings.data.loaded": "Gelişmiş ayarlar verisi yüklendi",
13
23
  "HeaderNav.link.advancedSettings": "Gelişmiş Ayarlar",
14
24
  "HeaderNav.link.emailTemplates": "E-posta Şablonları",
15
25
  "HeaderNav.link.providers": "Sağlayıcıları",
@@ -19,12 +29,14 @@
19
29
  "Policies.header.hint": "Uygulamanın eylemlerini veya eklentinin eylemlerini seçin ve bağlı rotayı görüntülemek için dişli çark simgesini tıklayın",
20
30
  "Policies.header.title": "Gelişmiş Ayarlar",
21
31
  "PopUpForm.Email.email_templates.inputDescription": "Değişkenleri nasıl kullanacağınızdan emin değilseniz, {link}",
32
+ "PopUpForm.Email.link.documentation": "dokümantasyonu kontrol et.",
22
33
  "PopUpForm.Email.options.from.email.label": "Gönderenin E-posta",
23
34
  "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
24
35
  "PopUpForm.Email.options.from.name.label": "Gönderenin adı",
25
36
  "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
26
37
  "PopUpForm.Email.options.message.label": "Mesaj",
27
38
  "PopUpForm.Email.options.object.label": "Konu",
39
+ "PopUpForm.Email.options.object.placeholder": "%APP_NAME% için e-posta adresini doğrula",
28
40
  "PopUpForm.Email.options.response_email.label": "Yanıt e-postası",
29
41
  "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
30
42
  "PopUpForm.Providers.enabled.description": "Devre dışı bırakıldıysa kullanıcılar bu sağlayıcıyı kullanamaz.",
@@ -32,13 +44,38 @@
32
44
  "PopUpForm.Providers.key.label": "Web istemcisi ID",
33
45
  "PopUpForm.Providers.key.placeholder": "METİN",
34
46
  "PopUpForm.Providers.redirectURL.front-end.label": "Arayüz uygulamanızın yönlendirme URL'si",
47
+ "PopUpForm.Providers.redirectURL.label": "{provider} uygulama ayarlarına ekleyeceğin yönlendirme URLi",
35
48
  "PopUpForm.Providers.secret.label": "Web istemcisi Secret",
36
49
  "PopUpForm.Providers.secret.placeholder": "METİN",
37
50
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
38
51
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
39
52
  "PopUpForm.header.edit.email-templates": "E-posta Şablonlarını Düzenle",
53
+ "PopUpForm.header.edit.providers": "Sağlayıcıyı Düzenle",
54
+ "Providers.data.loaded": "Sağlayıcılar yüklendi",
55
+ "Providers.image": "Görsel",
56
+ "Providers.status": "Durum",
57
+ "Roles.empty": "Henüz hiç rolün yok.",
58
+ "Roles.empty.search": "Aramaya uygun rol bulunmadı.",
59
+ "Settings.roles.deleted": "Rol silindi",
60
+ "Settings.roles.edited": "Rol düzenlendi",
61
+ "Settings.section-label": "Kullanıcılar ve İzinler eklentisi",
62
+ "components.Input.error.validation.email": "Bu geçersiz bir e-posta",
63
+ "components.Input.error.validation.json": "Bu JSON biçimine uymuyor",
64
+ "components.Input.error.validation.max": "Değer çok yüksek.",
65
+ "components.Input.error.validation.maxLength": "Değer çok uzun.",
66
+ "components.Input.error.validation.min": "Değer çok düşük.",
67
+ "components.Input.error.validation.minLength": "Değer çok kısa.",
68
+ "components.Input.error.validation.minSupMax": "Üst olamaz",
69
+ "components.Input.error.validation.regex": "Değer RegExp'e uymuyor.",
70
+ "components.Input.error.validation.required": "Değer gerekli.",
71
+ "components.Input.error.validation.unique": "Değer zaten kullanılıyor.",
40
72
  "notification.success.submit": "Ayarlar güncellendi",
73
+ "page.title": "Ayarlar - Roller",
41
74
  "plugin.description.long": "Servisinizi JWT'ye dayalı tam bir kimlik doğrulama işlemi ile koruyun. Bu eklenti, kullanıcı grupları arasındaki izinleri yönetmenize izin veren bir ACL stratejisiyle de gelir.",
42
75
  "plugin.description.short": "Servisinizi JWT'ye dayalı tam bir kimlik doğrulama işlemi ile koruyun",
43
- "plugin.name": "Roller & İzinler"
76
+ "plugin.name": "Roller ve İzinler",
77
+ "popUpWarning.button.cancel": "İptal Et",
78
+ "popUpWarning.button.confirm": "Onayla",
79
+ "popUpWarning.title": "Lütfen onayla",
80
+ "popUpWarning.warning.cancel": "Değişiklikleri iptal etmek istediğinden emin misin?"
44
81
  }
@@ -5,11 +5,23 @@
5
5
  "EditForm.inputToggle.description.email": "禁止使用者使用同一個電子郵件地址 + 不同的驗證方式註冊多個帳號",
6
6
  "EditForm.inputToggle.description.email-confirmation": "當啟用後,新註冊的使用者將會收到一封認證郵件。",
7
7
  "EditForm.inputToggle.description.email-confirmation-redirection": "認證完後後,使用者被重新導向的網址。",
8
+ "EditForm.inputToggle.description.email-reset-password": "您的應用程式的重設密碼頁面的網址",
8
9
  "EditForm.inputToggle.description.sign-up": "當停用後,不論使用任何驗證方式使用者將無法註冊。",
9
10
  "EditForm.inputToggle.label.email": "電子郵件地址單一帳號限制",
10
11
  "EditForm.inputToggle.label.email-confirmation": "啟用電子郵件地址驗證",
11
12
  "EditForm.inputToggle.label.email-confirmation-redirection": "重新導向網址",
13
+ "EditForm.inputToggle.label.email-reset-password": "密碼重設頁面",
12
14
  "EditForm.inputToggle.label.sign-up": "啟用註冊",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如:https://yourfrontend.com/email-confirmation-redirection",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "例如:https://yourfrontend.com/reset-password",
17
+ "EditPage.form.roles": "角色詳細資訊",
18
+ "Email.template.data.loaded": "已載入電子郵件範本",
19
+ "Email.template.email_confirmation": "電子郵件地址確認",
20
+ "Email.template.form.edit.label": "編輯範本",
21
+ "Email.template.table.action.label": "操作",
22
+ "Email.template.table.icon.label": "圖示",
23
+ "Email.template.table.name.label": "名稱",
24
+ "Form.advancedSettings.data.loaded": "已載入進階設定資料",
13
25
  "HeaderNav.link.advancedSettings": "進階設定",
14
26
  "HeaderNav.link.emailTemplates": "郵件範本",
15
27
  "HeaderNav.link.providers": "驗證方式",
@@ -19,12 +31,14 @@
19
31
  "Policies.header.hint": "選取應用程式或擴充功能的操作然後點擊齒輪圖示以顯示綁定路徑",
20
32
  "Policies.header.title": "進階設定",
21
33
  "PopUpForm.Email.email_templates.inputDescription": "如果您不確定要怎麼使用變數,請 {link}",
34
+ "PopUpForm.Email.link.documentation": "查閱我們的說明文件。",
22
35
  "PopUpForm.Email.options.from.email.label": "寄件人地址",
23
36
  "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
24
37
  "PopUpForm.Email.options.from.name.label": "寄件人名稱",
25
38
  "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
26
39
  "PopUpForm.Email.options.message.label": "訊息",
27
40
  "PopUpForm.Email.options.object.label": "主旨",
41
+ "PopUpForm.Email.options.object.placeholder": "請驗證 %APP_NAME% 的電子郵件地址",
28
42
  "PopUpForm.Email.options.response_email.label": "回覆地址",
29
43
  "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
30
44
  "PopUpForm.Providers.enabled.description": "如果停用,使用者將無法使用這個驗證方式",
@@ -32,13 +46,37 @@
32
46
  "PopUpForm.Providers.key.label": "客戶端 ID",
33
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
34
48
  "PopUpForm.Providers.redirectURL.front-end.label": "您應用程式的前端頁面網址",
49
+ "PopUpForm.Providers.redirectURL.label": "The redirect URL to add in your {provider} application configurations",
35
50
  "PopUpForm.Providers.secret.label": "客戶端密鑰",
36
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
37
- "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
52
+ "PopUpForm.Providers.subdomain.label": "Host URI (子網域)",
38
53
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
39
54
  "PopUpForm.header.edit.email-templates": "編輯郵件範本",
55
+ "PopUpForm.header.edit.providers": "編輯供應者",
56
+ "Providers.data.loaded": "已載入供應者",
57
+ "Providers.status": "狀態",
58
+ "Roles.empty": "您目前沒有任何角色。",
59
+ "Roles.empty.search": "沒有符合搜尋的角色。",
60
+ "Settings.roles.deleted": "已刪除角色",
61
+ "Settings.roles.edited": "已編輯角色",
62
+ "Settings.section-label": "使用者與權限外掛程式",
63
+ "components.Input.error.validation.email": "此電子郵件地址無效",
64
+ "components.Input.error.validation.json": "不符合 JSON 格式",
65
+ "components.Input.error.validation.max": "數值過高。",
66
+ "components.Input.error.validation.maxLength": "數值過長。",
67
+ "components.Input.error.validation.min": "數值過低。",
68
+ "components.Input.error.validation.minLength": "數值過短。",
69
+ "components.Input.error.validation.minSupMax": "Can't be superior",
70
+ "components.Input.error.validation.regex": "數值與 regex 不符。",
71
+ "components.Input.error.validation.required": "此數值為必填。",
72
+ "components.Input.error.validation.unique": "此值已被使用。",
40
73
  "notification.success.submit": "設定已更新",
74
+ "page.title": "設定 - 角色",
41
75
  "plugin.description.long": "使用 JWT 認證保護您的 API。這個擴充功能也使用 ACL 來讓你管理不同群組使用者的權限。",
42
76
  "plugin.description.short": "使用 JWT 認證保護您的 API",
43
- "plugin.name": "身份與權限"
77
+ "plugin.name": "身份與權限",
78
+ "popUpWarning.button.cancel": "取消",
79
+ "popUpWarning.button.confirm": "確認",
80
+ "popUpWarning.title": "請確認",
81
+ "popUpWarning.warning.cancel": "您確定要取消變更嗎?"
44
82
  }
@@ -1,4 +1,3 @@
1
- export { default as axiosInstance } from './axiosInstance';
2
1
  export { default as cleanPermissions } from './cleanPermissions';
3
2
  export { default as getRequestURL } from './getRequestURL';
4
3
  export { default as getTrad } from './getTrad';