vona-cli-set-api 1.0.72 → 1.0.74

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 (78) hide show
  1. package/cli/templates/create/project/basic/boilerplate/package.original.json +1 -1
  2. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/dist/.metadata/index.d.ts +74 -0
  3. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/dist/.metadata/this.d.ts +2 -0
  4. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/dist/controller/menu.d.ts +8 -0
  5. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/dist/index.d.ts +1 -0
  6. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/dist/service/menu.d.ts +6 -0
  7. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/package.json +2 -3
  8. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/tsconfig.build.json +7 -1
  9. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/tsconfig.build.tsbuildinfo +1 -0
  10. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/.metadata/index.d.ts +74 -0
  11. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/.metadata/this.d.ts +2 -0
  12. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/bean/meta.printTip.d.ts +5 -0
  13. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/config/locale/en-us.d.ts +5 -0
  14. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/config/locale/zh-cn.d.ts +5 -0
  15. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/controller/home.d.ts +8 -0
  16. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/dist/index.d.ts +1 -0
  17. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/package.json +3 -5
  18. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/tsconfig.build.json +7 -1
  19. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/tsconfig.build.tsbuildinfo +1 -0
  20. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/.metadata/index.d.ts +266 -0
  21. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/.metadata/this.d.ts +2 -0
  22. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/bean/meta.index.d.ts +3 -0
  23. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/bean/meta.version.d.ts +6 -0
  24. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/config/config.d.ts +10 -0
  25. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/controller/passport.d.ts +21 -0
  26. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/dto/auth.d.ts +8 -0
  27. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/dto/passport.d.ts +11 -0
  28. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/dto/passportJwt.d.ts +9 -0
  29. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/entity/role.d.ts +7 -0
  30. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/entity/user.d.ts +10 -0
  31. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/entity/userRole.d.ts +8 -0
  32. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/index.d.ts +3 -0
  33. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/lib/authAdapter.d.ts +1 -0
  34. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/lib/index.d.ts +3 -0
  35. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/lib/roleAdapter.d.ts +1 -0
  36. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/lib/userAdapter.d.ts +1 -0
  37. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/model/role.d.ts +4 -0
  38. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/model/user.d.ts +4 -0
  39. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/model/userRole.d.ts +4 -0
  40. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/authInnerAdapter.d.ts +6 -0
  41. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/authTokenAdapter.d.ts +11 -0
  42. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/passportAdapter.d.ts +10 -0
  43. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/redisToken.d.ts +14 -0
  44. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/roleInnerAdapter.d.ts +9 -0
  45. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/service/userInnerAdapter.d.ts +11 -0
  46. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/types/auth.d.ts +3 -0
  47. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/types/index.d.ts +4 -0
  48. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/types/passport.d.ts +14 -0
  49. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/types/role.d.ts +4 -0
  50. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/dist/types/user.d.ts +7 -0
  51. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/package.json +2 -3
  52. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/.metadata/index.ts +86 -20
  53. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/bean/meta.index.ts +16 -0
  54. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/bean/meta.version.ts +24 -2
  55. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/controller/passport.ts +2 -0
  56. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/dto/passport.ts +5 -1
  57. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/entity/role.ts +11 -0
  58. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/entity/userRole.ts +14 -0
  59. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/lib/index.ts +1 -0
  60. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/lib/roleAdapter.ts +15 -0
  61. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/model/role.ts +5 -0
  62. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/model/userRole.ts +5 -0
  63. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/service/authInnerAdapter.ts +2 -2
  64. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/service/passportAdapter.ts +4 -3
  65. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/service/roleInnerAdapter.ts +21 -0
  66. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/service/userInnerAdapter.ts +4 -4
  67. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/types/index.ts +1 -0
  68. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/src/types/role.ts +5 -0
  69. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/tsconfig.build.json +7 -1
  70. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/tsconfig.build.tsbuildinfo +1 -0
  71. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/package.json +2 -3
  72. package/package.json +1 -1
  73. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/node_modules/.bin/clean-package +0 -17
  74. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-base/node_modules/.bin/rimraf +0 -17
  75. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/node_modules/.bin/clean-package +0 -17
  76. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-index/node_modules/.bin/rimraf +0 -17
  77. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/node_modules/.bin/clean-package +0 -17
  78. package/cli/templates/create/project/basic/boilerplate/src/suite/a-home/modules/home-user/node_modules/.bin/rimraf +0 -17
@@ -1,16 +1,16 @@
1
1
  import type { BeanScopeUtil, TypeModuleConfig } from 'vona';
2
2
  import type { IDecoratorModelOptions } from 'vona-module-a-database';
3
+ import type { IMetaOptionsIndex } from 'vona-module-a-index';
3
4
  import type { TypeControllerOptionsActions } from 'vona-module-a-openapi';
4
5
  import type { TypeEntityOptionsFields } from 'vona-module-a-openapi';
5
6
  import type { config } from '../config/config.ts';
6
-
7
7
  import type { IControllerOptionsPassport } from '../controller/passport.ts';
8
8
  /** controller: end */
9
9
  /** controller: begin */
10
10
  // @ts-ignore ignore
11
11
  import type { ControllerPassport } from '../controller/passport.ts';
12
-
13
12
  import type { IDtoOptionsAuth } from '../dto/auth.ts';
13
+
14
14
  /** dto: end */
15
15
  /** dto: begin */
16
16
  import type { DtoAuth } from '../dto/auth.ts';
@@ -18,20 +18,27 @@ import type { IDtoOptionsPassport } from '../dto/passport.ts';
18
18
  import type { DtoPassport } from '../dto/passport.ts';
19
19
  import type { IDtoOptionsPassportJwt } from '../dto/passportJwt.ts';
20
20
  import type { DtoPassportJwt } from '../dto/passportJwt.ts';
21
- import type { IEntityOptionsUser } from '../entity/user.ts';
21
+ import type { IEntityOptionsRole } from '../entity/role.ts';
22
22
  /** entity: end */
23
23
  /** entity: begin */
24
+ import type { EntityRole } from '../entity/role.ts';
25
+ import type { IEntityOptionsUser } from '../entity/user.ts';
24
26
  import type { EntityUser } from '../entity/user.ts';
25
-
27
+ import type { IEntityOptionsUserRole } from '../entity/userRole.ts';
28
+ import type { EntityUserRole } from '../entity/userRole.ts';
26
29
  /** model: end */
27
30
  /** model: begin */
31
+ import type { ModelRole } from '../model/role.ts';
28
32
  import type { ModelUser } from '../model/user.ts';
33
+
34
+ import type { ModelUserRole } from '../model/userRole.ts';
29
35
  /** service: end */
30
36
  /** service: begin */
31
37
  import type { ServiceAuthInnerAdapter } from '../service/authInnerAdapter.ts';
32
38
  import type { ServiceAuthTokenAdapter } from '../service/authTokenAdapter.ts';
33
39
  import type { ServicePassportAdapter } from '../service/passportAdapter.ts';
34
40
  import type { ServiceRedisToken } from '../service/redisToken.ts';
41
+ import type { ServiceRoleInnerAdapter } from '../service/roleInnerAdapter.ts';
35
42
  import type { ServiceUserInnerAdapter } from '../service/userInnerAdapter.ts';
36
43
  /** config: end */
37
44
  /** scope: begin */
@@ -50,11 +57,17 @@ import 'vona';
50
57
  import 'vona';
51
58
  /** model: end */
52
59
  /** meta: begin */
60
+ export * from '../bean/meta.index.ts';
53
61
  export * from '../bean/meta.version.ts';
62
+ /** controller: end */
63
+ /** config: begin */
64
+ export * from '../config/config.ts';
54
65
  declare module 'vona-module-a-database' {
55
66
 
56
67
  export interface IEntityRecord {
68
+ 'home-user:role': IEntityOptionsRole;
57
69
  'home-user:user': IEntityOptionsUser;
70
+ 'home-user:userRole': IEntityOptionsUserRole;
58
71
  }
59
72
 
60
73
  }
@@ -62,63 +75,110 @@ declare module 'vona-module-home-user' {
62
75
 
63
76
  }
64
77
  export interface IModuleEntity {
78
+ role: EntityRole;
65
79
  user: EntityUser;
80
+ userRole: EntityUserRole;
66
81
  }
67
82
  /** entity: end */
68
83
  /** entity: begin */
69
84
  declare module 'vona-module-home-user' {
70
85
 
86
+ export interface EntityRole {
87
+ get $table(): 'homeRole';
88
+ $column: <K extends keyof Omit<EntityRole, '$column' | '$columns' | '$table'>>(column: K) => K;
89
+ $columns: <K extends keyof Omit<EntityRole, '$column' | '$columns' | '$table'>>(...columns: K[]) => K[];
90
+ }
91
+
71
92
  export interface EntityUser {
93
+ get $table(): 'homeUser';
72
94
  $column: <K extends keyof Omit<EntityUser, '$column' | '$columns' | '$table'>>(column: K) => K;
73
95
  $columns: <K extends keyof Omit<EntityUser, '$column' | '$columns' | '$table'>>(...columns: K[]) => K[];
74
96
  }
75
97
 
98
+ export interface EntityUserRole {
99
+ get $table(): 'homeUserRole';
100
+ $column: <K extends keyof Omit<EntityUserRole, '$column' | '$columns' | '$table'>>(column: K) => K;
101
+ $columns: <K extends keyof Omit<EntityUserRole, '$column' | '$columns' | '$table'>>(...columns: K[]) => K[];
102
+ }
103
+
104
+ export interface IEntityOptionsRole {
105
+ fields?: TypeEntityOptionsFields<EntityRole, IEntityOptionsRole['fieldsMore']>;
106
+ }
107
+
76
108
  export interface IEntityOptionsUser {
77
109
  fields?: TypeEntityOptionsFields<EntityUser, IEntityOptionsUser['fieldsMore']>;
78
110
  }
111
+
112
+ export interface IEntityOptionsUserRole {
113
+ fields?: TypeEntityOptionsFields<EntityUserRole, IEntityOptionsUserRole['fieldsMore']>;
114
+ }
79
115
  }
80
- /** controller: end */
81
- /** config: begin */
82
- export * from '../config/config.ts';
116
+ /** service: end */
117
+ /** controller: begin */
118
+ export * from '../controller/passport.ts';
119
+ /** meta: end */
120
+ /** dto: begin */
121
+ export * from '../dto/auth.ts';
122
+ export * from '../dto/passport.ts';
83
123
  declare module 'vona-module-a-database' {
84
124
 
85
125
  export interface IModelRecord {
126
+ 'home-user:role': IDecoratorModelOptions;
86
127
  'home-user:user': IDecoratorModelOptions;
128
+ 'home-user:userRole': IDecoratorModelOptions;
87
129
  }
88
130
 
89
131
  }
90
132
  declare module 'vona-module-home-user' {
91
133
 
134
+ export interface ModelRole {
135
+ /** @internal */
136
+ get scope(): ScopeModuleHomeUser;
137
+ }
138
+
92
139
  export interface ModelUser {
93
140
  /** @internal */
94
141
  get scope(): ScopeModuleHomeUser;
95
142
  }
143
+
144
+ export interface ModelUserRole {
145
+ /** @internal */
146
+ get scope(): ScopeModuleHomeUser;
147
+ }
96
148
  }
97
149
  export interface IModuleModel {
150
+ role: ModelRole;
98
151
  user: ModelUser;
152
+ userRole: ModelUserRole;
99
153
  }
100
- /** service: end */
101
- /** controller: begin */
102
- export * from '../controller/passport.ts';
154
+ export * from '../dto/passportJwt.ts';
155
+ /** entity: begin */
156
+ export * from '../entity/role.ts';
103
157
  declare module 'vona' {
104
158
 
105
159
  export interface IMetaRecord {
160
+ 'home-user:index': IMetaOptionsIndex;
106
161
  'home-user:version': never;
107
162
  }
108
163
 
109
164
  }
110
165
  declare module 'vona-module-home-user' {
111
166
 
167
+ export interface MetaIndex {
168
+ /** @internal */
169
+ get scope(): ScopeModuleHomeUser;
170
+ }
171
+
112
172
  export interface MetaVersion {
113
173
  /** @internal */
114
174
  get scope(): ScopeModuleHomeUser;
115
175
  }
116
176
  }
117
- /** meta: end */
118
- /** dto: begin */
119
- export * from '../dto/auth.ts';
120
- export * from '../dto/passport.ts';
121
- export * from '../dto/passportJwt.ts';
177
+ export * from '../entity/user.ts';
178
+ export * from '../entity/userRole.ts';
179
+ /** entity: end */
180
+ /** model: begin */
181
+ export * from '../model/role.ts';
122
182
  declare module 'vona-module-a-web' {
123
183
 
124
184
  export interface IDtoRecord {
@@ -145,16 +205,14 @@ declare module 'vona-module-home-user' {
145
205
  fields?: TypeEntityOptionsFields<DtoPassportJwt, IDtoOptionsPassportJwt['fieldsMore']>;
146
206
  }
147
207
  }
148
- /** entity: begin */
149
- export * from '../entity/user.ts';
150
- /** entity: end */
151
- /** model: begin */
152
208
  export * from '../model/user.ts';
209
+ export * from '../model/userRole.ts';
153
210
  /** dto: end */
154
211
  /** service: begin */
155
212
  export * from '../service/authInnerAdapter.ts';
156
213
  export * from '../service/authTokenAdapter.ts';
157
214
  export * from '../service/passportAdapter.ts';
215
+ export * from '../service/redisToken.ts';
158
216
  declare module 'vona-module-a-web' {
159
217
 
160
218
  export interface IServiceRecord {
@@ -162,6 +220,7 @@ declare module 'vona-module-a-web' {
162
220
  'home-user:authTokenAdapter': never;
163
221
  'home-user:passportAdapter': never;
164
222
  'home-user:redisToken': never;
223
+ 'home-user:roleInnerAdapter': never;
165
224
  'home-user:userInnerAdapter': never;
166
225
  }
167
226
 
@@ -188,6 +247,11 @@ declare module 'vona-module-home-user' {
188
247
  get scope(): ScopeModuleHomeUser;
189
248
  }
190
249
 
250
+ export interface ServiceRoleInnerAdapter {
251
+ /** @internal */
252
+ get scope(): ScopeModuleHomeUser;
253
+ }
254
+
191
255
  export interface ServiceUserInnerAdapter {
192
256
  /** @internal */
193
257
  get scope(): ScopeModuleHomeUser;
@@ -198,6 +262,7 @@ export interface IModuleService {
198
262
  authTokenAdapter: ServiceAuthTokenAdapter;
199
263
  passportAdapter: ServicePassportAdapter;
200
264
  redisToken: ServiceRedisToken;
265
+ roleInnerAdapter: ServiceRoleInnerAdapter;
201
266
  userInnerAdapter: ServiceUserInnerAdapter;
202
267
  }
203
268
  declare module 'vona' {
@@ -206,10 +271,11 @@ declare module 'vona' {
206
271
  'home-user.service.authTokenAdapter': ServiceAuthTokenAdapter;
207
272
  'home-user.service.passportAdapter': ServicePassportAdapter;
208
273
  'home-user.service.redisToken': ServiceRedisToken;
274
+ 'home-user.service.roleInnerAdapter': ServiceRoleInnerAdapter;
209
275
  'home-user.service.userInnerAdapter': ServiceUserInnerAdapter;
210
276
  }
211
277
  }
212
- export * from '../service/redisToken.ts';
278
+ export * from '../service/roleInnerAdapter.ts';
213
279
  declare module 'vona-module-a-web' {
214
280
 
215
281
  export interface IControllerRecord {
@@ -0,0 +1,16 @@
1
+ import type { IMetaOptionsIndex } from 'vona-module-a-index';
2
+ import { BeanBase } from 'vona';
3
+ import { $tableColumns } from 'vona-module-a-database';
4
+ import { Meta } from 'vona-module-a-meta';
5
+ import { EntityRole } from '../entity/role.ts';
6
+ import { EntityUser } from '../entity/user.ts';
7
+ import { EntityUserRole } from '../entity/userRole.ts';
8
+
9
+ @Meta<IMetaOptionsIndex>({
10
+ indexes: {
11
+ ...$tableColumns(() => EntityUser, entity => entity.name),
12
+ ...$tableColumns(() => EntityRole, entity => entity.name),
13
+ ...$tableColumns(() => EntityUserRole, entity => [entity.userId, entity.roleId]),
14
+ },
15
+ })
16
+ export class MetaIndex extends BeanBase {}
@@ -6,6 +6,12 @@ import { Meta } from 'vona-module-a-meta';
6
6
  export class MetaVersion extends BeanBase implements IMetaVersionUpdate, IMetaVersionInit {
7
7
  async update(options: IMetaVersionUpdateOptions) {
8
8
  if (options.version === 1) {
9
+ // homeRole
10
+ const entityRole = this.scope.entity.role;
11
+ await this.bean.model.createTable(entityRole.$table, table => {
12
+ table.basicFields();
13
+ table.string(entityRole.$column('name'), 255);
14
+ });
9
15
  // homeUser
10
16
  const entityUser = this.scope.entity.user;
11
17
  await this.bean.model.createTable(entityUser.$table, table => {
@@ -14,17 +20,33 @@ export class MetaVersion extends BeanBase implements IMetaVersionUpdate, IMetaVe
14
20
  table.string(entityUser.$column('avatar'), 255);
15
21
  table.string(entityUser.$column('locale'), 255);
16
22
  });
23
+ // homeUserRole
24
+ const entityUserRole = this.scope.entity.userRole;
25
+ await this.bean.model.createTable(entityUserRole.$table, table => {
26
+ table.basicFields();
27
+ table.tableIdentity('userId');
28
+ table.tableIdentity('roleId');
29
+ });
17
30
  }
18
31
  }
19
32
 
20
33
  async init(options: IMetaVersionInitOptions) {
21
34
  if (options.version === 1) {
22
- // admin
23
- await this.scope.model.user.insert({
35
+ // role: admin
36
+ const roleAdmin = await this.scope.model.role.insert({
37
+ name: 'admin',
38
+ });
39
+ // user: admin
40
+ const userAdmin = await this.scope.model.user.insert({
24
41
  name: 'admin',
25
42
  avatar: ':emoji:flower',
26
43
  locale: undefined,
27
44
  });
45
+ // userRole: admin
46
+ await this.scope.model.userRole.insert({
47
+ userId: userAdmin.id,
48
+ roleId: roleAdmin.id,
49
+ });
28
50
  }
29
51
  }
30
52
  }
@@ -1,6 +1,7 @@
1
1
  import type { IAuthenticateOptions, IAuthProviderRecord } from 'vona-module-a-auth';
2
2
  import type { IJwtToken } from 'vona-module-a-jwt';
3
3
  import type { IDecoratorControllerOptions } from 'vona-module-a-web';
4
+ import type { EntityRole } from '../entity/role.ts';
4
5
  import type { EntityUser } from '../entity/user.ts';
5
6
  import { BeanBase } from 'vona';
6
7
  import { DtoAuthSimple } from 'vona-module-a-authsimple';
@@ -111,6 +112,7 @@ export class ControllerPassport extends BeanBase {
111
112
  return {
112
113
  user: passport.user as EntityUser,
113
114
  auth: { id: passport.auth!.id },
115
+ roles: passport.roles as EntityRole[],
114
116
  };
115
117
  }
116
118
  }
@@ -1,6 +1,7 @@
1
1
  import type { IDecoratorDtoOptions } from 'vona-module-a-web';
2
- import { Api } from 'vona-module-a-openapi';
2
+ import { Api, v } from 'vona-module-a-openapi';
3
3
  import { Dto } from 'vona-module-a-web';
4
+ import { EntityRole } from 'vona-module-home-user';
4
5
  import { EntityUser } from '../entity/user.ts';
5
6
  import { DtoAuth } from './auth.ts';
6
7
 
@@ -13,4 +14,7 @@ export class DtoPassport {
13
14
 
14
15
  @Api.field()
15
16
  auth: DtoAuth;
17
+
18
+ @Api.field(v.array(EntityRole))
19
+ roles: EntityRole[];
16
20
  }
@@ -0,0 +1,11 @@
1
+ import type { IDecoratorEntityOptions } from 'vona-module-a-database';
2
+ import { Entity, EntityBase } from 'vona-module-a-database';
3
+ import { Api } from 'vona-module-a-openapi';
4
+
5
+ export interface IEntityOptionsRole extends IDecoratorEntityOptions {}
6
+
7
+ @Entity<IEntityOptionsRole>('homeRole')
8
+ export class EntityRole extends EntityBase {
9
+ @Api.field()
10
+ name: string;
11
+ }
@@ -0,0 +1,14 @@
1
+ import type { IDecoratorEntityOptions, TableIdentity } from 'vona-module-a-database';
2
+ import { Entity, EntityBase } from 'vona-module-a-database';
3
+ import { Api, v } from 'vona-module-a-openapi';
4
+
5
+ export interface IEntityOptionsUserRole extends IDecoratorEntityOptions {}
6
+
7
+ @Entity<IEntityOptionsUserRole>('homeUserRole')
8
+ export class EntityUserRole extends EntityBase {
9
+ @Api.field(v.tableIdentity())
10
+ userId: TableIdentity;
11
+
12
+ @Api.field(v.tableIdentity())
13
+ roleId: TableIdentity;
14
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './authAdapter.ts';
2
+ export * from './roleAdapter.ts';
2
3
  export * from './userAdapter.ts';
@@ -0,0 +1,15 @@
1
+ import type { TableIdentity } from 'vona-module-a-database';
2
+ import type { IRoleBase } from 'vona-module-a-user';
3
+ import type { IRole } from '../types/role.ts';
4
+ import { cast } from 'vona';
5
+ import { setRoleAdapter } from 'vona-module-a-user';
6
+
7
+ setRoleAdapter({ getRoleId, getRoleName });
8
+
9
+ function getRoleId(role: IRoleBase): TableIdentity {
10
+ return cast<IRole>(role).id;
11
+ }
12
+
13
+ function getRoleName(role: IRoleBase): string {
14
+ return cast<IRole>(role).name;
15
+ }
@@ -0,0 +1,5 @@
1
+ import { BeanModelBase, Model } from 'vona-module-a-database';
2
+ import { EntityRole } from '../entity/role.ts';
3
+
4
+ @Model({ entity: EntityRole })
5
+ export class ModelRole extends BeanModelBase<EntityRole> {}
@@ -0,0 +1,5 @@
1
+ import { BeanModelBase, Model } from 'vona-module-a-database';
2
+ import { EntityUserRole } from '../entity/userRole.ts';
3
+
4
+ @Model({ entity: EntityUserRole })
5
+ export class ModelUserRole extends BeanModelBase<EntityUserRole> {}
@@ -5,10 +5,10 @@ import { Service } from 'vona-module-a-web';
5
5
 
6
6
  @Service()
7
7
  export class ServiceAuthInnerAdapter extends BeanBase implements IAuthInnerAdapter {
8
- async get(auth: Partial<IAuth>): Promise<IAuthBase | undefined> {
8
+ async findOne(auth: Partial<IAuth>): Promise<IAuthBase | undefined> {
9
9
  const beanFullName = beanFullNameFromOnionName(this.scope.config.adapter.authInner, 'service');
10
10
  const beanAuth = this.bean._getBean<IAuthInnerAdapter>(beanFullName as never);
11
- if (beanAuth) return await beanAuth.get(auth);
11
+ if (beanAuth) return await beanAuth.findOne(auth);
12
12
  return auth as unknown as IAuthBase | undefined;
13
13
  }
14
14
  }
@@ -21,10 +21,11 @@ export class ServicePassportAdapter extends BeanBase implements IPassportAdapter
21
21
  }
22
22
 
23
23
  async deserialize(payloadData: IPayloadData): Promise<IPassportBase | undefined> {
24
- const user = await this.bean.userInner.get({ id: payloadData.userId });
24
+ const user = await this.bean.userInner.findOne({ id: payloadData.userId });
25
25
  if (!user) return;
26
- const auth = await this.bean.authInner.get({ id: payloadData.authId });
26
+ const auth = await this.bean.authInner.findOne({ id: payloadData.authId });
27
27
  if (!auth) return;
28
- return { user, auth };
28
+ const roles = await this.bean.roleInner.findAllByUserId(payloadData.userId);
29
+ return { user, auth, roles };
29
30
  }
30
31
  }
@@ -0,0 +1,21 @@
1
+ import type { TableIdentity } from 'table-identity';
2
+ import type { IRoleBase, IRoleInnerAdapter } from 'vona-module-a-user';
3
+ import type { IRole } from '../types/role.ts';
4
+ import { BeanBase } from 'vona';
5
+ import { Service } from 'vona-module-a-web';
6
+
7
+ @Service()
8
+ export class ServiceRoleInnerAdapter extends BeanBase implements IRoleInnerAdapter {
9
+ async findOneByName(name: string): Promise<IRoleBase | undefined> {
10
+ return await this.findOne({ name });
11
+ }
12
+
13
+ async findOne(role: Partial<IRole>): Promise<IRoleBase | undefined> {
14
+ return await this.scope.model.role.get(role);
15
+ }
16
+
17
+ async findAllByUserId(userId: TableIdentity): Promise<IRoleBase[]> {
18
+ const userRoles = await this.scope.model.userRole.select({ where: { userId } });
19
+ return await this.scope.model.role.select({ where: { id: userRoles.map(item => item.roleId) } });
20
+ }
21
+ }
@@ -17,11 +17,11 @@ export class ServiceUserInnerAdapter extends BeanBase implements IUserInnerAdapt
17
17
  return { id: -1, name: 'anonymous', avatar: undefined, locale: undefined } as IUserBase;
18
18
  }
19
19
 
20
- async getByName(name: string): Promise<IUserBase | undefined> {
21
- return await this.get({ name });
20
+ async findOneByName(name: string): Promise<IUserBase | undefined> {
21
+ return await this.findOne({ name });
22
22
  }
23
23
 
24
- async get(user: Partial<IUser>): Promise<IUserBase | undefined> {
24
+ async findOne(user: Partial<IUser>): Promise<IUserBase | undefined> {
25
25
  return await this.scope.model.user.get(user);
26
26
  }
27
27
 
@@ -29,7 +29,7 @@ export class ServiceUserInnerAdapter extends BeanBase implements IUserInnerAdapt
29
29
  await this.scope.model.user.update(user);
30
30
  }
31
31
 
32
- async delete(user: Partial<IUser>): Promise<void> {
32
+ async remove(user: Partial<IUser>): Promise<void> {
33
33
  await this.scope.model.user.delete(user);
34
34
  }
35
35
  }
@@ -1,3 +1,4 @@
1
1
  export * from './auth.ts';
2
2
  export * from './passport.ts';
3
+ export * from './role.ts';
3
4
  export * from './user.ts';
@@ -0,0 +1,5 @@
1
+ import type { IRoleBase } from 'vona-module-a-user';
2
+
3
+ export interface IRole extends IRoleBase {
4
+ name: string;
5
+ }
@@ -2,7 +2,13 @@
2
2
  "extends": "../../tsconfig.base",
3
3
  "compilerOptions": {
4
4
  "rootDir": "src",
5
+ "declaration": true,
6
+ "emitDeclarationOnly": true,
5
7
  "outDir": "dist"
6
8
  },
7
- "include": ["src", "src/.metadata/*.ts", "src/**/*.json"]
9
+ "include": [
10
+ "src",
11
+ "src/.metadata/*.ts",
12
+ "src/**/*.json"
13
+ ]
8
14
  }