@tomei/sso 0.1.1 → 0.2.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.
Files changed (67) hide show
  1. package/README.md +20 -3
  2. package/__tests__/unit/components/login-history/login-history.repository.spec.ts +95 -0
  3. package/__tests__/unit/components/login-user/login-user.spec.ts +223 -0
  4. package/__tests__/unit/components/login-user/user.repository.spec.ts +81 -0
  5. package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +33 -0
  6. package/__tests__/unit/components/system/system.repository.spec.ts +88 -0
  7. package/__tests__/unit/components/system-access/system-access.repository.spec.ts +78 -0
  8. package/__tests__/unit/redis-client/redis.service.spec.ts +24 -0
  9. package/__tests__/unit/session/session.service.spec.ts +27 -0
  10. package/create-sso-user.sql +8 -3
  11. package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +1 -0
  12. package/dist/__tests__/unit/components/login-user/login-user.spec.js +208 -0
  13. package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +1 -0
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/jest.config.js +15 -0
  16. package/package.json +21 -3
  17. package/prisma/migrations/0_init/migration.sql +512 -521
  18. package/prisma/migrations/20230528161352_create_user_user_group_and_add_new_column/migration.sql +35 -0
  19. package/prisma/migrations/20230606091407_create_login_histories_table/migration.sql +17 -0
  20. package/prisma/migrations/migration_lock.toml +2 -2
  21. package/prisma/schema.prisma +519 -436
  22. package/sampledotenv +8 -0
  23. package/src/components/index.ts +7 -0
  24. package/src/components/login-history/index.ts +1 -0
  25. package/src/components/login-history/login-history.repository.ts +33 -0
  26. package/src/components/login-user/index.ts +4 -0
  27. package/src/components/login-user/interfaces/index.ts +1 -0
  28. package/src/components/login-user/interfaces/user-info.interface.ts +9 -0
  29. package/src/components/login-user/login-user.ts +427 -0
  30. package/src/components/login-user/user.repository.ts +33 -0
  31. package/src/components/password-hash/index.ts +2 -0
  32. package/src/components/password-hash/interfaces/index.ts +1 -0
  33. package/src/components/password-hash/interfaces/password-hash-service.interface.ts +4 -0
  34. package/src/components/password-hash/password-hash.service.ts +14 -0
  35. package/src/components/system/index.ts +1 -0
  36. package/src/components/system/system.repository.ts +33 -0
  37. package/src/components/system-access/index.ts +1 -0
  38. package/src/components/system-access/system-access.repository.ts +33 -0
  39. package/src/components/user-group/index.ts +1 -0
  40. package/src/components/user-group/user-group.repository.ts +33 -0
  41. package/src/components/user-user-group/index.ts +1 -0
  42. package/src/components/user-user-group/user-user-group.repository.ts +33 -0
  43. package/src/index.ts +7 -0
  44. package/src/interfaces/index.ts +2 -0
  45. package/src/interfaces/system-login.interface.ts +6 -0
  46. package/src/interfaces/user-session.interface.ts +5 -0
  47. package/src/mail/index.ts +2 -0
  48. package/src/mail/interfaces/index.ts +2 -0
  49. package/src/mail/interfaces/send-mail.interface.ts +8 -0
  50. package/src/mail/interfaces/send-new-login-alert.interface.ts +6 -0
  51. package/src/mail/mail.service.ts +33 -0
  52. package/src/mail/mail.ts +40 -0
  53. package/src/prisma-client/__mocks__/prisma.ts +15 -0
  54. package/src/prisma-client/client.ts +3 -0
  55. package/src/prisma-client/index.ts +1 -0
  56. package/src/redis-client/__mocks__/jest-initial-setup.ts +2 -0
  57. package/src/redis-client/__mocks__/redis-mock.ts +28 -0
  58. package/src/redis-client/index.ts +1 -0
  59. package/src/redis-client/redis.service.ts +48 -0
  60. package/src/session/index.ts +2 -0
  61. package/src/session/interfaces/index.ts +1 -0
  62. package/src/session/interfaces/session-service.interface.ts +6 -0
  63. package/src/session/session.service.ts +45 -0
  64. package/tsconfig.json +7 -3
  65. package/dist/index.d.ts +0 -0
  66. package/dist/index.js +0 -1
  67. package/dist/index.js.map +0 -1
@@ -1,436 +1,519 @@
1
- generator client {
2
- provider = "prisma-client-js"
3
- }
4
-
5
- datasource db {
6
- provider = "mysql"
7
- url = env("DATABASE_URL")
8
- }
9
-
10
- model sso_authorization_codes {
11
- id Int @id @default(autoincrement())
12
- user_id Int
13
- system_id Int
14
- code String @unique(map: "code") @db.VarChar(255)
15
- expired_at DateTime @db.DateTime(0)
16
- created_at DateTime @default(now())
17
- updated_at DateTime @updatedAt
18
- status String? @default("unused") @db.VarChar(255)
19
- }
20
-
21
- model sso_bearer_tokens {
22
- id Int @id @default(autoincrement())
23
- user_id Int
24
- token String @unique(map: "token") @db.VarChar(255)
25
- expired_at DateTime @db.DateTime(0)
26
- created_at DateTime @default(now())
27
- updated_at DateTime @updatedAt
28
- }
29
-
30
- model sso_building_types {
31
- id Int @id @default(autoincrement())
32
- name String @db.VarChar(50)
33
- created_at DateTime @default(now())
34
- updated_at DateTime @updatedAt
35
- }
36
-
37
- model sso_buildings {
38
- id Int @id @default(autoincrement())
39
- name String? @db.VarChar(200)
40
- code String @unique(map: "code") @db.VarChar(10)
41
- building_type_id Int
42
- status String @db.VarChar(10)
43
- email String? @db.VarChar(200)
44
- mobile String? @db.VarChar(20)
45
- phone String @db.VarChar(20)
46
- address String @db.VarChar(1000)
47
- postcode String @db.VarChar(10)
48
- longitude Decimal? @db.Decimal(11, 8)
49
- latitude Decimal? @db.Decimal(10, 8)
50
- country_id Int
51
- state String @db.VarChar(50)
52
- city String @db.VarChar(50)
53
- created_by_id Int?
54
- updated_by_id Int?
55
- created_at DateTime @default(now())
56
- updated_at DateTime @updatedAt
57
- brand String? @db.VarChar(100)
58
- area_staff_id Int?
59
- opening_date DateTime? @db.DateTime(0)
60
- ceased_date DateTime? @db.DateTime(0)
61
- opening_hours String? @db.VarChar(200)
62
- image String? @db.VarChar(200)
63
- sso_departments sso_departments[]
64
- sso_staffs sso_staffs[]
65
- }
66
-
67
- model sso_cities {
68
- id Int @id @default(autoincrement())
69
- name String? @db.VarChar(255)
70
- state_id Int?
71
- postcode String? @db.VarChar(255)
72
- created_at DateTime @default(now())
73
- updated_at DateTime @updatedAt
74
- }
75
-
76
- model sso_companies {
77
- id Int @id @default(autoincrement())
78
- code String @unique(map: "code") @db.VarChar(10)
79
- name String @db.VarChar(200)
80
- description String? @db.VarChar(3000)
81
- logo String? @db.Text
82
- status String @db.VarChar(10)
83
- created_by_id Int?
84
- updated_by_id Int?
85
- created_at DateTime @default(now())
86
- updated_at DateTime @updatedAt
87
- sso_staffs sso_staffs[]
88
- }
89
-
90
- model sso_countries {
91
- id Int @id @default(autoincrement())
92
- code String @unique(map: "code") @db.VarChar(255)
93
- name String @db.VarChar(100)
94
- phonecode String? @db.VarChar(255)
95
- created_at DateTime @default(now())
96
- updated_at DateTime @updatedAt
97
- }
98
-
99
- model sso_departments {
100
- id Int @id @default(autoincrement())
101
- code String @unique(map: "code") @db.VarChar(10)
102
- building_id Int?
103
- status String @db.VarChar(10)
104
- name String @db.VarChar(100)
105
- created_by_id Int?
106
- updated_by_id Int?
107
- created_at DateTime @default(now())
108
- updated_at DateTime @updatedAt
109
- sso_buildings sso_buildings? @relation(fields: [building_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_building_id")
110
- sso_users_sso_departments_created_by_idTosso_users sso_users? @relation("sso_departments_created_by_idTosso_users", fields: [created_by_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_created_by_id")
111
- sso_users_sso_departments_updated_by_idTosso_users sso_users? @relation("sso_departments_updated_by_idTosso_users", fields: [updated_by_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_updated_by_id")
112
- sso_staffs sso_staffs[]
113
- sso_usergroup sso_usergroup[]
114
-
115
- @@index([building_id], map: "fk_departments_building_id")
116
- @@index([created_by_id], map: "fk_departments_created_by_id")
117
- @@index([updated_by_id], map: "fk_departments_updated_by_id")
118
- }
119
-
120
- model sso_grouproleprivilege {
121
- GroupCode String @db.VarChar(10)
122
- RoleId String @db.VarChar(30)
123
- PrivilegeId String @db.VarChar(30)
124
- CreatedById Int
125
- CreatedAt DateTime @default(dbgenerated("('2023-01-03 17:13:45')")) @db.DateTime(0)
126
- SystemId Int @default(1)
127
- sso_systems sso_systems @relation(fields: [SystemId], references: [id], onDelete: Cascade, map: "sso_GroupRolePrivilege_SystemId_foreign_idx")
128
- sso_usergroup sso_usergroup @relation(fields: [GroupCode], references: [GroupCode], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_1")
129
- sso_systemrole sso_systemrole @relation(fields: [RoleId], references: [RoleId], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_2")
130
- sso_systemprivilege sso_systemprivilege @relation(fields: [PrivilegeId], references: [PrivilegeId], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_3")
131
-
132
- @@id([GroupCode, RoleId, PrivilegeId, SystemId])
133
- @@index([PrivilegeId], map: "PrivilegeId")
134
- @@index([RoleId], map: "RoleId")
135
- @@index([SystemId], map: "sso_GroupRolePrivilege_SystemId_foreign_idx")
136
- }
137
-
138
- model sso_groupsystemaccess {
139
- SystemId Int
140
- GroupCode String @db.VarChar(10)
141
- CreatedById Int
142
- createdAt DateTime @default(dbgenerated("('2022-06-29 01:16:41')")) @db.DateTime(0)
143
- sso_usergroup sso_usergroup @relation(fields: [GroupCode], references: [GroupCode], onDelete: Cascade, map: "sso_groupsystemaccess_ibfk_1")
144
-
145
- @@id([SystemId, GroupCode])
146
- @@index([GroupCode], map: "GroupCode")
147
- }
148
-
149
- model sso_groupsystemprivilege {
150
- GroupCode String @db.VarChar(10)
151
- PrivilegeId String @db.VarChar(30)
152
- CreatedById String @db.VarChar(30)
153
- CreatedAt DateTime @default(dbgenerated("('2022-06-29 01:16:40')")) @db.DateTime(0)
154
- sso_usergroup sso_usergroup @relation(fields: [GroupCode], references: [GroupCode], onDelete: Cascade, map: "sso_groupsystemprivilege_ibfk_1")
155
- sso_systemprivilege sso_systemprivilege @relation(fields: [PrivilegeId], references: [PrivilegeId], onDelete: Cascade, map: "sso_groupsystemprivilege_ibfk_2")
156
-
157
- @@id([GroupCode, PrivilegeId])
158
- @@index([PrivilegeId], map: "PrivilegeId")
159
- }
160
-
161
- model sso_groupsystemrole {
162
- RoleId String @db.VarChar(30)
163
- GroupCode String @db.VarChar(10)
164
- CreatedById String @db.VarChar(30)
165
- CreatedAt DateTime @default(dbgenerated("('2022-06-29 01:16:39')")) @db.DateTime(0)
166
- sso_systemrole sso_systemrole @relation(fields: [RoleId], references: [RoleId], onUpdate: Restrict, map: "sso_groupsystemrole_ibfk_1")
167
- sso_usergroup sso_usergroup @relation(fields: [GroupCode], references: [GroupCode], onUpdate: Restrict, map: "sso_groupsystemrole_ibfk_2")
168
-
169
- @@id([RoleId, GroupCode])
170
- @@index([GroupCode], map: "GroupCode")
171
- }
172
-
173
- model sso_oauth_tokens {
174
- id Int @id @default(autoincrement())
175
- user_id Int
176
- token String @db.Text
177
- expired_at DateTime @db.DateTime(0)
178
- created_at DateTime @default(now())
179
- updated_at DateTime @updatedAt
180
- system_id Int @default(1)
181
- sso_systems sso_systems @relation(fields: [system_id], references: [id], onDelete: Cascade, map: "sso_oauth_tokens_system_id_foreign_idx")
182
-
183
- @@index([system_id], map: "sso_oauth_tokens_system_id_foreign_idx")
184
- }
185
-
186
- model sso_roles {
187
- ID Int @id @default(autoincrement()) @db.UnsignedInt
188
- name String @db.VarChar(255)
189
- description String? @db.Text
190
- default_to_on Boolean
191
- parent_id Int?
192
- created_at DateTime @default(now())
193
- updated_at DateTime @updatedAt
194
- }
195
-
196
- model sso_sequelize_meta {
197
- name String @id @unique(map: "name") @db.VarChar(255)
198
- }
199
-
200
- model sso_staff_types {
201
- id Int @id @default(autoincrement())
202
- name String @db.VarChar(20)
203
- created_at DateTime @default(now())
204
- updated_at DateTime @updatedAt
205
- sso_staffs sso_staffs[]
206
- }
207
-
208
- model sso_staffs {
209
- id Int @id @default(autoincrement())
210
- staff_id String @unique(map: "staff_id") @db.VarChar(10)
211
- full_name String @db.VarChar(200)
212
- preferred_name String @db.VarChar(200)
213
- email String @db.VarChar(200)
214
- staff_type_id Int
215
- job_title String @db.VarChar(100)
216
- car_plate String @default("") @db.VarChar(20)
217
- mobile String? @db.VarChar(20)
218
- floor String? @db.VarChar(15)
219
- extension Int?
220
- is_charge Boolean @default(false)
221
- status String @db.VarChar(10)
222
- user_id Int
223
- building_id Int
224
- department_id Int
225
- company_id Int?
226
- created_by_id Int?
227
- updated_by_id Int?
228
- created_at DateTime @default(now())
229
- updated_at DateTime @updatedAt
230
- image String? @db.VarChar(255)
231
- IdNo String? @db.VarChar(20)
232
- FullAddress String? @db.VarChar(1000)
233
- sso_buildings sso_buildings @relation(fields: [building_id], references: [id], onUpdate: Restrict, map: "fk_staffs_building_id")
234
- sso_companies sso_companies? @relation(fields: [company_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_company_id")
235
- sso_users_sso_staffs_created_by_idTosso_users sso_users? @relation("sso_staffs_created_by_idTosso_users", fields: [created_by_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_created_by_id")
236
- sso_departments sso_departments @relation(fields: [department_id], references: [id], onUpdate: Restrict, map: "fk_staffs_department_id")
237
- sso_staff_types sso_staff_types @relation(fields: [staff_type_id], references: [id], onUpdate: Restrict, map: "fk_staffs_staff_type_id")
238
- sso_users_sso_staffs_updated_by_idTosso_users sso_users? @relation("sso_staffs_updated_by_idTosso_users", fields: [updated_by_id], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_updated_by_id")
239
- sso_users_sso_staffs_user_idTosso_users sso_users @relation("sso_staffs_user_idTosso_users", fields: [user_id], references: [id], onUpdate: Restrict, map: "fk_staffs_user_id")
240
-
241
- @@index([building_id], map: "fk_staffs_building_id")
242
- @@index([company_id], map: "fk_staffs_company_id")
243
- @@index([created_by_id], map: "fk_staffs_created_by_id")
244
- @@index([department_id], map: "fk_staffs_department_id")
245
- @@index([staff_type_id], map: "fk_staffs_staff_type_id")
246
- @@index([updated_by_id], map: "fk_staffs_updated_by_id")
247
- @@index([user_id], map: "fk_staffs_user_id")
248
- }
249
-
250
- model sso_states {
251
- id Int @id @default(autoincrement())
252
- name String @db.VarChar(50)
253
- country_id Int?
254
- created_at DateTime @default(now())
255
- updated_at DateTime @updatedAt
256
- }
257
-
258
- model sso_system_accesses {
259
- user_id Int
260
- system_id Int
261
- updated_at DateTime @updatedAt
262
- sso_systems sso_systems @relation(fields: [system_id], references: [id], onUpdate: Restrict, map: "fk_system_access_system")
263
- sso_users sso_users @relation(fields: [user_id], references: [id], onUpdate: Restrict, map: "fk_system_access_user")
264
-
265
- @@id([user_id, system_id])
266
- @@index([system_id], map: "fk_system_access_system")
267
- }
268
-
269
- model sso_systemprivilege {
270
- PrivilegeId String @id @db.VarChar(30)
271
- SystemId Int
272
- Code String @db.VarChar(200)
273
- Description String? @db.VarChar(3000)
274
- CreatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:19')")) @db.DateTime(0)
275
- UpdatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:19')")) @updatedAt @db.DateTime(0)
276
- sso_grouproleprivilege sso_grouproleprivilege[]
277
- sso_groupsystemprivilege sso_groupsystemprivilege[]
278
- sso_systems sso_systems @relation(fields: [SystemId], references: [id], onDelete: Cascade, map: "sso_systemprivilege_ibfk_1")
279
- sso_systemroleprivilege sso_systemroleprivilege[]
280
- sso_usersystemprivilege sso_usersystemprivilege[]
281
-
282
- @@index([SystemId], map: "SystemId")
283
- }
284
-
285
- model sso_systemrole {
286
- RoleId String @id @db.VarChar(30)
287
- SystemId Int
288
- Name String @db.VarChar(100)
289
- Description String? @db.VarChar(3000)
290
- CreatedById Int
291
- CreatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0)
292
- UpdatedById Int
293
- UpdatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0)
294
- sso_grouproleprivilege sso_grouproleprivilege[]
295
- sso_groupsystemrole sso_groupsystemrole[]
296
- sso_systems sso_systems @relation(fields: [SystemId], references: [id], onDelete: Cascade, map: "sso_systemrole_ibfk_1")
297
- sso_systemroleprivilege sso_systemroleprivilege[]
298
- sso_usersystemrole sso_usersystemrole[]
299
-
300
- @@index([SystemId], map: "SystemId")
301
- }
302
-
303
- model sso_systemroleprivilege {
304
- RoleId String @db.VarChar(30)
305
- PrivilegeId String @db.VarChar(30)
306
- CreatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0)
307
- UpdatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0)
308
- sso_systemrole sso_systemrole @relation(fields: [RoleId], references: [RoleId], onDelete: Cascade, map: "sso_systemroleprivilege_ibfk_1")
309
- sso_systemprivilege sso_systemprivilege @relation(fields: [PrivilegeId], references: [PrivilegeId], onDelete: Cascade, map: "sso_systemroleprivilege_ibfk_2")
310
-
311
- @@id([RoleId, PrivilegeId])
312
- @@index([PrivilegeId], map: "PrivilegeId")
313
- }
314
-
315
- model sso_systems {
316
- id Int @id @default(autoincrement())
317
- code String @unique(map: "code") @db.VarChar(10)
318
- name String @db.VarChar(200)
319
- description String @db.VarChar(500)
320
- access_url String? @db.VarChar(2000)
321
- google_play_url String? @db.VarChar(2000)
322
- apple_store_url String? @db.VarChar(2000)
323
- api_key String? @db.VarChar(255)
324
- logo String? @db.VarChar(255)
325
- status String @db.VarChar(10)
326
- visible Boolean @default(true)
327
- created_at DateTime @default(now())
328
- updated_at DateTime @updatedAt
329
- api_secret String? @db.VarChar(255)
330
- updated_by_id Int?
331
- created_by_id Int?
332
- sso_grouproleprivilege sso_grouproleprivilege[]
333
- sso_oauth_tokens sso_oauth_tokens[]
334
- sso_system_accesses sso_system_accesses[]
335
- sso_systemprivilege sso_systemprivilege[]
336
- sso_systemrole sso_systemrole[]
337
- }
338
-
339
- model sso_updated_history {
340
- HistoryId BigInt @id @default(autoincrement())
341
- BatchId String? @db.VarChar(30)
342
- ObjectType String @db.VarChar(50)
343
- ObjectValue String @db.VarChar(50)
344
- ActionType sso_updated_history_ActionType
345
- UpdatedFieldName String @db.VarChar(100)
346
- OldValue String? @db.VarChar(1000)
347
- NewValue String? @db.VarChar(1000)
348
- UpdatedById Int
349
- UpdatedAt DateTime @db.DateTime(0)
350
- }
351
-
352
- model sso_user_roles {
353
- user_id Int
354
- role_id Int
355
- updated_by_id Int?
356
- updated_at DateTime @updatedAt
357
-
358
- @@id([user_id, role_id])
359
- }
360
-
361
- model sso_usergroup {
362
- GroupCode String @id @db.VarChar(10)
363
- GroupDescription String? @db.VarChar(100)
364
- Status sso_usergroup_Status?
365
- CreatedById String? @db.VarChar(30)
366
- CreatedAt DateTime? @default(dbgenerated("('2022-06-29 01:16:39')")) @db.DateTime(0)
367
- UpdatedById String? @db.VarChar(30)
368
- UpdatedAt DateTime? @default(dbgenerated("('2022-06-29 01:16:39')")) @updatedAt @db.DateTime(0)
369
- DepartmentId Int?
370
- sso_grouproleprivilege sso_grouproleprivilege[]
371
- sso_groupsystemaccess sso_groupsystemaccess[]
372
- sso_groupsystemprivilege sso_groupsystemprivilege[]
373
- sso_groupsystemrole sso_groupsystemrole[]
374
- sso_departments sso_departments? @relation(fields: [DepartmentId], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "sso_UserGroup_DepartmentId_foreign_idx")
375
- sso_users sso_users[]
376
-
377
- @@index([DepartmentId], map: "sso_UserGroup_DepartmentId_foreign_idx")
378
- }
379
-
380
- model sso_users {
381
- id Int @id @default(autoincrement())
382
- email String @unique(map: "email") @db.VarChar(255)
383
- password String @db.VarChar(255)
384
- status String? @db.VarChar(255)
385
- default_password_changed Boolean? @default(false)
386
- first_login_at DateTime? @db.DateTime(0)
387
- created_at DateTime @default(now())
388
- updated_at DateTime @updatedAt
389
- GroupCode String? @db.VarChar(10)
390
- sso_departments_sso_departments_created_by_idTosso_users sso_departments[] @relation("sso_departments_created_by_idTosso_users")
391
- sso_departments_sso_departments_updated_by_idTosso_users sso_departments[] @relation("sso_departments_updated_by_idTosso_users")
392
- sso_staffs_sso_staffs_created_by_idTosso_users sso_staffs[] @relation("sso_staffs_created_by_idTosso_users")
393
- sso_staffs_sso_staffs_updated_by_idTosso_users sso_staffs[] @relation("sso_staffs_updated_by_idTosso_users")
394
- sso_staffs_sso_staffs_user_idTosso_users sso_staffs[] @relation("sso_staffs_user_idTosso_users")
395
- sso_system_accesses sso_system_accesses[]
396
- sso_usergroup sso_usergroup? @relation(fields: [GroupCode], references: [GroupCode], onDelete: Restrict, onUpdate: Restrict, map: "sso_users_GroupCode_foreign_idx")
397
- sso_usersystemprivilege sso_usersystemprivilege[]
398
- sso_usersystemrole sso_usersystemrole[]
399
-
400
- @@index([GroupCode], map: "sso_users_GroupCode_foreign_idx")
401
- }
402
-
403
- model sso_usersystemprivilege {
404
- UserId Int
405
- PrivilegeId String @db.VarChar(30)
406
- CreatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0)
407
- UpdatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0)
408
- sso_users sso_users @relation(fields: [UserId], references: [id], onDelete: Cascade, map: "sso_usersystemprivilege_ibfk_1")
409
- sso_systemprivilege sso_systemprivilege @relation(fields: [PrivilegeId], references: [PrivilegeId], onDelete: Cascade, map: "sso_usersystemprivilege_ibfk_2")
410
-
411
- @@id([UserId, PrivilegeId])
412
- @@index([PrivilegeId], map: "PrivilegeId")
413
- }
414
-
415
- model sso_usersystemrole {
416
- UserId Int
417
- RoleId String @db.VarChar(30)
418
- CreatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0)
419
- UpdatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0)
420
- sso_users sso_users @relation(fields: [UserId], references: [id], onDelete: Cascade, map: "sso_usersystemrole_ibfk_1")
421
- sso_systemrole sso_systemrole @relation(fields: [RoleId], references: [RoleId], onDelete: Cascade, map: "sso_usersystemrole_ibfk_2")
422
-
423
- @@id([UserId, RoleId])
424
- @@index([RoleId], map: "RoleId")
425
- }
426
-
427
- enum sso_usergroup_Status {
428
- Active
429
- Inactive
430
- }
431
-
432
- enum sso_updated_history_ActionType {
433
- Add
434
- Update
435
- Delete
436
- }
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ }
4
+
5
+ datasource db {
6
+ provider = "mysql"
7
+ url = env("DATABASE_URL")
8
+ shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
9
+ }
10
+
11
+ model AuthorizationCode {
12
+ id Int @id @default(autoincrement())
13
+ userId Int @map("user_id")
14
+ systemId Int @map("system_id")
15
+ code String @unique(map: "code") @db.VarChar(255)
16
+ expiredAt DateTime @db.DateTime(0) @map("expired_at")
17
+ createdAt DateTime @db.DateTime(0) @map("created_at")
18
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
19
+ status String? @default("unused") @db.VarChar(255)
20
+
21
+ @@map("sso_authorization_codes")
22
+ }
23
+
24
+ model BearerToken {
25
+ id Int @id @default(autoincrement())
26
+ userId Int @map("user_id")
27
+ token String @unique(map: "token") @db.VarChar(255)
28
+ expiredAt DateTime @db.DateTime(0) @map("expired_at")
29
+ createdAt DateTime @db.DateTime(0) @map("created_at")
30
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
31
+
32
+ @@map("sso_bearer_tokens")
33
+ }
34
+
35
+ model BuildingType {
36
+ id Int @id @default(autoincrement())
37
+ name String @db.VarChar(50)
38
+ createdAt DateTime @db.DateTime(0) @map("created_at")
39
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
40
+
41
+ @@map("sso_building_types")
42
+ }
43
+
44
+ model Building {
45
+ id Int @id @default(autoincrement())
46
+ name String? @db.VarChar(200)
47
+ code String @unique(map: "code") @db.VarChar(10)
48
+ buildindTypeId Int @map("building_type_id")
49
+ status String @db.VarChar(10)
50
+ email String? @db.VarChar(200)
51
+ mobile String? @db.VarChar(20)
52
+ phone String @db.VarChar(20)
53
+ address String @db.VarChar(1000)
54
+ postcode String @db.VarChar(10)
55
+ longitude Decimal? @db.Decimal(11, 8)
56
+ latitude Decimal? @db.Decimal(10, 8)
57
+ countryId Int @map("country_id")
58
+ state String @db.VarChar(50)
59
+ city String @db.VarChar(50)
60
+ createdById Int? @map("created_by_id")
61
+ updatedById Int? @map("updated_by_id")
62
+ createdAt DateTime @db.DateTime(0) @map("created_at")
63
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
64
+ brand String? @db.VarChar(100)
65
+ areaStaffId Int? @map("area_staff_id")
66
+ openingDate DateTime? @db.DateTime(0) @map("opening_date")
67
+ ceasedDate DateTime? @db.DateTime(0) @map("ceased_date")
68
+ openingHours String? @db.VarChar(200) @map("opening_hours")
69
+ image String? @db.VarChar(200)
70
+ departments Department[]
71
+ staffs Staff[]
72
+
73
+ @@map("sso_buildings")
74
+ }
75
+
76
+ model City {
77
+ id Int @id @default(autoincrement())
78
+ name String? @db.VarChar(255)
79
+ stateId Int? @map("state_id")
80
+ postCode String? @db.VarChar(255) @map("postcode")
81
+ createdAt DateTime @db.DateTime(0) @map("created_at")
82
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
83
+
84
+ @@map("sso_cities")
85
+ }
86
+
87
+ model Company {
88
+ id Int @id @default(autoincrement())
89
+ code String @unique(map: "code") @db.VarChar(10)
90
+ name String @db.VarChar(200)
91
+ description String? @db.VarChar(3000)
92
+ logo String? @db.Text
93
+ status String @db.VarChar(10)
94
+ createdById Int? @map("created_by_id")
95
+ updatedById Int? @map("updated_by_id")
96
+ createdAt DateTime @db.DateTime(0) @map("created_at")
97
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
98
+ staffs Staff[]
99
+
100
+ @@map("sso_companies")
101
+ }
102
+
103
+ model Country {
104
+ id Int @id @default(autoincrement())
105
+ code String @unique(map: "code") @db.VarChar(255)
106
+ name String @db.VarChar(100)
107
+ phoneCode String? @db.VarChar(255) @map("phonecode")
108
+ createdAt DateTime @db.DateTime(0) @map("created_at")
109
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
110
+
111
+ @@map("sso_countries")
112
+ }
113
+
114
+ model Department {
115
+ id Int @id @default(autoincrement())
116
+ code String @unique(map: "code") @db.VarChar(10)
117
+ buildingId Int? @map("building_id")
118
+ status String @db.VarChar(10)
119
+ name String @db.VarChar(100)
120
+ createdById Int? @map("created_by_id")
121
+ updatedById Int? @map("updated_by_id")
122
+ createdAt DateTime @db.DateTime(0) @map("created_at")
123
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
124
+ building Building? @relation(fields: [buildingId], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_building_id")
125
+ createdBy User? @relation("sso_departments_created_by_idTosso_users", fields: [createdById], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_created_by_id")
126
+ updatedBy User? @relation("sso_departments_updated_by_idTosso_users", fields: [updatedById], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_departments_updated_by_id")
127
+ staffs Staff[]
128
+ userGroups UserGroup[]
129
+
130
+ @@index([buildingId], map: "fk_departments_building_id")
131
+ @@index([createdById], map: "fk_departments_created_by_id")
132
+ @@index([updatedById], map: "fk_departments_updated_by_id")
133
+ @@map("sso_departments")
134
+ }
135
+
136
+ model GroupRolePrivilege {
137
+ groupCode String @db.VarChar(10) @map("GroupCode")
138
+ roleId String @db.VarChar(30) @map("RoleId")
139
+ privilegeId String @db.VarChar(30) @map("PrivilegeId")
140
+ createdById Int @map("CreatedById")
141
+ createdAt DateTime @default(dbgenerated("('2023-01-03 17:13:45')")) @db.DateTime(0) @map("CreatedAt")
142
+ systemId Int @default(1) @map("SystemId")
143
+ system System @relation(fields: [systemId], references: [id], onDelete: Cascade, map: "sso_GroupRolePrivilege_SystemId_foreign_idx")
144
+ userGroup UserGroup @relation(fields: [groupCode], references: [groupCode], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_1")
145
+ systemRole SystemRole @relation(fields: [roleId], references: [roleId], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_2")
146
+ systemPrivilege SystemPrivilege @relation(fields: [privilegeId], references: [privilegeId], onDelete: Cascade, map: "sso_grouproleprivilege_ibfk_3")
147
+
148
+ @@id([groupCode, roleId, privilegeId, systemId])
149
+ @@index([privilegeId], map: "privilegeId")
150
+ @@index([roleId], map: "roleId")
151
+ @@index([systemId], map: "sso_GroupRolePrivilege_SystemId_foreign_idx")
152
+ @@map("sso_grouproleprivilege")
153
+ }
154
+
155
+ model GroupSystemAccess {
156
+ systemId Int @map("SystemId")
157
+ groupCode String @db.VarChar(10) @map("GroupCode")
158
+ createdById Int @map("CreatedById")
159
+ createdAt DateTime @default(dbgenerated("('2022-06-29 01:16:41')")) @db.DateTime(0)
160
+ userGroup UserGroup @relation(fields: [groupCode], references: [groupCode], onDelete: Cascade, map: "sso_groupsystemaccess_ibfk_1")
161
+
162
+ @@id([systemId, groupCode])
163
+ @@index([groupCode], map: "groupCode")
164
+ @@map("sso_groupsystemaccess")
165
+ }
166
+
167
+ model GroupSystemPrivilege {
168
+ groupCode String @db.VarChar(10) @map("GroupCode")
169
+ privilegeId String @db.VarChar(30) @map("PrivilegeId")
170
+ createdById String @db.VarChar(30) @map("CreatedById")
171
+ createdAt DateTime @default(dbgenerated("('2022-06-29 01:16:40')")) @db.DateTime(0) @map("CreatedAt")
172
+ userGroup UserGroup @relation(fields: [groupCode], references: [groupCode], onDelete: Cascade, map: "sso_groupsystemprivilege_ibfk_1")
173
+ systemPrivilege SystemPrivilege @relation(fields: [privilegeId], references: [privilegeId], onDelete: Cascade, map: "sso_groupsystemprivilege_ibfk_2")
174
+
175
+ @@id([groupCode, privilegeId])
176
+ @@index([privilegeId], map: "privilegeId")
177
+ @@map("sso_groupsystemprivilege")
178
+ }
179
+
180
+ model GroupSystemRole {
181
+ roleId String @db.VarChar(30) @map("RoleId")
182
+ groupCode String @db.VarChar(10) @map("GroupCode")
183
+ createdById String @db.VarChar(30) @map("CreatedById")
184
+ createdAt DateTime @default(dbgenerated("('2022-06-29 01:16:39')")) @db.DateTime(0) @map("CreatedAt")
185
+ systemRole SystemRole @relation(fields: [roleId], references: [roleId], onUpdate: Restrict, map: "sso_groupsystemrole_ibfk_1")
186
+ userGroup UserGroup @relation(fields: [groupCode], references: [groupCode], onUpdate: Restrict, map: "sso_groupsystemrole_ibfk_2")
187
+
188
+ @@id([roleId, groupCode])
189
+ @@index([groupCode], map: "groupCode")
190
+ @@map("sso_groupsystemrole")
191
+ }
192
+
193
+ model OAuthToken {
194
+ id Int @id @default(autoincrement())
195
+ userId Int @map("user_id")
196
+ token String @db.Text
197
+ expiredAt DateTime @db.DateTime(0) @map("expired_at")
198
+ createdAt DateTime @db.DateTime(0) @map("created_at")
199
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
200
+ systemId Int @default(1) @map("system_id")
201
+ system System @relation(fields: [systemId], references: [id], onDelete: Cascade, map: "sso_oauth_tokens_system_id_foreign_idx")
202
+
203
+ @@index([systemId], map: "sso_oauth_tokens_system_id_foreign_idx")
204
+ @@map("sso_oauth_tokens")
205
+ }
206
+
207
+ model Role {
208
+ id Int @id @default(autoincrement()) @db.UnsignedInt @map("ID")
209
+ name String @db.VarChar(255)
210
+ description String? @db.Text
211
+ defaultToOn Boolean @map("default_to_on")
212
+ parentId Int? @map("parent_id")
213
+ createdAt DateTime @db.DateTime(0) @map("created_at")
214
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
215
+
216
+ @@map("sso_roles")
217
+ }
218
+
219
+ model StaffType {
220
+ id Int @id @default(autoincrement())
221
+ name String @db.VarChar(20)
222
+ createdAt DateTime @db.DateTime(0) @map("created_at")
223
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
224
+ staffs Staff[]
225
+
226
+ @@map("sso_staff_types")
227
+ }
228
+
229
+ model Staff {
230
+ id Int @id @default(autoincrement())
231
+ staffId String @unique(map: "staff_id") @db.VarChar(10) @map("staff_id")
232
+ fullName String @db.VarChar(200) @map("full_name")
233
+ preferredName String @db.VarChar(200) @map("preferred_name")
234
+ email String @db.VarChar(200)
235
+ staffTypeId Int @map("staff_type_id")
236
+ jobTitle String @db.VarChar(100) @map("job_title")
237
+ carPlate String @default("") @db.VarChar(20) @map("car_plate")
238
+ mobile String? @db.VarChar(20)
239
+ floor String? @db.VarChar(15)
240
+ extension Int?
241
+ isCharge Boolean @default(false) @map("is_charge")
242
+ status String @db.VarChar(10)
243
+ userId Int @map("user_id")
244
+ buildingId Int @map("building_id")
245
+ departmentId Int @map("department_id")
246
+ companyId Int? @map("company_id")
247
+ createdById Int? @map("created_by_id")
248
+ updatedById Int? @map("updated_by_id")
249
+ createdAt DateTime @db.DateTime(0) @map("created_at")
250
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
251
+ image String? @db.VarChar(255)
252
+ idNo String? @db.VarChar(20) @map("IdNo")
253
+ fullAddress String? @db.VarChar(1000) @map("FullAddress")
254
+ building Building @relation(fields: [buildingId], references: [id], onUpdate: Restrict, map: "fk_staffs_building_id")
255
+ company Company? @relation(fields: [companyId], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_company_id")
256
+ createdBy User? @relation("sso_staffs_created_by_idTosso_users", fields: [createdById], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_created_by_id")
257
+ department Department @relation(fields: [departmentId], references: [id], onUpdate: Restrict, map: "fk_staffs_department_id")
258
+ staffType StaffType @relation(fields: [staffTypeId], references: [id], onUpdate: Restrict, map: "fk_staffs_staff_type_id")
259
+ updatedBy User? @relation("sso_staffs_updated_by_idTosso_users", fields: [updatedById], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "fk_staffs_updated_by_id")
260
+ user User @relation("sso_staffs_user_idTosso_users", fields: [userId], references: [id], onUpdate: Restrict, map: "fk_staffs_user_id")
261
+
262
+ @@index([buildingId], map: "fk_staffs_building_id")
263
+ @@index([companyId], map: "fk_staffs_company_id")
264
+ @@index([createdById], map: "fk_staffs_created_by_id")
265
+ @@index([departmentId], map: "fk_staffs_department_id")
266
+ @@index([staffTypeId], map: "fk_staffs_staff_type_id")
267
+ @@index([updatedById], map: "fk_staffs_updated_by_id")
268
+ @@index([userId], map: "fk_staffs_user_id")
269
+ @@map("sso_staffs")
270
+ }
271
+
272
+ model State {
273
+ id Int @id @default(autoincrement())
274
+ name String @db.VarChar(50)
275
+ countryId Int? @map("country_id")
276
+ createdAt DateTime @db.DateTime(0) @map("created_at")
277
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
278
+
279
+ @@map("sso_states")
280
+ }
281
+
282
+ model SystemAccess {
283
+ userId Int @map("user_id")
284
+ systemId Int @map("system_id")
285
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
286
+ system System @relation(fields: [systemId], references: [id], onUpdate: Restrict, map: "fk_system_access_system")
287
+ user User @relation(fields: [userId], references: [id], onUpdate: Restrict, map: "fk_system_access_user")
288
+
289
+ @@id([userId, systemId])
290
+ @@index([systemId], map: "fk_system_access_system")
291
+
292
+ @@map("sso_system_accesses")
293
+ }
294
+
295
+ model SystemPrivilege {
296
+ privilegeId String @id @db.VarChar(30) @map("PrivilegeId")
297
+ systemId Int @map("SystemId")
298
+ code String @db.VarChar(200) @map("Code")
299
+ module String? @db.VarChar(200) @map("Module")
300
+ description String? @db.VarChar(3000) @map("Description")
301
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:19')")) @db.DateTime(0) @map("CreatedAt")
302
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:19')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
303
+ groupRolePrivileges GroupRolePrivilege[]
304
+ groupSystemPrivileges GroupSystemPrivilege[]
305
+ system System @relation(fields: [systemId], references: [id], onDelete: Cascade, map: "sso_systemprivilege_ibfk_1")
306
+ systemRolePrivileges SystemRolePrivilege[]
307
+ userSystemPrivileges UserSystemPrivilege[]
308
+
309
+ @@index([systemId], map: "systemId")
310
+ @@map("sso_systemprivilege")
311
+ }
312
+
313
+ model SystemRole {
314
+ roleId String @id @db.VarChar(30) @map("RoleId")
315
+ systemId Int @map("SystemId")
316
+ name String @db.VarChar(100) @map("Name")
317
+ description String? @db.VarChar(3000) @map("Description")
318
+ createdById Int @map("CreatedById")
319
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0) @map("CreatedAt")
320
+ updatedById Int @map("UpdatedById")
321
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
322
+ groupRolePrivileges GroupRolePrivilege[]
323
+ groupSystemRoles GroupSystemRole[]
324
+ system System @relation(fields: [systemId], references: [id], onDelete: Cascade, map: "sso_systemrole_ibfk_1")
325
+ systemRolePrivileges SystemRolePrivilege[]
326
+ userSystemRoles UserSystemRole[]
327
+
328
+ @@index([systemId], map: "systemId")
329
+ @@map("sso_systemrole")
330
+ }
331
+
332
+ model SystemRolePrivilege {
333
+ roleId String @db.VarChar(30) @map("RoleId")
334
+ privilegeId String @db.VarChar(30) @map("PrivilegeId")
335
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0) @map("CreatedAt")
336
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
337
+ systemRole SystemRole @relation(fields: [roleId], references: [roleId], onDelete: Cascade, map: "sso_systemroleprivilege_ibfk_1")
338
+ systemPrivilege SystemPrivilege @relation(fields: [privilegeId], references: [privilegeId], onDelete: Cascade, map: "sso_systemroleprivilege_ibfk_2")
339
+
340
+ @@id([roleId, privilegeId])
341
+ @@index([privilegeId], map: "privilegeId")
342
+ @@map("sso_systemroleprivilege")
343
+ }
344
+
345
+ model System {
346
+ id Int @id @default(autoincrement())
347
+ code String @unique(map: "code") @db.VarChar(10)
348
+ name String @db.VarChar(200)
349
+ description String @db.VarChar(500)
350
+ accessUrl String? @db.VarChar(2000) @map("access_url")
351
+ googlePlayUrl String? @db.VarChar(2000) @map("google_play_url")
352
+ appleStoreUrl String? @db.VarChar(2000) @map("apple_store_url")
353
+ apiKey String? @db.VarChar(255) @map("api_key")
354
+ logo String? @db.VarChar(255)
355
+ status String @db.VarChar(10)
356
+ visible Boolean @default(true)
357
+ createdAt DateTime @db.DateTime(0) @map("created_at")
358
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
359
+ apiSecret String? @db.VarChar(255) @map("api_secret")
360
+ updatedById Int? @map("updated_by_id")
361
+ createdById Int? @map("created_by_id")
362
+ groupRolePrivileges GroupRolePrivilege[]
363
+ oAuthTokens OAuthToken[]
364
+ systemAccesses SystemAccess[]
365
+ systemPrivileges SystemPrivilege[]
366
+ systemRoles SystemRole[]
367
+ userUserGroups UserUserGroup[]
368
+ loginHistories LoginHistory[]
369
+
370
+ @@map("sso_systems")
371
+ }
372
+
373
+ model UpdatedHistory {
374
+ historyId BigInt @id @default(autoincrement()) @map("HistoryId")
375
+ batchId String? @db.VarChar(30) @map("BatchId")
376
+ objectType String @db.VarChar(50) @map("ObjectType")
377
+ objectValue String @db.VarChar(50) @map("ObjectValue")
378
+ actionType UpdatedHistoryActionType @map("ActionType")
379
+ updatedFieldName String @db.VarChar(100) @map("UpdatedFieldName")
380
+ oldValue String? @db.VarChar(1000) @map("OldValue")
381
+ newValue String? @db.VarChar(1000) @map("NewValue")
382
+ updatedById Int
383
+ updatedAt DateTime @db.DateTime(0)
384
+
385
+ @@map("sso_updated_history")
386
+ }
387
+
388
+ model UserRole {
389
+ userId Int @map("user_id")
390
+ roleId Int @map("role_id")
391
+ updatedById Int? @map("updated_by_id")
392
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
393
+
394
+ @@id([userId, roleId])
395
+ @@map("sso_user_roles")
396
+ }
397
+
398
+ model UserGroup {
399
+ groupCode String @id @db.VarChar(10) @map("GroupCode")
400
+ groupDescription String? @db.VarChar(100) @map("GroupDescription")
401
+ status UserGroupStatus? @map("Status")
402
+ personInCharge String? @db.VarChar(100) @map("PersonInCharge")
403
+ fullPath String? @db.VarChar(1000) @map("FullPath")
404
+ parentGroupCode String? @db.VarChar(10) @map("ParentGroupCode")
405
+ groupLevel Int @default(0) @map("GroupLevel")
406
+ groupType String? @db.VarChar(10) @map("GroupType")
407
+ allowInheritFromParentYN YesNoFlag? @default(N) @map("AllowInheritFromParentYN")
408
+ createdById String? @db.VarChar(30) @map("CreatedById")
409
+ createdAt DateTime? @default(dbgenerated("('2022-06-29 01:16:39')")) @db.DateTime(0) @map("CreatedAt")
410
+ updatedById String? @db.VarChar(30) @map("UpdatedById")
411
+ updatedAt DateTime? @default(dbgenerated("('2022-06-29 01:16:39')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
412
+ departmentId Int? @map("DepartmentId")
413
+ groupRolePrivileges GroupRolePrivilege[]
414
+ groupSystemAccesses GroupSystemAccess[]
415
+ groupSystemPrivileges GroupSystemPrivilege[]
416
+ groupSystemRoles GroupSystemRole[]
417
+ department Department? @relation(fields: [departmentId], references: [id], onDelete: Restrict, onUpdate: Restrict, map: "sso_UserGroup_DepartmentId_foreign_idx")
418
+ users User[]
419
+ userUserGroups UserUserGroup[]
420
+
421
+ @@index([departmentId], map: "sso_UserGroup_DepartmentId_foreign_idx")
422
+ @@map("sso_usergroup")
423
+ }
424
+
425
+ model User {
426
+ id Int @id @default(autoincrement())
427
+ email String @unique(map: "email") @db.VarChar(255)
428
+ password String @db.VarChar(255)
429
+ status String? @db.VarChar(255)
430
+ defaultPasswordChanged Boolean? @default(false) @map("default_password_changed")
431
+ firstLoginAt DateTime? @db.DateTime(0) @map("first_login_at")
432
+ createdAt DateTime @db.DateTime(0) @map("created_at")
433
+ updatedAt DateTime @updatedAt @db.DateTime(0) @map("updated_at")
434
+ groupCode String? @db.VarChar(10) @map("GroupCode")
435
+ createdByDepartments Department[] @relation("sso_departments_created_by_idTosso_users")
436
+ updatedByDepartments Department[] @relation("sso_departments_updated_by_idTosso_users")
437
+ createdByStaff Staff[] @relation("sso_staffs_created_by_idTosso_users")
438
+ updatedByStaff Staff[] @relation("sso_staffs_updated_by_idTosso_users")
439
+ staffs Staff[] @relation("sso_staffs_user_idTosso_users")
440
+ systemAccesses SystemAccess[]
441
+ userGroup UserGroup? @relation(fields: [groupCode], references: [groupCode], onDelete: Restrict, onUpdate: Restrict, map: "sso_users_GroupCode_foreign_idx")
442
+ userSystemPrivileges UserSystemPrivilege[]
443
+ userSystemRoles UserSystemRole[]
444
+ userUserGroups UserUserGroup[]
445
+ loginHistories LoginHistory[]
446
+
447
+ @@index([groupCode], map: "sso_users_GroupCode_foreign_idx")
448
+ @@map("sso_users")
449
+ }
450
+
451
+ model UserSystemPrivilege {
452
+ userId Int @map("UserId")
453
+ privilegeId String @db.VarChar(30) @map("PrivilegeId")
454
+ isInheritedYN YesNoFlag @default(N) @map("IsInheritedYN")
455
+ isRevokedYN YesNoFlag @default(N) @map("IsRevokedYN")
456
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0) @map("CreatedAt")
457
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
458
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade, map: "sso_usersystemprivilege_ibfk_1")
459
+ systemPrivilege SystemPrivilege @relation(fields: [privilegeId], references: [privilegeId], onDelete: Cascade, map: "sso_usersystemprivilege_ibfk_2")
460
+
461
+ @@id([userId, privilegeId])
462
+ @@index([privilegeId], map: "privilegeId")
463
+ @@map("sso_usersystemprivilege")
464
+ }
465
+
466
+ model UserSystemRole {
467
+ userId Int @map("UserId")
468
+ roleId String @db.VarChar(30) @map("RoleId")
469
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0) @map("CreatedAt")
470
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
471
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade, map: "sso_usersystemrole_ibfk_1")
472
+ systemRole SystemRole @relation(fields: [roleId], references: [roleId], onDelete: Cascade, map: "sso_usersystemrole_ibfk_2")
473
+
474
+ @@id([userId, roleId])
475
+ @@index([roleId], map: "roleId")
476
+ @@map("sso_usersystemrole")
477
+ }
478
+
479
+ model UserUserGroup {
480
+ userId Int @map("UserId")
481
+ groupCode String @map("GroupCode")
482
+ systemId Int? @map("SystemId")
483
+ createdAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @db.DateTime(0) @map("CreatedAt")
484
+ updatedAt DateTime @default(dbgenerated("('2021-10-25 02:50:20')")) @updatedAt @db.DateTime(0) @map("UpdatedAt")
485
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade, map: "sso_UserUserGroup_ibfk_1")
486
+ system System? @relation(fields: [systemId], references: [id], onDelete: Cascade, map: "sso_UserUserGroup_ibfk_3")
487
+ userGroup UserGroup @relation(fields: [groupCode], references: [groupCode], onDelete: Cascade, map: "sso_UserUserGroup_ibfk_2")
488
+
489
+ @@id([userId, groupCode])
490
+ @@map("sso_UserUserGroup")
491
+ }
492
+
493
+ model LoginHistory {
494
+ id Int @id @default(autoincrement()) @map("Id")
495
+ userId Int @map("UserId")
496
+ systemId Int @map("SystemId")
497
+ originIp String @map("OriginIP")
498
+ createdAt DateTime @default(now()) @map("CreatedAt")
499
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
500
+ system System? @relation(fields: [systemId], references: [id], onDelete: Cascade)
501
+
502
+ @@map("sso_LoginHistories")
503
+ }
504
+
505
+ enum UserGroupStatus {
506
+ Active
507
+ Inactive
508
+ }
509
+
510
+ enum UpdatedHistoryActionType {
511
+ Add
512
+ Update
513
+ Delete
514
+ }
515
+
516
+ enum YesNoFlag {
517
+ Y
518
+ N
519
+ }