@mamindom/common 1.0.112 → 1.0.113

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.
@@ -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
- { key: 'products.view', groupKey: 'products', label: 'Перегляд товарів' },
15
- { key: 'products.create', groupKey: 'products', label: 'Створення товарів' },
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
- { key: 'products.edit_seo', groupKey: 'products', label: 'Редагування SEO полів' },
22
- { key: 'products.edit_price', groupKey: 'products', label: 'Зміна цін' },
23
- { key: 'products.delete', groupKey: 'products', label: 'Видалення товарів' },
24
- { key: 'products.bulk', groupKey: 'products', label: 'Масові операції' }
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
- { key: 'orders.view', groupKey: 'orders', label: 'Перегляд замовлень' },
32
- { key: 'orders.create', groupKey: 'orders', label: 'Створення замовлень' },
33
- { key: 'orders.edit', groupKey: 'orders', label: 'Редагування замовлень' },
34
- { key: 'orders.cancel', groupKey: 'orders', label: 'Скасування замовлень' },
35
- { key: 'orders.refund', groupKey: 'orders', label: 'Повернення коштів' },
36
- { key: 'orders.assign', groupKey: 'orders', label: 'Призначення менеджера' }
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
- { key: 'customers.view', groupKey: 'customers', label: 'Перегляд клієнтів' },
44
- { key: 'customers.edit', groupKey: 'customers', label: 'Редагування клієнтів' },
45
- { key: 'customers.export', groupKey: 'customers', label: 'Експорт бази' },
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
- { key: 'content.blog.view', groupKey: 'content', label: 'Перегляд блогу' },
59
- { key: 'content.blog.create', groupKey: 'content', label: 'Створення постів' },
60
- { key: 'content.blog.publish', groupKey: 'content', label: 'Публікація постів' },
61
- { key: 'content.pages.edit', groupKey: 'content', label: 'Редагування сторінок' },
62
- { key: 'content.banners.edit', groupKey: 'content', label: 'Керування банерами' },
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
- { key: 'promotions.view', groupKey: 'promotions', label: 'Перегляд акцій' },
81
- { key: 'promotions.edit', groupKey: 'promotions', label: 'Створення/редагування акцій' },
82
- { key: 'promotions.coupons', groupKey: 'promotions', label: 'Керування купонами' },
83
- { key: 'promotions.bonuses', groupKey: 'promotions', label: 'Бонусні налаштування' }
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
- { key: 'reviews.view', groupKey: 'reviews', label: 'Перегляд відгуків' },
91
- { key: 'reviews.moderate', groupKey: 'reviews', label: 'Модерація відгуків' }
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
- { key: 'settings.general', groupKey: 'system', label: 'Загальні налаштування' },
121
- { key: 'settings.payment', groupKey: 'system', label: 'Модулі оплати' },
122
- { key: 'settings.delivery', groupKey: 'system', label: 'Модулі доставки' },
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
- { key: 'settings.notifications', groupKey: 'system', label: 'Email та push шаблони' },
125
- { key: 'users.manage', groupKey: 'system', label: 'Керування користувачами' },
126
- { key: 'roles.manage', groupKey: 'system', label: 'Керування ролями' },
127
- { key: 'managers.view', groupKey: 'system', label: 'Перегляд менеджерів' },
128
- { key: 'managers.manage', groupKey: 'system', label: 'Керування менеджерами' },
129
- { key: 'audit.view', groupKey: 'system', label: 'Перегляд audit log' },
130
- { key: 'reports.view', groupKey: 'system', label: 'Перегляд звітів' }
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.112",
3
+ "version": "1.0.113",
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.143",
24
+ "@mamindom/contracts": "^1.0.144",
25
25
  "@nestjs/common": "^11.1.16",
26
26
  "@nestjs/config": "^4.0.3",
27
27
  "@nestjs/microservices": "^11.1.16"