owl-cli 7.17.0 → 7.19.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.
@@ -0,0 +1,33 @@
1
+ # id 生成
2
+
3
+ ## 默认规则
4
+ 默认无需任何配置,id会自动生成,格式为:`owl_{obj_type}_{seq}`,其中:
5
+ - `obj_type` 为对象类型,例如:`user`、`group`、`policy` 等
6
+ - `seq` 为序列号,从 50000 开始递增
7
+
8
+ ## 自定义规则
9
+ ```
10
+ "#meta":{
11
+ "id": "<%=#shop_id + orgId%>",
12
+ ...
13
+ }
14
+ ```
15
+
16
+ 在#meta中配置id规则时,支持使用变量,变量格式为:`<%=#var_name%>`,其中:
17
+ - `var_name` 为变量名,例如:`shop_id`、`orgId` 等,这些变量就是对象中的字段
18
+
19
+
20
+ ## 主要用法
21
+
22
+ ### 实现对象的上下级关系
23
+
24
+ 比如在org_user对象中,一个org_user代表了一个组织下的用户,用户的org_user的Id为:`<%=#orgId + userId%>`,
25
+ 其中:
26
+ - `orgId` 为组织id
27
+ - `userId` 为用户id
28
+
29
+
30
+
31
+
32
+
33
+
@@ -0,0 +1,42 @@
1
+ # 权限管理
2
+ # 插件权限
3
+ 在 Owl 平台中,可以通过为插件分配权限来控制哪些用户或用户组可以访问和使用特定的插件功能。这有助于确保系统的安全性和数据的完整性。
4
+ ```
5
+ //#import @owl:utils/PermissionUtil.jsx
6
+
7
+ checkBackendPluginPermission(pluginId);
8
+
9
+ 如果用户没有权限执行此操作,会抛出异常。
10
+
11
+ ```
12
+
13
+ 我们用一个例子说明:
14
+
15
+ ```
16
+
17
+ //#import $owl_mall_u:services/modelService.jsx
18
+ //#import $org_user:services/modelService.jsx
19
+ //#import @owl:utils/PermissionUtil.jsx
20
+
21
+ function main(){
22
+ var params = JSON.parse($body);
23
+ var data = params.data;
24
+ var id = params.id;
25
+
26
+
27
+ try{
28
+ checkBackendPluginPermission("addUserToGroupPlugin");
29
+ }catch(errmsg){
30
+ var ret = {
31
+ state:"err",
32
+ msg:errmsg
33
+ }
34
+ out.print(JSON.stringify(ret));
35
+ return;
36
+ }
37
+ ......
38
+ }
39
+
40
+ ```
41
+
42
+
@@ -0,0 +1,76 @@
1
+ //#import $owl_mall_u:services/modelService.jsx
2
+ //#import $org_user:services/modelService.jsx
3
+ //#import @handlers/include/checklogin.jsx
4
+ //#import @owl:utils/PermissionUtil.jsx
5
+
6
+ function main(){
7
+ var params = JSON.parse($body);
8
+ var data = params.data;
9
+ var id = params.id;
10
+
11
+
12
+ try{
13
+ checkBackendPluginPermission("addUserToGroupPlugin");
14
+ }catch(errmsg){
15
+ var ret = {
16
+ state:"err",
17
+ msg:errmsg
18
+ }
19
+ out.print(JSON.stringify(ret));
20
+ return;
21
+ }
22
+
23
+
24
+
25
+
26
+
27
+
28
+ var mobile = data.mobile;
29
+ var admin = owl_mall_uService.getUniqueObj('mobile',mobile);
30
+ if(!admin){
31
+ admin = owl_mall_uService.getUniqueObj('loginId',mobile);
32
+ }
33
+ if(!admin){
34
+ admin = owl_mall_uService.getUniqueObj('email',mobile);
35
+ }
36
+ if(!admin){
37
+ var ret = {
38
+ state:"err",
39
+ msg:"手机号不存在"
40
+ }
41
+ out.print(JSON.stringify(ret));
42
+ return;
43
+ }
44
+
45
+ // 检查用户是否已存在于org_user中
46
+ var existingOrgUser = org_userService.getUniqueObj('userId',admin.id);
47
+ if(existingOrgUser){
48
+ var ret = {
49
+ state:"err",
50
+ msg:"用户已经存在,请勿重复添加"
51
+ }
52
+ out.print(JSON.stringify(ret));
53
+ return;
54
+ }
55
+
56
+ // 创建org_user记录
57
+ var orgUser = {
58
+ userId: admin.id,
59
+ name: admin.name || admin.loginId,
60
+ loginId: admin.loginId,
61
+ realName: admin.realName,
62
+ nickName: admin.nickName,
63
+ mobile: admin.mobile,
64
+ email: admin.email,
65
+ isEnable: 1
66
+ };
67
+
68
+ org_userService.add(orgUser);
69
+
70
+ var ret = {
71
+ state:"ok",
72
+ msg:"操作成功,请过几秒后刷新。"
73
+ }
74
+ out.print(JSON.stringify(ret));
75
+ }
76
+ main();
@@ -0,0 +1,51 @@
1
+ {
2
+ "id": "string(12),formSize:2,disabled:true,searchable:true;客户Id",
3
+ "userId": "string(12),isId:true;用户Id",
4
+ "orgId": "string(16),formSize:2,searchable:true;所属商家Id",
5
+ "orgName": "string(16),formSize:2,searchable:true;所属商家",
6
+ "isEnable": "choice,formSize:2,listSize:4,values:1_正常/0_冻结_#be0027,defaultValue:1,searchable:true,hidden:false;状态",
7
+ "name": "string(12),listSize:5,formSize:2,searchable:true;名称",
8
+ "loginId": "string(12),listSize:5,formSize:2,searchable:true,unique:true;登录Id",
9
+ "realName": "string(12),listSize:5,formSize:2,searchable:true;真实姓名",
10
+ "nickName": "string(12),listSize:5,formSize:2,searchable:true;昵称",
11
+ "mobile": "string(16),listSize:5,inputType:mobile,formSize:2,searchable:true,unique:true;手机",
12
+ "email": "string(64),formSize:2,searchable:true,unique:true;邮箱",
13
+ "_t": "org_user",
14
+ "#meta": {
15
+ "rem": "客户管理",
16
+ "id": "<%=#orgId + '_' + userId%>",
17
+ "projectName": "电商",
18
+ "changeLogEnabled": true,
19
+
20
+ "parent": [
21
+ "platform"
22
+ ],
23
+ "visitType": [
24
+ "platform"
25
+ ],
26
+
27
+ "pos": 1,
28
+ "group": {
29
+ "id": "mall_user",
30
+ "name": "会员管理",
31
+ "icon": "user",
32
+ "pos": 6
33
+ },
34
+
35
+ "formPlugins": [
36
+ {
37
+ "label": "添加客户",
38
+ "id": "addUserToGroupPlugin",
39
+ "action": "/owl_org_user/plugins/addUserToGroup.jsx",
40
+ "responseAction": "showMessage",
41
+ "inputForm": {
42
+ "label":"添加客户",
43
+ "fields": {
44
+ "mobile": "string(16),isMobile:true,formSize:8;手机或邮箱或loginId"
45
+ }
46
+ },
47
+ "position": "listItem,form"
48
+ }
49
+ ]
50
+ }
51
+ }
@@ -1,5 +1,5 @@
1
1
  //#import $owl_permission:services/modelService.jsx
2
-
2
+ //#import $owlPermission:services/RolesService.jsx
3
3
 
4
4
  function getPermissions(roleId){
5
5
  var searchArgs = {
@@ -44,4 +44,137 @@ function checkPluginPermission(pluginId, permissions) {
44
44
  }
45
45
  }
46
46
  return false;
47
- }
47
+ }
48
+
49
+ function checkPluginPermissionByRoleId(pluginId, roleId) {
50
+ var permissions = getPermissions(roleId);
51
+ return checkPluginPermission(pluginId, permissions);
52
+ }
53
+
54
+ function checkUserHasRole(userId, roleId,orgId){
55
+ // 检查用户时候拥有某个角色
56
+ var roles = getRoles(orgId,userId);
57
+ if(isRoleOk(roles,roleId)){
58
+ return true;
59
+ }
60
+ return false;
61
+ }
62
+
63
+ function checklogin() {
64
+ var magic = $.getSystemProperty("magic");
65
+ var magicParams = $.params.ma;
66
+ var m = '0';//默认是 平台
67
+ if (magic === magicParams) {
68
+ //代表是内部操作
69
+ var user = {
70
+ uid: 'internal',
71
+ loginId: "internal",
72
+ name: "系统内部访问",
73
+ allowed_appIds: ["*"]
74
+ }
75
+
76
+ var env = {
77
+ now: new Date().getTime(),
78
+ loginUserId: 'internal',
79
+ loginId: 'internal',
80
+ // loginUser:user,
81
+ shopId: m,
82
+ warehouseId: "",
83
+ roleId: 'internal',
84
+ orgId: 'internal',
85
+ orgIds: 'internal',
86
+ m: m
87
+ }
88
+ return env;
89
+
90
+ } else {
91
+ var params = JSON.parse($body);
92
+ var token = params._req_token
93
+ if(token){
94
+ var token_user = getUserByToken(token);
95
+ if(token_user){
96
+ var env = {
97
+ now: new Date().getTime(),
98
+ loginUserId: token_user.id,
99
+ loginId: token_user.id,
100
+ // loginUser:loginUser,
101
+ shopId: m,
102
+ warehouseId: "",
103
+ roleId: params.rroleId,
104
+ orgId: params.rorgId,
105
+ orgIds: null,
106
+ m: m
107
+ }
108
+ return env;
109
+ }
110
+ else{
111
+ var ret = {
112
+ state: 'err',
113
+ code: 'not valid token',
114
+ msg: "not valid token"
115
+ }
116
+ out.print(JSON.stringify(ret));
117
+ return null;
118
+ }
119
+ }
120
+ var isid = SessionService.getSessionId(request);
121
+ var now = new Date().getTime();
122
+ var sessionId = 'owl_backend_session_' + isid;
123
+ var session = owl_backend_sessionService.get(sessionId);
124
+ if (session && session.lastModified > now - 7 * 24 * 3600 * 1000) {
125
+ var loginUserId = session.userId
126
+ var roleId = params.rroleId || session.roleId;
127
+ var orgId = params.rorgId || session.orgId;
128
+ var orgIds = [orgId].concat(getParentOrgIds(orgId));
129
+ if (loginUserId) {
130
+ // var loginUser = owl_mall_uService.get(loginUserId);
131
+ var env = {
132
+ now: new Date().getTime(),
133
+ loginUserId: loginUserId,
134
+ loginId: loginUserId,
135
+ // loginUser:loginUser,
136
+ shopId: m,
137
+ warehouseId: "",
138
+ roleId: roleId,
139
+ orgId: orgId,
140
+ orgIds: orgIds,
141
+ m: m
142
+ }
143
+ return env;
144
+ } else {
145
+ var ret = {
146
+ state: 'err',
147
+ code: 'no login',
148
+ msg: "not login!"
149
+ }
150
+ out.print(JSON.stringify(ret));
151
+ return null;
152
+ }
153
+ } else {
154
+ var ret = {
155
+ state: 'err',
156
+ code: 'no login',
157
+ msg: "not login!"
158
+ }
159
+ out.print(JSON.stringify(ret));
160
+ return null;
161
+ }
162
+ }
163
+ }
164
+
165
+ function checkBackendPluginPermission(pluginId){
166
+ var env = checklogin();
167
+ var roleId = env.roleId
168
+ var orgId = env.orgId;
169
+ var loginUserId = env.loginUserId;
170
+
171
+ if(!checkUserHasRole(loginUserId, roleId, orgId)){
172
+ throw "用户角色异常";
173
+ }
174
+
175
+ if(!checkPluginPermissionByRoleId( pluginId,rroleId)){
176
+ throw "没有权限执行此操作";
177
+ }
178
+
179
+
180
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owl-cli",
3
- "version": "7.17.0",
3
+ "version": "7.19.0",
4
4
  "main": "index.js",
5
5
  "preferGlobal": true,
6
6
  "bin": {