@strapi/admin 5.46.1 → 5.47.0
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/dist/admin/admin/src/components/Layouts/HeaderLayout.js +51 -8
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +52 -9
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js +167 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.js.map +1 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs +165 -0
- package/dist/admin/admin/src/components/Layouts/utils/getMatchingDocLink.mjs.map +1 -0
- package/dist/admin/admin/src/constants.js +8 -11
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +8 -11
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +25 -0
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +26 -1
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +62 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +40 -0
- package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/constants.js +1 -2
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs +1 -2
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +2 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +2 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +1 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +1 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.js +446 -42
- package/dist/admin/admin/src/translations/sk.json.js.map +1 -1
- package/dist/admin/admin/src/translations/sk.json.mjs +445 -43
- package/dist/admin/admin/src/translations/sk.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +5 -0
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +6 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +23 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/jwt.js +37 -0
- package/dist/admin/admin/src/utils/jwt.js.map +1 -0
- package/dist/admin/admin/src/utils/jwt.mjs +35 -0
- package/dist/admin/admin/src/utils/jwt.mjs.map +1 -0
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/Layouts/HeaderLayout.d.ts +2 -0
- package/dist/admin/src/components/Layouts/utils/getMatchingDocLink.d.ts +6 -0
- package/dist/admin/src/features/Tracking.d.ts +8 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +33 -0
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/utils/getFetchClient.d.ts +15 -1
- package/dist/admin/src/utils/jwt.d.ts +15 -0
- package/dist/server/server/src/bootstrap.js +3 -2
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +4 -3
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js +0 -2
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs +0 -2
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/register.js +1 -1
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.js +0 -7
- package/dist/server/server/src/routes/admin-tokens.js.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.mjs +0 -7
- package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js +8 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs +6 -2
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +71 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +71 -2
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/token.js +11 -0
- package/dist/server/server/src/services/token.js.map +1 -1
- package/dist/server/server/src/services/token.mjs +11 -1
- package/dist/server/server/src/services/token.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin-token.js +5 -63
- package/dist/server/server/src/strategies/admin-token.js.map +1 -1
- package/dist/server/server/src/strategies/admin-token.mjs +6 -64
- package/dist/server/server/src/strategies/admin-token.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +0 -5
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts +0 -5
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/routes/admin-tokens.d.ts.map +1 -1
- package/dist/server/src/routes/serve-admin-panel.d.ts +2 -0
- package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +15 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/token.d.ts +7 -1
- package/dist/server/src/services/token.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +12 -22
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/server/server/src/policies/isAdminTokensEnabled.js +0 -16
- package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +0 -1
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +0 -14
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +0 -1
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts +0 -7
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +0 -1
|
@@ -7,7 +7,6 @@ var adminTokens = [
|
|
|
7
7
|
handler: 'admin-token.create',
|
|
8
8
|
config: {
|
|
9
9
|
policies: [
|
|
10
|
-
'admin::isAdminTokensEnabled',
|
|
11
10
|
'admin::isAuthenticatedAdmin',
|
|
12
11
|
{
|
|
13
12
|
name: 'admin::hasPermissions',
|
|
@@ -26,7 +25,6 @@ var adminTokens = [
|
|
|
26
25
|
handler: 'admin-token.list',
|
|
27
26
|
config: {
|
|
28
27
|
policies: [
|
|
29
|
-
'admin::isAdminTokensEnabled',
|
|
30
28
|
'admin::isAuthenticatedAdmin',
|
|
31
29
|
{
|
|
32
30
|
name: 'admin::hasPermissions',
|
|
@@ -45,7 +43,6 @@ var adminTokens = [
|
|
|
45
43
|
handler: 'admin-token.revoke',
|
|
46
44
|
config: {
|
|
47
45
|
policies: [
|
|
48
|
-
'admin::isAdminTokensEnabled',
|
|
49
46
|
'admin::isAuthenticatedAdmin',
|
|
50
47
|
{
|
|
51
48
|
name: 'admin::hasPermissions',
|
|
@@ -64,7 +61,6 @@ var adminTokens = [
|
|
|
64
61
|
handler: 'admin-token.get',
|
|
65
62
|
config: {
|
|
66
63
|
policies: [
|
|
67
|
-
'admin::isAdminTokensEnabled',
|
|
68
64
|
'admin::isAuthenticatedAdmin',
|
|
69
65
|
{
|
|
70
66
|
name: 'admin::hasPermissions',
|
|
@@ -83,7 +79,6 @@ var adminTokens = [
|
|
|
83
79
|
handler: 'admin-token.update',
|
|
84
80
|
config: {
|
|
85
81
|
policies: [
|
|
86
|
-
'admin::isAdminTokensEnabled',
|
|
87
82
|
'admin::isAuthenticatedAdmin',
|
|
88
83
|
{
|
|
89
84
|
name: 'admin::hasPermissions',
|
|
@@ -102,7 +97,6 @@ var adminTokens = [
|
|
|
102
97
|
handler: 'admin-token.regenerate',
|
|
103
98
|
config: {
|
|
104
99
|
policies: [
|
|
105
|
-
'admin::isAdminTokensEnabled',
|
|
106
100
|
'admin::isAuthenticatedAdmin',
|
|
107
101
|
{
|
|
108
102
|
name: 'admin::hasPermissions',
|
|
@@ -121,7 +115,6 @@ var adminTokens = [
|
|
|
121
115
|
handler: 'admin-token.getOwnerPermissions',
|
|
122
116
|
config: {
|
|
123
117
|
policies: [
|
|
124
|
-
'admin::isAdminTokensEnabled',
|
|
125
118
|
'admin::isAuthenticatedAdmin',
|
|
126
119
|
{
|
|
127
120
|
name: 'admin::hasPermissions',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tokens.js","sources":["../../../../../server/src/routes/admin-tokens.ts"],"sourcesContent":["export default [\n {\n method: 'POST',\n path: '/admin-tokens',\n handler: 'admin-token.create',\n config: {\n policies: [\n 'admin::
|
|
1
|
+
{"version":3,"file":"admin-tokens.js","sources":["../../../../../server/src/routes/admin-tokens.ts"],"sourcesContent":["export default [\n {\n method: 'POST',\n path: '/admin-tokens',\n handler: 'admin-token.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.create'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens',\n handler: 'admin-token.list',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/admin-tokens/:id',\n handler: 'admin-token.revoke',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.delete'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens/:id',\n handler: 'admin-token.get',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/admin-tokens/:id',\n handler: 'admin-token.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.update'] } },\n ],\n },\n },\n {\n method: 'POST',\n path: '/admin-tokens/:id/regenerate',\n handler: 'admin-token.regenerate',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.regenerate'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens/:id/owner-permissions',\n handler: 'admin-token.getOwnerPermissions',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n];\n"],"names":["method","path","handler","config","policies","name","actions"],"mappings":";;AAAA,kBAAe;AACb,IAAA;QACEA,MAAAA,EAAQ,MAAA;QACRC,IAAAA,EAAM,eAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,eAAA;QACNC,OAAAA,EAAS,kBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,QAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,iBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,MAAA;QACRC,IAAAA,EAAM,8BAAA;QACNC,OAAAA,EAAS,wBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAAiC;AAAC;AAAE;AAC1F;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,qCAAA;QACNC,OAAAA,EAAS,iCAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF;CACD;;;;"}
|
|
@@ -5,7 +5,6 @@ var adminTokens = [
|
|
|
5
5
|
handler: 'admin-token.create',
|
|
6
6
|
config: {
|
|
7
7
|
policies: [
|
|
8
|
-
'admin::isAdminTokensEnabled',
|
|
9
8
|
'admin::isAuthenticatedAdmin',
|
|
10
9
|
{
|
|
11
10
|
name: 'admin::hasPermissions',
|
|
@@ -24,7 +23,6 @@ var adminTokens = [
|
|
|
24
23
|
handler: 'admin-token.list',
|
|
25
24
|
config: {
|
|
26
25
|
policies: [
|
|
27
|
-
'admin::isAdminTokensEnabled',
|
|
28
26
|
'admin::isAuthenticatedAdmin',
|
|
29
27
|
{
|
|
30
28
|
name: 'admin::hasPermissions',
|
|
@@ -43,7 +41,6 @@ var adminTokens = [
|
|
|
43
41
|
handler: 'admin-token.revoke',
|
|
44
42
|
config: {
|
|
45
43
|
policies: [
|
|
46
|
-
'admin::isAdminTokensEnabled',
|
|
47
44
|
'admin::isAuthenticatedAdmin',
|
|
48
45
|
{
|
|
49
46
|
name: 'admin::hasPermissions',
|
|
@@ -62,7 +59,6 @@ var adminTokens = [
|
|
|
62
59
|
handler: 'admin-token.get',
|
|
63
60
|
config: {
|
|
64
61
|
policies: [
|
|
65
|
-
'admin::isAdminTokensEnabled',
|
|
66
62
|
'admin::isAuthenticatedAdmin',
|
|
67
63
|
{
|
|
68
64
|
name: 'admin::hasPermissions',
|
|
@@ -81,7 +77,6 @@ var adminTokens = [
|
|
|
81
77
|
handler: 'admin-token.update',
|
|
82
78
|
config: {
|
|
83
79
|
policies: [
|
|
84
|
-
'admin::isAdminTokensEnabled',
|
|
85
80
|
'admin::isAuthenticatedAdmin',
|
|
86
81
|
{
|
|
87
82
|
name: 'admin::hasPermissions',
|
|
@@ -100,7 +95,6 @@ var adminTokens = [
|
|
|
100
95
|
handler: 'admin-token.regenerate',
|
|
101
96
|
config: {
|
|
102
97
|
policies: [
|
|
103
|
-
'admin::isAdminTokensEnabled',
|
|
104
98
|
'admin::isAuthenticatedAdmin',
|
|
105
99
|
{
|
|
106
100
|
name: 'admin::hasPermissions',
|
|
@@ -119,7 +113,6 @@ var adminTokens = [
|
|
|
119
113
|
handler: 'admin-token.getOwnerPermissions',
|
|
120
114
|
config: {
|
|
121
115
|
policies: [
|
|
122
|
-
'admin::isAdminTokensEnabled',
|
|
123
116
|
'admin::isAuthenticatedAdmin',
|
|
124
117
|
{
|
|
125
118
|
name: 'admin::hasPermissions',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-tokens.mjs","sources":["../../../../../server/src/routes/admin-tokens.ts"],"sourcesContent":["export default [\n {\n method: 'POST',\n path: '/admin-tokens',\n handler: 'admin-token.create',\n config: {\n policies: [\n 'admin::
|
|
1
|
+
{"version":3,"file":"admin-tokens.mjs","sources":["../../../../../server/src/routes/admin-tokens.ts"],"sourcesContent":["export default [\n {\n method: 'POST',\n path: '/admin-tokens',\n handler: 'admin-token.create',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.create'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens',\n handler: 'admin-token.list',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n {\n method: 'DELETE',\n path: '/admin-tokens/:id',\n handler: 'admin-token.revoke',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.delete'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens/:id',\n handler: 'admin-token.get',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n {\n method: 'PUT',\n path: '/admin-tokens/:id',\n handler: 'admin-token.update',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.update'] } },\n ],\n },\n },\n {\n method: 'POST',\n path: '/admin-tokens/:id/regenerate',\n handler: 'admin-token.regenerate',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.regenerate'] } },\n ],\n },\n },\n {\n method: 'GET',\n path: '/admin-tokens/:id/owner-permissions',\n handler: 'admin-token.getOwnerPermissions',\n config: {\n policies: [\n 'admin::isAuthenticatedAdmin',\n { name: 'admin::hasPermissions', config: { actions: ['admin::admin-tokens.read'] } },\n ],\n },\n },\n];\n"],"names":["method","path","handler","config","policies","name","actions"],"mappings":"AAAA,kBAAe;AACb,IAAA;QACEA,MAAAA,EAAQ,MAAA;QACRC,IAAAA,EAAM,eAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,eAAA;QACNC,OAAAA,EAAS,kBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,QAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,iBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,mBAAA;QACNC,OAAAA,EAAS,oBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA6B;AAAC;AAAE;AACtF;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,MAAA;QACRC,IAAAA,EAAM,8BAAA;QACNC,OAAAA,EAAS,wBAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAAiC;AAAC;AAAE;AAC1F;AACH;AACF,KAAA;AACA,IAAA;QACEN,MAAAA,EAAQ,KAAA;QACRC,IAAAA,EAAM,qCAAA;QACNC,OAAAA,EAAS,iCAAA;QACTC,MAAAA,EAAQ;YACNC,QAAAA,EAAU;AACR,gBAAA,6BAAA;AACA,gBAAA;oBAAEC,IAAAA,EAAM,uBAAA;oBAAyBF,MAAAA,EAAQ;wBAAEG,OAAAA,EAAS;AAAC,4BAAA;AAA2B;AAAC;AAAE;AACpF;AACH;AACF;CACD;;;;"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
3
5
|
var path = require('path');
|
|
4
6
|
var fse = require('fs-extra');
|
|
5
7
|
var koaStatic = require('koa-static');
|
|
@@ -49,6 +51,10 @@ const registerAdminPanelRoute = ({ strapi })=>{
|
|
|
49
51
|
const serveStatic = (filesDir, koaStaticOptions = {})=>{
|
|
50
52
|
const serve = koaStatic(filesDir, koaStaticOptions);
|
|
51
53
|
return async (ctx, next)=>{
|
|
54
|
+
if (!path.extname(ctx.path)) {
|
|
55
|
+
await next();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
52
58
|
const prev = ctx.path;
|
|
53
59
|
const newPath = path.basename(ctx.path);
|
|
54
60
|
ctx.path = newPath;
|
|
@@ -61,5 +67,6 @@ const serveStatic = (filesDir, koaStaticOptions = {})=>{
|
|
|
61
67
|
};
|
|
62
68
|
};
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
exports.default = registerAdminPanelRoute;
|
|
71
|
+
exports.serveStatic = serveStatic;
|
|
65
72
|
//# sourceMappingURL=serve-admin-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-admin-panel.js","sources":["../../../../../server/src/routes/serve-admin-panel.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport { resolve, join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\nconst registerAdminPanelRoute = ({ strapi }: { strapi: Core.Strapi }) => {\n let buildDir = resolve(strapi.dirs.dist.root, 'build');\n\n if (!fse.pathExistsSync(buildDir)) {\n buildDir = resolve(__dirname, '../../build');\n }\n\n const serveAdminMiddleware = async (ctx: Context, next: Next) => {\n await next();\n\n if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {\n return;\n }\n\n if (ctx.body != null || ctx.status !== 404) {\n return;\n }\n\n ctx.type = 'html';\n ctx.body = fse.createReadStream(join(buildDir, 'index.html'));\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: `${strapi.config.admin.path}/:path*`,\n handler: [\n serveAdminMiddleware,\n serveStatic(buildDir, {\n maxage: 31536000,\n defer: false,\n index: 'index.html',\n setHeaders(res: any, path: any) {\n const ext = extname(path);\n // publicly cache static files to avoid unnecessary network & disk access\n if (ext !== '.html') {\n res.setHeader('cache-control', 'public, max-age=31536000, immutable');\n }\n },\n }),\n ],\n config: { auth: false },\n },\n ]);\n};\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\
|
|
1
|
+
{"version":3,"file":"serve-admin-panel.js","sources":["../../../../../server/src/routes/serve-admin-panel.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport { resolve, join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\nconst registerAdminPanelRoute = ({ strapi }: { strapi: Core.Strapi }) => {\n let buildDir = resolve(strapi.dirs.dist.root, 'build');\n\n if (!fse.pathExistsSync(buildDir)) {\n buildDir = resolve(__dirname, '../../build');\n }\n\n const serveAdminMiddleware = async (ctx: Context, next: Next) => {\n await next();\n\n if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {\n return;\n }\n\n if (ctx.body != null || ctx.status !== 404) {\n return;\n }\n\n ctx.type = 'html';\n ctx.body = fse.createReadStream(join(buildDir, 'index.html'));\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: `${strapi.config.admin.path}/:path*`,\n handler: [\n serveAdminMiddleware,\n serveStatic(buildDir, {\n maxage: 31536000,\n defer: false,\n index: 'index.html',\n setHeaders(res: any, path: any) {\n const ext = extname(path);\n // publicly cache static files to avoid unnecessary network & disk access\n if (ext !== '.html') {\n res.setHeader('cache-control', 'public, max-age=31536000, immutable');\n }\n },\n }),\n ],\n config: { auth: false },\n },\n ]);\n};\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: any, koaStaticOptions = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n return async (ctx: Context, next: Next) => {\n if (!extname(ctx.path)) {\n await next();\n return;\n }\n\n const prev = ctx.path;\n const newPath = basename(ctx.path);\n\n ctx.path = newPath;\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n};\n\nexport default registerAdminPanelRoute;\n"],"names":["registerAdminPanelRoute","strapi","buildDir","resolve","dirs","dist","root","fse","pathExistsSync","__dirname","serveAdminMiddleware","ctx","next","method","body","status","type","createReadStream","join","server","routes","path","config","admin","handler","serveStatic","maxage","defer","index","setHeaders","res","ext","extname","setHeader","auth","filesDir","koaStaticOptions","serve","koaStatic","prev","newPath","basename"],"mappings":";;;;;;;;AAMA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAClE,IAAIC,QAAAA,GAAWC,aAAQF,MAAAA,CAAOG,IAAI,CAACC,IAAI,CAACC,IAAI,EAAE,OAAA,CAAA;AAE9C,IAAA,IAAI,CAACC,GAAAA,CAAIC,cAAc,CAACN,QAAAA,CAAAA,EAAW;AACjCA,QAAAA,QAAAA,GAAWC,aAAQM,SAAAA,EAAW,aAAA,CAAA;AAChC,IAAA;IAEA,MAAMC,oBAAAA,GAAuB,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;QAChD,MAAMA,IAAAA,EAAAA;AAEN,QAAA,IAAID,IAAIE,MAAM,KAAK,UAAUF,GAAAA,CAAIE,MAAM,KAAK,KAAA,EAAO;AACjD,YAAA;AACF,QAAA;AAEA,QAAA,IAAIF,IAAIG,IAAI,IAAI,QAAQH,GAAAA,CAAII,MAAM,KAAK,GAAA,EAAK;AAC1C,YAAA;AACF,QAAA;AAEAJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG,MAAA;AACXL,QAAAA,GAAAA,CAAIG,IAAI,GAAGP,GAAAA,CAAIU,gBAAgB,CAACC,UAAKhB,QAAAA,EAAU,YAAA,CAAA,CAAA;AACjD,IAAA,CAAA;IAEAD,MAAAA,CAAOkB,MAAM,CAACC,MAAM,CAAC;AACnB,QAAA;YACEP,MAAAA,EAAQ,KAAA;YACRQ,IAAAA,EAAM,CAAA,EAAGpB,OAAOqB,MAAM,CAACC,KAAK,CAACF,IAAI,CAAC,OAAO,CAAC;YAC1CG,OAAAA,EAAS;AACPd,gBAAAA,oBAAAA;AACAe,gBAAAA,WAAAA,CAAYvB,QAAAA,EAAU;oBACpBwB,MAAAA,EAAQ,QAAA;oBACRC,KAAAA,EAAO,KAAA;oBACPC,KAAAA,EAAO,YAAA;oBACPC,UAAAA,CAAAA,CAAWC,GAAQ,EAAET,MAAS,EAAA;AAC5B,wBAAA,MAAMU,MAAMC,YAAAA,CAAQX,MAAAA,CAAAA;;AAEpB,wBAAA,IAAIU,QAAQ,OAAA,EAAS;4BACnBD,GAAAA,CAAIG,SAAS,CAAC,eAAA,EAAiB,qCAAA,CAAA;AACjC,wBAAA;AACF,oBAAA;AACF,iBAAA;AACD,aAAA;YACDX,MAAAA,EAAQ;gBAAEY,IAAAA,EAAM;AAAM;AACxB;AACD,KAAA,CAAA;AACH;AAEA;MACaT,WAAAA,GAAc,CAACU,QAAAA,EAAeC,gBAAAA,GAAmB,EAAE,GAAA;IAC9D,MAAMC,KAAAA,GAAQC,UAAUH,QAAAA,EAAUC,gBAAAA,CAAAA;AAElC,IAAA,OAAO,OAAOzB,GAAAA,EAAcC,IAAAA,GAAAA;AAC1B,QAAA,IAAI,CAACoB,YAAAA,CAAQrB,GAAAA,CAAIU,IAAI,CAAA,EAAG;YACtB,MAAMT,IAAAA,EAAAA;AACN,YAAA;AACF,QAAA;QAEA,MAAM2B,IAAAA,GAAO5B,IAAIU,IAAI;QACrB,MAAMmB,OAAAA,GAAUC,aAAAA,CAAS9B,GAAAA,CAAIU,IAAI,CAAA;AAEjCV,QAAAA,GAAAA,CAAIU,IAAI,GAAGmB,OAAAA;AACX,QAAA,MAAMH,MAAM1B,GAAAA,EAAK,UAAA;AACfA,YAAAA,GAAAA,CAAIU,IAAI,GAAGkB,IAAAA;YACX,MAAM3B,IAAAA,EAAAA;AACND,YAAAA,GAAAA,CAAIU,IAAI,GAAGmB,OAAAA;AACb,QAAA,CAAA,CAAA;AACA7B,QAAAA,GAAAA,CAAIU,IAAI,GAAGkB,IAAAA;AACb,IAAA,CAAA;AACF;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolve, join,
|
|
1
|
+
import { resolve, join, extname, basename } from 'path';
|
|
2
2
|
import fse from 'fs-extra';
|
|
3
3
|
import koaStatic from 'koa-static';
|
|
4
4
|
|
|
@@ -47,6 +47,10 @@ const registerAdminPanelRoute = ({ strapi })=>{
|
|
|
47
47
|
const serveStatic = (filesDir, koaStaticOptions = {})=>{
|
|
48
48
|
const serve = koaStatic(filesDir, koaStaticOptions);
|
|
49
49
|
return async (ctx, next)=>{
|
|
50
|
+
if (!extname(ctx.path)) {
|
|
51
|
+
await next();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
50
54
|
const prev = ctx.path;
|
|
51
55
|
const newPath = basename(ctx.path);
|
|
52
56
|
ctx.path = newPath;
|
|
@@ -59,5 +63,5 @@ const serveStatic = (filesDir, koaStaticOptions = {})=>{
|
|
|
59
63
|
};
|
|
60
64
|
};
|
|
61
65
|
|
|
62
|
-
export { registerAdminPanelRoute as default };
|
|
66
|
+
export { registerAdminPanelRoute as default, serveStatic };
|
|
63
67
|
//# sourceMappingURL=serve-admin-panel.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-admin-panel.mjs","sources":["../../../../../server/src/routes/serve-admin-panel.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport { resolve, join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\nconst registerAdminPanelRoute = ({ strapi }: { strapi: Core.Strapi }) => {\n let buildDir = resolve(strapi.dirs.dist.root, 'build');\n\n if (!fse.pathExistsSync(buildDir)) {\n buildDir = resolve(__dirname, '../../build');\n }\n\n const serveAdminMiddleware = async (ctx: Context, next: Next) => {\n await next();\n\n if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {\n return;\n }\n\n if (ctx.body != null || ctx.status !== 404) {\n return;\n }\n\n ctx.type = 'html';\n ctx.body = fse.createReadStream(join(buildDir, 'index.html'));\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: `${strapi.config.admin.path}/:path*`,\n handler: [\n serveAdminMiddleware,\n serveStatic(buildDir, {\n maxage: 31536000,\n defer: false,\n index: 'index.html',\n setHeaders(res: any, path: any) {\n const ext = extname(path);\n // publicly cache static files to avoid unnecessary network & disk access\n if (ext !== '.html') {\n res.setHeader('cache-control', 'public, max-age=31536000, immutable');\n }\n },\n }),\n ],\n config: { auth: false },\n },\n ]);\n};\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\
|
|
1
|
+
{"version":3,"file":"serve-admin-panel.mjs","sources":["../../../../../server/src/routes/serve-admin-panel.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport { resolve, join, extname, basename } from 'path';\nimport fse from 'fs-extra';\nimport koaStatic from 'koa-static';\nimport type { Core } from '@strapi/types';\n\nconst registerAdminPanelRoute = ({ strapi }: { strapi: Core.Strapi }) => {\n let buildDir = resolve(strapi.dirs.dist.root, 'build');\n\n if (!fse.pathExistsSync(buildDir)) {\n buildDir = resolve(__dirname, '../../build');\n }\n\n const serveAdminMiddleware = async (ctx: Context, next: Next) => {\n await next();\n\n if (ctx.method !== 'HEAD' && ctx.method !== 'GET') {\n return;\n }\n\n if (ctx.body != null || ctx.status !== 404) {\n return;\n }\n\n ctx.type = 'html';\n ctx.body = fse.createReadStream(join(buildDir, 'index.html'));\n };\n\n strapi.server.routes([\n {\n method: 'GET',\n path: `${strapi.config.admin.path}/:path*`,\n handler: [\n serveAdminMiddleware,\n serveStatic(buildDir, {\n maxage: 31536000,\n defer: false,\n index: 'index.html',\n setHeaders(res: any, path: any) {\n const ext = extname(path);\n // publicly cache static files to avoid unnecessary network & disk access\n if (ext !== '.html') {\n res.setHeader('cache-control', 'public, max-age=31536000, immutable');\n }\n },\n }),\n ],\n config: { auth: false },\n },\n ]);\n};\n\n// serveStatic is not supposed to be used to serve a folder that have sub-folders\nexport const serveStatic = (filesDir: any, koaStaticOptions = {}) => {\n const serve = koaStatic(filesDir, koaStaticOptions);\n\n return async (ctx: Context, next: Next) => {\n if (!extname(ctx.path)) {\n await next();\n return;\n }\n\n const prev = ctx.path;\n const newPath = basename(ctx.path);\n\n ctx.path = newPath;\n await serve(ctx, async () => {\n ctx.path = prev;\n await next();\n ctx.path = newPath;\n });\n ctx.path = prev;\n };\n};\n\nexport default registerAdminPanelRoute;\n"],"names":["registerAdminPanelRoute","strapi","buildDir","resolve","dirs","dist","root","fse","pathExistsSync","__dirname","serveAdminMiddleware","ctx","next","method","body","status","type","createReadStream","join","server","routes","path","config","admin","handler","serveStatic","maxage","defer","index","setHeaders","res","ext","extname","setHeader","auth","filesDir","koaStaticOptions","serve","koaStatic","prev","newPath","basename"],"mappings":";;;;AAMA,MAAMA,uBAAAA,GAA0B,CAAC,EAAEC,MAAM,EAA2B,GAAA;IAClE,IAAIC,QAAAA,GAAWC,QAAQF,MAAAA,CAAOG,IAAI,CAACC,IAAI,CAACC,IAAI,EAAE,OAAA,CAAA;AAE9C,IAAA,IAAI,CAACC,GAAAA,CAAIC,cAAc,CAACN,QAAAA,CAAAA,EAAW;AACjCA,QAAAA,QAAAA,GAAWC,QAAQM,SAAAA,EAAW,aAAA,CAAA;AAChC,IAAA;IAEA,MAAMC,oBAAAA,GAAuB,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;QAChD,MAAMA,IAAAA,EAAAA;AAEN,QAAA,IAAID,IAAIE,MAAM,KAAK,UAAUF,GAAAA,CAAIE,MAAM,KAAK,KAAA,EAAO;AACjD,YAAA;AACF,QAAA;AAEA,QAAA,IAAIF,IAAIG,IAAI,IAAI,QAAQH,GAAAA,CAAII,MAAM,KAAK,GAAA,EAAK;AAC1C,YAAA;AACF,QAAA;AAEAJ,QAAAA,GAAAA,CAAIK,IAAI,GAAG,MAAA;AACXL,QAAAA,GAAAA,CAAIG,IAAI,GAAGP,GAAAA,CAAIU,gBAAgB,CAACC,KAAKhB,QAAAA,EAAU,YAAA,CAAA,CAAA;AACjD,IAAA,CAAA;IAEAD,MAAAA,CAAOkB,MAAM,CAACC,MAAM,CAAC;AACnB,QAAA;YACEP,MAAAA,EAAQ,KAAA;YACRQ,IAAAA,EAAM,CAAA,EAAGpB,OAAOqB,MAAM,CAACC,KAAK,CAACF,IAAI,CAAC,OAAO,CAAC;YAC1CG,OAAAA,EAAS;AACPd,gBAAAA,oBAAAA;AACAe,gBAAAA,WAAAA,CAAYvB,QAAAA,EAAU;oBACpBwB,MAAAA,EAAQ,QAAA;oBACRC,KAAAA,EAAO,KAAA;oBACPC,KAAAA,EAAO,YAAA;oBACPC,UAAAA,CAAAA,CAAWC,GAAQ,EAAET,IAAS,EAAA;AAC5B,wBAAA,MAAMU,MAAMC,OAAAA,CAAQX,IAAAA,CAAAA;;AAEpB,wBAAA,IAAIU,QAAQ,OAAA,EAAS;4BACnBD,GAAAA,CAAIG,SAAS,CAAC,eAAA,EAAiB,qCAAA,CAAA;AACjC,wBAAA;AACF,oBAAA;AACF,iBAAA;AACD,aAAA;YACDX,MAAAA,EAAQ;gBAAEY,IAAAA,EAAM;AAAM;AACxB;AACD,KAAA,CAAA;AACH;AAEA;MACaT,WAAAA,GAAc,CAACU,QAAAA,EAAeC,gBAAAA,GAAmB,EAAE,GAAA;IAC9D,MAAMC,KAAAA,GAAQC,UAAUH,QAAAA,EAAUC,gBAAAA,CAAAA;AAElC,IAAA,OAAO,OAAOzB,GAAAA,EAAcC,IAAAA,GAAAA;AAC1B,QAAA,IAAI,CAACoB,OAAAA,CAAQrB,GAAAA,CAAIU,IAAI,CAAA,EAAG;YACtB,MAAMT,IAAAA,EAAAA;AACN,YAAA;AACF,QAAA;QAEA,MAAM2B,IAAAA,GAAO5B,IAAIU,IAAI;QACrB,MAAMmB,OAAAA,GAAUC,QAAAA,CAAS9B,GAAAA,CAAIU,IAAI,CAAA;AAEjCV,QAAAA,GAAAA,CAAIU,IAAI,GAAGmB,OAAAA;AACX,QAAA,MAAMH,MAAM1B,GAAAA,EAAK,UAAA;AACfA,YAAAA,GAAAA,CAAIU,IAAI,GAAGkB,IAAAA;YACX,MAAM3B,IAAAA,EAAAA;AACND,YAAAA,GAAAA,CAAIU,IAAI,GAAGmB,OAAAA;AACb,QAAA,CAAA,CAAA;AACA7B,QAAAA,GAAAA,CAAIU,IAAI,GAAGkB,IAAAA;AACb,IAAA,CAAA;AACF;;;;"}
|
|
@@ -7,9 +7,10 @@ var constants = require('./constants.js');
|
|
|
7
7
|
var index = require('../utils/index.js');
|
|
8
8
|
var index$1 = require('../domain/permission/index.js');
|
|
9
9
|
var permission = require('../validation/permission.js');
|
|
10
|
+
var apiTokenUtils = require('../strategies/api-token-utils.js');
|
|
10
11
|
|
|
11
12
|
const { SUPER_ADMIN_CODE } = constants;
|
|
12
|
-
const { ValidationError, NotFoundError } = utils.errors;
|
|
13
|
+
const { ValidationError, NotFoundError, UnauthorizedError } = utils.errors;
|
|
13
14
|
const assertOwnerMatchesCallingUser = async (adminUserOwner, callingUser)=>{
|
|
14
15
|
if (callingUser === undefined || callingUser === null) {
|
|
15
16
|
throw new ValidationError('adminUserOwner requires an authenticated admin user');
|
|
@@ -36,6 +37,16 @@ const getOwnerId = (token)=>{
|
|
|
36
37
|
const owner = token.adminUserOwner;
|
|
37
38
|
return String(typeof owner === 'object' ? owner.id : owner);
|
|
38
39
|
};
|
|
40
|
+
const resolveAdminTokenOwnerId = (token)=>{
|
|
41
|
+
const owner = token.adminUserOwner;
|
|
42
|
+
if (owner === null || owner === undefined) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (typeof owner === 'object') {
|
|
46
|
+
return owner.id;
|
|
47
|
+
}
|
|
48
|
+
return owner;
|
|
49
|
+
};
|
|
39
50
|
const toAdminTokenOwner = (owner)=>{
|
|
40
51
|
if (owner === null || owner === undefined) {
|
|
41
52
|
throw new Error('adminUserOwner is required');
|
|
@@ -504,6 +515,63 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
|
|
|
504
515
|
const salt = apiTokenCfg.salt;
|
|
505
516
|
return crypto.createHmac('sha512', salt).update(accessKey).digest('hex');
|
|
506
517
|
};
|
|
518
|
+
const authenticateAdminToken = async (accessToken)=>{
|
|
519
|
+
const apiToken = await getBy({
|
|
520
|
+
accessKey: hash(accessToken)
|
|
521
|
+
});
|
|
522
|
+
if (apiToken === null || apiToken === undefined) {
|
|
523
|
+
return {
|
|
524
|
+
authenticated: false
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
if (apiToken.kind !== 'admin') {
|
|
528
|
+
return {
|
|
529
|
+
authenticated: false
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
const expiryError = apiTokenUtils.checkExpiry(apiToken);
|
|
533
|
+
if (expiryError !== null) {
|
|
534
|
+
return {
|
|
535
|
+
authenticated: false,
|
|
536
|
+
error: expiryError
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
const ownerId = resolveAdminTokenOwnerId(apiToken);
|
|
540
|
+
if (ownerId === null) {
|
|
541
|
+
return {
|
|
542
|
+
authenticated: false,
|
|
543
|
+
error: new UnauthorizedError('Token owner not found')
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
const user = await strapi.db.query('admin::user').findOne({
|
|
547
|
+
where: {
|
|
548
|
+
id: ownerId
|
|
549
|
+
},
|
|
550
|
+
populate: [
|
|
551
|
+
'roles'
|
|
552
|
+
]
|
|
553
|
+
});
|
|
554
|
+
if (user === null || user === undefined) {
|
|
555
|
+
return {
|
|
556
|
+
authenticated: false,
|
|
557
|
+
error: new UnauthorizedError('Token owner not found')
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
if (user.isActive !== true || user.blocked === true) {
|
|
561
|
+
return {
|
|
562
|
+
authenticated: false,
|
|
563
|
+
error: new UnauthorizedError('Token owner is deactivated')
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
await apiTokenUtils.updateLastUsedAt(apiToken);
|
|
567
|
+
const ability = await index.getService('permission').engine.generateTokenAbility(apiToken.adminPermissions ?? [], user);
|
|
568
|
+
return {
|
|
569
|
+
authenticated: true,
|
|
570
|
+
credentials: apiToken,
|
|
571
|
+
user,
|
|
572
|
+
ability
|
|
573
|
+
};
|
|
574
|
+
};
|
|
507
575
|
const getExpirationFields = (lifespan)=>{
|
|
508
576
|
// it must be nil or a finite number >= 0
|
|
509
577
|
const isValidNumber = fp.isNumber(lifespan) && Number.isFinite(lifespan) && lifespan > 0;
|
|
@@ -1004,6 +1072,7 @@ function createTokenService(kind) {
|
|
|
1004
1072
|
}
|
|
1005
1073
|
const svc = {
|
|
1006
1074
|
...shared,
|
|
1075
|
+
authenticateAdminToken,
|
|
1007
1076
|
create: (attributes, callingUser)=>create({
|
|
1008
1077
|
...attributes,
|
|
1009
1078
|
kind: 'admin'
|
|
@@ -1035,6 +1104,7 @@ function createTokenService(kind) {
|
|
|
1035
1104
|
}
|
|
1036
1105
|
|
|
1037
1106
|
exports.assignAdminPermissionsToToken = assignAdminPermissionsToToken;
|
|
1107
|
+
exports.authenticateAdminToken = authenticateAdminToken;
|
|
1038
1108
|
exports.checkSaltIsDefined = checkSaltIsDefined;
|
|
1039
1109
|
exports.count = count;
|
|
1040
1110
|
exports.create = create;
|