@hed-hog/core 0.0.360 → 0.0.362

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 (153) hide show
  1. package/dist/access-log/access-log.controller.d.ts +1 -1
  2. package/dist/access-log/access-log.service.d.ts +1 -1
  3. package/dist/access-log/access-log.service.d.ts.map +1 -1
  4. package/dist/access-log/access-log.service.js +43 -1
  5. package/dist/access-log/access-log.service.js.map +1 -1
  6. package/dist/ai/ai.service.d.ts +1 -1
  7. package/dist/auth/auth.controller.d.ts +27 -26
  8. package/dist/auth/auth.controller.d.ts.map +1 -1
  9. package/dist/auth/auth.controller.js +6 -2
  10. package/dist/auth/auth.controller.js.map +1 -1
  11. package/dist/auth/auth.service.d.ts +35 -34
  12. package/dist/auth/auth.service.d.ts.map +1 -1
  13. package/dist/auth/auth.service.js +15 -5
  14. package/dist/auth/auth.service.js.map +1 -1
  15. package/dist/auth/guards/auth.guard.d.ts +1 -0
  16. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  17. package/dist/auth/guards/auth.guard.js +11 -4
  18. package/dist/auth/guards/auth.guard.js.map +1 -1
  19. package/dist/challenge/challenge.service.d.ts +12 -12
  20. package/dist/core/system.controller.d.ts +2 -2
  21. package/dist/core/system.service.d.ts +2 -2
  22. package/dist/dashboard/dashboard/dashboard.controller.d.ts +66 -66
  23. package/dist/dashboard/dashboard/dashboard.service.d.ts +66 -66
  24. package/dist/dashboard/dashboard-component/dashboard-component.controller.d.ts +26 -26
  25. package/dist/dashboard/dashboard-component/dashboard-component.service.d.ts +26 -26
  26. package/dist/dashboard/dashboard-component-role/dashboard-component-role.controller.d.ts +34 -34
  27. package/dist/dashboard/dashboard-component-role/dashboard-component-role.service.d.ts +34 -34
  28. package/dist/dashboard/dashboard-core/dashboard-core.controller.d.ts +8 -8
  29. package/dist/dashboard/dashboard-core/dashboard-core.service.d.ts +8 -8
  30. package/dist/dashboard/dashboard-item/dashboard-item.controller.d.ts +5 -5
  31. package/dist/dashboard/dashboard-item/dashboard-item.service.d.ts +5 -5
  32. package/dist/dashboard/dashboard-role/dashboard-role.controller.d.ts +25 -25
  33. package/dist/dashboard/dashboard-role/dashboard-role.service.d.ts +25 -25
  34. package/dist/file/file.controller.d.ts +6 -6
  35. package/dist/file/file.module.d.ts.map +1 -1
  36. package/dist/file/file.module.js +3 -2
  37. package/dist/file/file.module.js.map +1 -1
  38. package/dist/file/file.service.d.ts +121 -25
  39. package/dist/file/file.service.d.ts.map +1 -1
  40. package/dist/file/file.service.js +217 -32
  41. package/dist/file/file.service.js.map +1 -1
  42. package/dist/file/image-optimization.service.d.ts +20 -0
  43. package/dist/file/image-optimization.service.d.ts.map +1 -0
  44. package/dist/file/image-optimization.service.js +126 -0
  45. package/dist/file/image-optimization.service.js.map +1 -0
  46. package/dist/file/provider/local.provider.d.ts +1 -1
  47. package/dist/file/provider/local.provider.d.ts.map +1 -1
  48. package/dist/file/provider/local.provider.js +2 -9
  49. package/dist/file/provider/local.provider.js.map +1 -1
  50. package/dist/index.d.ts +1 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/integration-profile/integration-profile.controller.d.ts +15 -15
  55. package/dist/integration-profile/integration-profile.service.d.ts +15 -15
  56. package/dist/locale/locale.controller.d.ts +4 -4
  57. package/dist/locale/locale.service.d.ts +4 -4
  58. package/dist/mail/mail.controller.d.ts +7 -7
  59. package/dist/mail/mail.service.d.ts +7 -7
  60. package/dist/mail-sent/mail-sent.controller.d.ts +12 -12
  61. package/dist/mail-sent/mail-sent.service.d.ts +12 -12
  62. package/dist/mcp/mcp-api-key.controller.d.ts +2 -2
  63. package/dist/mcp/mcp-api-key.service.d.ts +2 -2
  64. package/dist/mcp/tools/core-users.mcp-tools.d.ts +1 -1
  65. package/dist/mcp/tools/core-users.mcp-tools.d.ts.map +1 -1
  66. package/dist/mcp/tools/core-users.mcp-tools.js +2 -2
  67. package/dist/mcp/tools/core-users.mcp-tools.js.map +1 -1
  68. package/dist/mcp-chat/mcp-chat.controller.d.ts +8 -8
  69. package/dist/mcp-chat/mcp-chat.service.d.ts +8 -8
  70. package/dist/menu/menu.controller.d.ts +10 -10
  71. package/dist/menu/menu.service.d.ts +10 -10
  72. package/dist/notification/notification.controller.d.ts +36 -36
  73. package/dist/notification/notification.service.d.ts +36 -36
  74. package/dist/profile/profile.controller.d.ts +16 -16
  75. package/dist/profile/profile.service.d.ts +16 -16
  76. package/dist/profile/profile.service.d.ts.map +1 -1
  77. package/dist/profile/profile.service.js +44 -23
  78. package/dist/profile/profile.service.js.map +1 -1
  79. package/dist/role/role.controller.d.ts +6 -6
  80. package/dist/role/role.service.d.ts +6 -6
  81. package/dist/screen/screen.controller.d.ts +3 -3
  82. package/dist/screen/screen.service.d.ts +3 -3
  83. package/dist/session/session.controller.d.ts +2 -2
  84. package/dist/session/session.service.d.ts +6 -6
  85. package/dist/session/session.service.d.ts.map +1 -1
  86. package/dist/session/session.service.js +7 -2
  87. package/dist/session/session.service.js.map +1 -1
  88. package/dist/setting/setting.controller.d.ts +18 -18
  89. package/dist/setting/setting.service.d.ts +18 -18
  90. package/dist/setting/setting.service.d.ts.map +1 -1
  91. package/dist/setting/setting.service.js +0 -1
  92. package/dist/setting/setting.service.js.map +1 -1
  93. package/dist/token/token.service.d.ts +1 -0
  94. package/dist/token/token.service.d.ts.map +1 -1
  95. package/dist/token/token.service.js +23 -6
  96. package/dist/token/token.service.js.map +1 -1
  97. package/dist/user/user.controller.d.ts +30 -30
  98. package/dist/user/user.controller.d.ts.map +1 -1
  99. package/dist/user/user.controller.js +4 -3
  100. package/dist/user/user.controller.js.map +1 -1
  101. package/dist/user/user.service.d.ts +68 -68
  102. package/dist/user/user.service.d.ts.map +1 -1
  103. package/dist/user/user.service.js +6 -6
  104. package/dist/user/user.service.js.map +1 -1
  105. package/dist/webhook-integration/webhook-integration.controller.d.ts +2 -2
  106. package/dist/webhook-integration/webhook-integration.service.d.ts +2 -2
  107. package/hedhog/data/route.yaml +2 -0
  108. package/hedhog/data/setting_group.yaml +117 -26
  109. package/hedhog/data/setting_subgroup.yaml +8 -0
  110. package/hedhog/frontend/app/access-log/page.tsx.ejs +170 -11
  111. package/hedhog/frontend/app/account/components/remove-mfa-dialog.tsx.ejs +1 -1
  112. package/hedhog/frontend/app/account/components/verify-before-add-dialog.tsx.ejs +1 -1
  113. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +113 -38
  114. package/hedhog/frontend/app/users/page.tsx.ejs +7 -7
  115. package/hedhog/frontend/app/users/permissions.tsx.ejs +137 -83
  116. package/hedhog/frontend/app/users/user-access-sheet.tsx.ejs +28 -26
  117. package/hedhog/frontend/app/users/user-sheet.tsx.ejs +207 -75
  118. package/hedhog/frontend/messages/en.json +9 -2
  119. package/hedhog/frontend/messages/pt.json +9 -2
  120. package/hedhog/table/setting_runtime_state.yaml +9 -0
  121. package/package.json +12 -6
  122. package/src/access-log/access-log.service.ts +19 -1
  123. package/src/auth/auth.controller.ts +5 -0
  124. package/src/auth/auth.service.ts +14 -4
  125. package/src/auth/guards/auth.guard.ts +10 -3
  126. package/src/file/file.module.ts +3 -2
  127. package/src/file/file.service.ts +448 -46
  128. package/src/file/image-optimization.service.ts +123 -0
  129. package/src/file/provider/local.provider.ts +2 -9
  130. package/src/index.ts +1 -0
  131. package/src/mcp/tools/core-users.mcp-tools.ts +267 -267
  132. package/src/profile/profile.service.ts +40 -22
  133. package/src/session/session.service.ts +10 -2
  134. package/src/setting/setting.service.ts +0 -1
  135. package/src/token/token.service.ts +26 -6
  136. package/src/user/user.controller.ts +5 -2
  137. package/src/user/user.service.ts +11 -8
  138. package/dist/menu/menu.service.spec.d.ts +0 -1
  139. package/dist/menu/menu.service.spec.d.ts.map +0 -1
  140. package/dist/menu/menu.service.spec.js +0 -208
  141. package/dist/menu/menu.service.spec.js.map +0 -1
  142. package/dist/route/route.service.spec.d.ts +0 -1
  143. package/dist/route/route.service.spec.d.ts.map +0 -1
  144. package/dist/route/route.service.spec.js +0 -262
  145. package/dist/route/route.service.spec.js.map +0 -1
  146. package/dist/screen/screen.service.spec.d.ts +0 -1
  147. package/dist/screen/screen.service.spec.d.ts.map +0 -1
  148. package/dist/screen/screen.service.spec.js +0 -259
  149. package/dist/screen/screen.service.spec.js.map +0 -1
  150. package/dist/user/user.service.spec.d.ts +0 -1
  151. package/dist/user/user.service.spec.d.ts.map +0 -1
  152. package/dist/user/user.service.spec.js +0 -261
  153. package/dist/user/user.service.spec.js.map +0 -1
@@ -1,261 +0,0 @@
1
- "use strict";
2
- // import {
3
- // PageOrderDirection,
4
- // PaginationDTO,
5
- // PaginationService,
6
- // } from '@hed-hog/api-pagination';
7
- // import { PrismaService } from '@hed-hog/api-prisma';
8
- // import { BadRequestException } from '@nestjs/common';
9
- // import { Test, TestingModule } from '@nestjs/testing';
10
- // import { genSalt, hash } from 'bcrypt';
11
- // import { DeleteDTO } from '../dto/delete.dto';
12
- // import { UpdateIdsDTO } from '../dto/update-ids.dto';
13
- // import { SALT_ROUNDS } from './constants/user.constants';
14
- // import { CreateDTO } from './dto/create.dto';
15
- // import { UpdateDTO } from './dto/update.dto';
16
- // import { UserService } from './user.service';
17
- // jest.mock('bcrypt', () => ({
18
- // genSalt: jest.fn().mockResolvedValue('mockSalt'),
19
- // hash: jest.fn().mockResolvedValue('mockHashedPassword'),
20
- // }));
21
- // describe('UserService', () => {
22
- // let service: UserService;
23
- // let prismaService: PrismaService;
24
- // let paginationService: PaginationService;
25
- // beforeEach(async () => {
26
- // const module: TestingModule = await Test.createTestingModule({
27
- // providers: [
28
- // UserService,
29
- // {
30
- // provide: PrismaService,
31
- // useValue: {
32
- // user: {
33
- // findUnique: jest.fn(),
34
- // create: jest.fn(),
35
- // update: jest.fn(),
36
- // deleteMany: jest.fn(),
37
- // },
38
- // role_user: {
39
- // deleteMany: jest.fn(),
40
- // createMany: jest.fn(),
41
- // },
42
- // createInsensitiveSearch: jest.fn(),
43
- // },
44
- // },
45
- // {
46
- // provide: PaginationService,
47
- // useValue: {
48
- // paginate: jest.fn(),
49
- // },
50
- // },
51
- // ],
52
- // }).compile();
53
- // service = module.get<UserService>(UserService);
54
- // prismaService = module.get<PrismaService>(PrismaService);
55
- // paginationService = module.get<PaginationService>(PaginationService);
56
- // });
57
- // it('should be defined', () => {
58
- // expect(service).toBeDefined();
59
- // });
60
- // describe('listRoles', () => {
61
- // it('should return paginated role for a specific user', async () => {
62
- // const paginationParams: PaginationDTO = {
63
- // page: 1,
64
- // pageSize: 10,
65
- // search: '',
66
- // sortField: '',
67
- // sortOrder: PageOrderDirection.Asc,
68
- // fields: '',
69
- // };
70
- // const mockPaginatedRoles = {
71
- // data: [],
72
- // total: 10,
73
- // lastPage: 1,
74
- // page: 1,
75
- // prev: 0,
76
- // next: 2,
77
- // pageSize: 10,
78
- // };
79
- // jest
80
- // .spyOn(paginationService, 'paginate')
81
- // .mockResolvedValue(mockPaginatedRoles);
82
- // const result = await service.listRoles(1, paginationParams);
83
- // expect(paginationService.paginate).toHaveBeenCalledWith(
84
- // prismaService.role,
85
- // paginationParams,
86
- // {
87
- // include: {
88
- // role_user: {
89
- // where: { user_id: 1 },
90
- // select: { user_id: true, role_id: true },
91
- // },
92
- // },
93
- // },
94
- // );
95
- // expect(result).toEqual(mockPaginatedRoles);
96
- // });
97
- // });
98
- // describe('updateRoles', () => {
99
- // it('should update user role', async () => {
100
- // const updateIdsDTO: UpdateIdsDTO = { ids: [1, 2] };
101
- // jest
102
- // .spyOn(prismaService.role_user, 'deleteMany')
103
- // .mockResolvedValue({ count: 1 });
104
- // jest
105
- // .spyOn(prismaService.role_user, 'createMany')
106
- // .mockResolvedValue({ count: 2 });
107
- // await service.updateRoles(1, updateIdsDTO);
108
- // expect(prismaService.role_user.deleteMany).toHaveBeenCalledWith({
109
- // where: { user_id: 1 },
110
- // });
111
- // expect(prismaService.role_user.createMany).toHaveBeenCalledWith({
112
- // data: [
113
- // { user_id: 1, role_id: 1 },
114
- // { user_id: 1, role_id: 2 },
115
- // ],
116
- // skipDuplicates: true,
117
- // });
118
- // });
119
- // });
120
- // /*
121
- // describe('getUsers', () => {
122
- // it('should return paginated user', async () => {
123
- // const paginationParams: PaginationDTO = {
124
- // page: 1,
125
- // pageSize: 10,
126
- // search: '',
127
- // sortField: '',
128
- // sortOrder: PageOrderDirection.Asc,
129
- // fields: '',
130
- // };
131
- // const mockPaginatedUsers = {
132
- // data: [],
133
- // total: 10,
134
- // lastPage: 1,
135
- // page: 1,
136
- // prev: 0,
137
- // next: 2,
138
- // pageSize: 10,
139
- // };
140
- // jest.spyOn(prismaService, 'createInsensitiveSearch').mockReturnValue([]);
141
- // jest
142
- // .spyOn(paginationService, 'paginate')
143
- // .mockResolvedValue(mockPaginatedUsers);
144
- // const result = await service.getUsers(paginationParams);
145
- // expect(prismaService.createInsensitiveSearch).toHaveBeenCalledWith(
146
- // ['name', 'email'],
147
- // paginationParams,
148
- // );
149
- // expect(paginationService.paginate).toHaveBeenCalledWith(
150
- // prismaService.user,
151
- // paginationParams,
152
- // { where: { OR: [] } },
153
- // );
154
- // expect(result).toEqual(mockPaginatedUsers);
155
- // });
156
- // });
157
- // */
158
- // describe('get', () => {
159
- // it('should return a specific user by ID', async () => {
160
- // const mockUser = {
161
- // id: 1,
162
- // name: 'Test User',
163
- // email: 'user@email.com',
164
- // password: 'hashedpassword',
165
- // created_at: new Date(),
166
- // updated_at: new Date(),
167
- // multifactor_id: null,
168
- // code: null,
169
- // };
170
- // jest.spyOn(prismaService.user, 'findUnique').mockResolvedValue(mockUser);
171
- // const result = await service.get(1);
172
- // expect(prismaService.user.findUnique).toHaveBeenCalledWith({
173
- // where: { id: 1 },
174
- // });
175
- // expect(result).toEqual(mockUser);
176
- // });
177
- // });
178
- // describe('hashPassword', () => {
179
- // it('should hash the password correctly', async () => {
180
- // const password = 'plainPassword';
181
- // const result = await service.hashPassword(password);
182
- // expect(genSalt).toHaveBeenCalledWith(SALT_ROUNDS);
183
- // expect(hash).toHaveBeenCalledWith(password, 'mockSalt');
184
- // expect(result).toEqual('mockHashedPassword');
185
- // });
186
- // });
187
- // describe('create', () => {
188
- // it('should create a new user with hashed password', async () => {
189
- // const createDTO: CreateDTO = {
190
- // email: 'test@test.com',
191
- // name: 'Test User',
192
- // password: 'password123',
193
- // };
194
- // const mockUser = {
195
- // id: 1,
196
- // name: 'Test User',
197
- // email: 'user@email.com',
198
- // password: 'hashedpassword',
199
- // created_at: new Date(),
200
- // updated_at: new Date(),
201
- // multifactor_id: null,
202
- // code: null,
203
- // };
204
- // jest.spyOn(prismaService.user, 'create').mockResolvedValue(mockUser);
205
- // const result = await service.create(createDTO);
206
- // expect(prismaService.user.create).toHaveBeenCalledWith({
207
- // data: {
208
- // email: createDTO.email,
209
- // name: createDTO.name,
210
- // password: 'mockHashedPassword',
211
- // },
212
- // });
213
- // expect(result).toEqual(mockUser);
214
- // });
215
- // });
216
- // describe('update', () => {
217
- // it('should update an existing user', async () => {
218
- // const updateDTO: UpdateDTO = { name: 'Updated User' };
219
- // const updateInput = { id: 1, data: updateDTO };
220
- // const mockUser = {
221
- // id: 1,
222
- // name: 'Updated User',
223
- // email: 'user@email.com',
224
- // password: 'hashedpassword',
225
- // created_at: new Date(),
226
- // updated_at: new Date(),
227
- // multifactor_id: null,
228
- // code: null,
229
- // };
230
- // jest.spyOn(prismaService.user, 'update').mockResolvedValue(mockUser);
231
- // const result = await service.update(updateInput);
232
- // expect(prismaService.user.update).toHaveBeenCalledWith({
233
- // where: { id: updateInput.id },
234
- // data: updateInput.data,
235
- // });
236
- // expect(result).toEqual(mockUser);
237
- // });
238
- // });
239
- // describe('delete', () => {
240
- // it('should throw an error if no ids are provided', async () => {
241
- // const deleteDTO: DeleteDTO = { ids: null };
242
- // await expect(service.delete(deleteDTO)).rejects.toThrow(
243
- // new BadRequestException('You must select at least one user to delete.'),
244
- // );
245
- // });
246
- // it('should delete user by ids', async () => {
247
- // const deleteDTO: DeleteDTO = { ids: [1, 2] };
248
- // jest
249
- // .spyOn(prismaService.user, 'deleteMany')
250
- // .mockResolvedValue({ count: 2 });
251
- // await service.delete(deleteDTO);
252
- // expect(prismaService.user.deleteMany).toHaveBeenCalledWith({
253
- // where: {
254
- // id: { in: deleteDTO.ids },
255
- // email: { not: { startsWith: 'root@' } },
256
- // },
257
- // });
258
- // });
259
- // });
260
- // });
261
- //# sourceMappingURL=user.service.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.service.spec.js","sourceRoot":"","sources":["../../src/user/user.service.spec.ts"],"names":[],"mappings":"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"}