@mamindom/common 1.0.112 → 1.0.114
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.
|
@@ -26,7 +26,7 @@ export declare const GRPC_CLIENTS: {
|
|
|
26
26
|
};
|
|
27
27
|
readonly CATALOG_PACKAGE: {
|
|
28
28
|
readonly package: "catalog.v1";
|
|
29
|
-
readonly protoPath: readonly [string, string, string, string, string, string, string, string, string, string, string, string, string, string];
|
|
29
|
+
readonly protoPath: readonly [string, string, string, string, string, string, string, string, string, string, string, string, string, string, string];
|
|
30
30
|
readonly env: "CATALOG_GRPC_URL";
|
|
31
31
|
};
|
|
32
32
|
readonly MEDIA_PACKAGE: {
|
|
@@ -44,7 +44,8 @@ exports.GRPC_CLIENTS = {
|
|
|
44
44
|
contracts_1.PROTO_PATHS.SEARCH,
|
|
45
45
|
contracts_1.PROTO_PATHS.SEO_FILTER,
|
|
46
46
|
contracts_1.PROTO_PATHS.PICKUP,
|
|
47
|
-
contracts_1.PROTO_PATHS.PRODUCT_REVIEW
|
|
47
|
+
contracts_1.PROTO_PATHS.PRODUCT_REVIEW,
|
|
48
|
+
contracts_1.PROTO_PATHS.WAREHOUSE
|
|
48
49
|
],
|
|
49
50
|
env: 'CATALOG_GRPC_URL'
|
|
50
51
|
},
|
package/dist/rbac/permissions.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Каталог усіх можливих дозволів. Single source of truth — імпортується
|
|
3
|
-
// auth-service для seed-у, gateway-service для guard'у, frontend-ом для UI.
|
|
4
|
-
// Зміни тут вимагають re-seed + sync-local-packages.sh.
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.SYSTEM_ROLE_DEFAULTS = exports.WILDCARD_PERMISSION = exports.ALL_PERMISSION_KEYS = exports.ALL_PERMISSIONS = exports.PERMISSION_GROUPS = void 0;
|
|
7
4
|
exports.hasPermission = hasPermission;
|
|
@@ -11,38 +8,98 @@ exports.PERMISSION_GROUPS = [
|
|
|
11
8
|
key: 'products',
|
|
12
9
|
label: 'Товари',
|
|
13
10
|
permissions: [
|
|
14
|
-
{
|
|
15
|
-
|
|
11
|
+
{
|
|
12
|
+
key: 'products.view',
|
|
13
|
+
groupKey: 'products',
|
|
14
|
+
label: 'Перегляд товарів'
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
key: 'products.create',
|
|
18
|
+
groupKey: 'products',
|
|
19
|
+
label: 'Створення товарів'
|
|
20
|
+
},
|
|
16
21
|
{
|
|
17
22
|
key: 'products.edit_content',
|
|
18
23
|
groupKey: 'products',
|
|
19
24
|
label: 'Редагування описів та фото'
|
|
20
25
|
},
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
{
|
|
27
|
+
key: 'products.edit_seo',
|
|
28
|
+
groupKey: 'products',
|
|
29
|
+
label: 'Редагування SEO полів'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: 'products.edit_price',
|
|
33
|
+
groupKey: 'products',
|
|
34
|
+
label: 'Зміна цін'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: 'products.delete',
|
|
38
|
+
groupKey: 'products',
|
|
39
|
+
label: 'Видалення товарів'
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
key: 'products.bulk',
|
|
43
|
+
groupKey: 'products',
|
|
44
|
+
label: 'Масові операції'
|
|
45
|
+
}
|
|
25
46
|
]
|
|
26
47
|
},
|
|
27
48
|
{
|
|
28
49
|
key: 'orders',
|
|
29
50
|
label: 'Замовлення',
|
|
30
51
|
permissions: [
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{
|
|
52
|
+
{
|
|
53
|
+
key: 'orders.view',
|
|
54
|
+
groupKey: 'orders',
|
|
55
|
+
label: 'Перегляд замовлень'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: 'orders.create',
|
|
59
|
+
groupKey: 'orders',
|
|
60
|
+
label: 'Створення замовлень'
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
key: 'orders.edit',
|
|
64
|
+
groupKey: 'orders',
|
|
65
|
+
label: 'Редагування замовлень'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
key: 'orders.cancel',
|
|
69
|
+
groupKey: 'orders',
|
|
70
|
+
label: 'Скасування замовлень'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: 'orders.refund',
|
|
74
|
+
groupKey: 'orders',
|
|
75
|
+
label: 'Повернення коштів'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: 'orders.assign',
|
|
79
|
+
groupKey: 'orders',
|
|
80
|
+
label: 'Призначення менеджера'
|
|
81
|
+
}
|
|
37
82
|
]
|
|
38
83
|
},
|
|
39
84
|
{
|
|
40
85
|
key: 'customers',
|
|
41
86
|
label: 'Клієнти',
|
|
42
87
|
permissions: [
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
|
|
88
|
+
{
|
|
89
|
+
key: 'customers.view',
|
|
90
|
+
groupKey: 'customers',
|
|
91
|
+
label: 'Перегляд клієнтів'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
key: 'customers.edit',
|
|
95
|
+
groupKey: 'customers',
|
|
96
|
+
label: 'Редагування клієнтів'
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
key: 'customers.export',
|
|
100
|
+
groupKey: 'customers',
|
|
101
|
+
label: 'Експорт бази'
|
|
102
|
+
},
|
|
46
103
|
{
|
|
47
104
|
key: 'customers.notify',
|
|
48
105
|
groupKey: 'customers',
|
|
@@ -55,11 +112,31 @@ exports.PERMISSION_GROUPS = [
|
|
|
55
112
|
key: 'content',
|
|
56
113
|
label: 'Контент',
|
|
57
114
|
permissions: [
|
|
58
|
-
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
115
|
+
{
|
|
116
|
+
key: 'content.blog.view',
|
|
117
|
+
groupKey: 'content',
|
|
118
|
+
label: 'Перегляд блогу'
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
key: 'content.blog.create',
|
|
122
|
+
groupKey: 'content',
|
|
123
|
+
label: 'Створення постів'
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
key: 'content.blog.publish',
|
|
127
|
+
groupKey: 'content',
|
|
128
|
+
label: 'Публікація постів'
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
key: 'content.pages.edit',
|
|
132
|
+
groupKey: 'content',
|
|
133
|
+
label: 'Редагування сторінок'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
key: 'content.banners.edit',
|
|
137
|
+
groupKey: 'content',
|
|
138
|
+
label: 'Керування банерами'
|
|
139
|
+
},
|
|
63
140
|
{ key: 'content.faq.edit', groupKey: 'content', label: 'FAQ' }
|
|
64
141
|
]
|
|
65
142
|
},
|
|
@@ -70,25 +147,54 @@ exports.PERMISSION_GROUPS = [
|
|
|
70
147
|
{ key: 'seo.meta', groupKey: 'seo', label: 'Meta-теги' },
|
|
71
148
|
{ key: 'seo.redirects', groupKey: 'seo', label: 'Редиректи' },
|
|
72
149
|
{ key: 'seo.sitemap', groupKey: 'seo', label: 'Sitemap' },
|
|
73
|
-
{ key: 'seo.robots', groupKey: 'seo', label: 'Robots.txt' }
|
|
150
|
+
{ key: 'seo.robots', groupKey: 'seo', label: 'Robots.txt' },
|
|
151
|
+
{
|
|
152
|
+
key: 'seo.manage',
|
|
153
|
+
groupKey: 'seo',
|
|
154
|
+
label: 'Керування SEO-фільтрами та metadata'
|
|
155
|
+
}
|
|
74
156
|
]
|
|
75
157
|
},
|
|
76
158
|
{
|
|
77
159
|
key: 'promotions',
|
|
78
160
|
label: 'Акції та бонуси',
|
|
79
161
|
permissions: [
|
|
80
|
-
{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
162
|
+
{
|
|
163
|
+
key: 'promotions.view',
|
|
164
|
+
groupKey: 'promotions',
|
|
165
|
+
label: 'Перегляд акцій'
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
key: 'promotions.edit',
|
|
169
|
+
groupKey: 'promotions',
|
|
170
|
+
label: 'Створення/редагування акцій'
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
key: 'promotions.coupons',
|
|
174
|
+
groupKey: 'promotions',
|
|
175
|
+
label: 'Керування купонами'
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
key: 'promotions.bonuses',
|
|
179
|
+
groupKey: 'promotions',
|
|
180
|
+
label: 'Бонусні налаштування'
|
|
181
|
+
}
|
|
84
182
|
]
|
|
85
183
|
},
|
|
86
184
|
{
|
|
87
185
|
key: 'reviews',
|
|
88
186
|
label: 'Відгуки',
|
|
89
187
|
permissions: [
|
|
90
|
-
{
|
|
91
|
-
|
|
188
|
+
{
|
|
189
|
+
key: 'reviews.view',
|
|
190
|
+
groupKey: 'reviews',
|
|
191
|
+
label: 'Перегляд відгуків'
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
key: 'reviews.moderate',
|
|
195
|
+
groupKey: 'reviews',
|
|
196
|
+
label: 'Модерація відгуків'
|
|
197
|
+
}
|
|
92
198
|
]
|
|
93
199
|
},
|
|
94
200
|
{
|
|
@@ -102,41 +208,67 @@ exports.PERMISSION_GROUPS = [
|
|
|
102
208
|
}
|
|
103
209
|
]
|
|
104
210
|
},
|
|
105
|
-
{
|
|
106
|
-
key: 'seo',
|
|
107
|
-
label: 'SEO',
|
|
108
|
-
permissions: [
|
|
109
|
-
{
|
|
110
|
-
key: 'seo.manage',
|
|
111
|
-
groupKey: 'seo',
|
|
112
|
-
label: 'Керування SEO-фільтрами та metadata'
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
},
|
|
116
211
|
{
|
|
117
212
|
key: 'system',
|
|
118
213
|
label: 'Система',
|
|
119
214
|
permissions: [
|
|
120
|
-
{
|
|
121
|
-
|
|
122
|
-
|
|
215
|
+
{
|
|
216
|
+
key: 'settings.general',
|
|
217
|
+
groupKey: 'system',
|
|
218
|
+
label: 'Загальні налаштування'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
key: 'settings.payment',
|
|
222
|
+
groupKey: 'system',
|
|
223
|
+
label: 'Модулі оплати'
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
key: 'settings.delivery',
|
|
227
|
+
groupKey: 'system',
|
|
228
|
+
label: 'Модулі доставки'
|
|
229
|
+
},
|
|
123
230
|
{ key: 'settings.api', groupKey: 'system', label: 'API ключі' },
|
|
124
|
-
{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
{
|
|
130
|
-
|
|
231
|
+
{
|
|
232
|
+
key: 'settings.notifications',
|
|
233
|
+
groupKey: 'system',
|
|
234
|
+
label: 'Email та push шаблони'
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
key: 'users.manage',
|
|
238
|
+
groupKey: 'system',
|
|
239
|
+
label: 'Керування користувачами'
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
key: 'roles.manage',
|
|
243
|
+
groupKey: 'system',
|
|
244
|
+
label: 'Керування ролями'
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
key: 'managers.view',
|
|
248
|
+
groupKey: 'system',
|
|
249
|
+
label: 'Перегляд менеджерів'
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
key: 'managers.manage',
|
|
253
|
+
groupKey: 'system',
|
|
254
|
+
label: 'Керування менеджерами'
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
key: 'audit.view',
|
|
258
|
+
groupKey: 'system',
|
|
259
|
+
label: 'Перегляд audit log'
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
key: 'reports.view',
|
|
263
|
+
groupKey: 'system',
|
|
264
|
+
label: 'Перегляд звітів'
|
|
265
|
+
}
|
|
131
266
|
]
|
|
132
267
|
}
|
|
133
268
|
];
|
|
134
269
|
exports.ALL_PERMISSIONS = exports.PERMISSION_GROUPS.flatMap(g => g.permissions);
|
|
135
270
|
exports.ALL_PERMISSION_KEYS = exports.ALL_PERMISSIONS.map(p => p.key);
|
|
136
|
-
// Маркер "повний доступ" — ADMIN. Не зберігається в БД як окремий permission.
|
|
137
271
|
exports.WILDCARD_PERMISSION = '*';
|
|
138
|
-
// Дефолтні пермішени для системних ролей (seed values).
|
|
139
|
-
// Можна редагувати в адмінці після seed-у, крім ADMIN.
|
|
140
272
|
exports.SYSTEM_ROLE_DEFAULTS = {
|
|
141
273
|
admin: {
|
|
142
274
|
name: 'Адміністратор',
|
|
@@ -202,15 +334,11 @@ exports.SYSTEM_ROLE_DEFAULTS = {
|
|
|
202
334
|
permissions: []
|
|
203
335
|
}
|
|
204
336
|
};
|
|
205
|
-
// Перевірка чи має набір permissions конкретний дозвіл.
|
|
206
|
-
// Підтримує wildcard "*" (повний доступ).
|
|
207
337
|
function hasPermission(granted, required) {
|
|
208
338
|
if (granted.includes(exports.WILDCARD_PERMISSION))
|
|
209
339
|
return true;
|
|
210
340
|
return granted.includes(required);
|
|
211
341
|
}
|
|
212
|
-
// Перевірка набору required permissions проти granted.
|
|
213
|
-
// Режим "all" — потрібні всі; режим "any" — достатньо одного.
|
|
214
342
|
function hasPermissions(granted, required, mode = 'all') {
|
|
215
343
|
if (granted.includes(exports.WILDCARD_PERMISSION))
|
|
216
344
|
return true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mamindom/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.114",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"typescript": "^5.9.3"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@mamindom/contracts": "^1.0.
|
|
24
|
+
"@mamindom/contracts": "^1.0.145",
|
|
25
25
|
"@nestjs/common": "^11.1.16",
|
|
26
26
|
"@nestjs/config": "^4.0.3",
|
|
27
27
|
"@nestjs/microservices": "^11.1.16"
|