owl-cli 6.16.0 → 6.18.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.
@@ -4,23 +4,23 @@
4
4
  //#import $owl_orgs:services/modelService.jsx
5
5
  //#import $owl_permission:services/modelService.jsx
6
6
 
7
- function getParentOrgIds(orgId){
8
- if(orgId=='0'){
7
+ function getParentOrgIds(orgId) {
8
+ if (orgId == '0') {
9
9
  return ['0'];
10
10
  }
11
11
 
12
12
  var org = owl_orgsService.get(orgId);
13
- if(org){
13
+ if (org) {
14
14
  return org.parentPathIds;
15
15
  }
16
16
  return [orgId];
17
17
  }
18
18
 
19
- function checklogin(){
19
+ function checklogin() {
20
20
  var magic = $.getSystemProperty("magic");
21
21
  var magicParams = $.params.ma;
22
22
  var m = '0';//默认是 平台
23
- if(magic === magicParams){
23
+ if (magic === magicParams) {
24
24
  //代表是内部操作
25
25
  var user = {
26
26
  uid: 'internal',
@@ -30,45 +30,42 @@ function checklogin(){
30
30
  }
31
31
 
32
32
  return user;
33
- }
34
- else{
33
+ } else {
35
34
  var isid = SessionService.getSessionId(request);
36
35
  var now = new Date().getTime();
37
36
  var sessionId = 'owl_backend_session_' + isid;
38
37
  var session = owl_backend_sessionService.get(sessionId);
39
- if(session && session.lastModified > now - 7*24*3600*1000){
38
+ if (session && session.lastModified > now - 7 * 24 * 3600 * 1000) {
40
39
  var loginUserId = session.userId
41
40
  var roleId = session.roleId;
42
41
  var orgId = session.orgId;
43
42
  var orgIds = [orgId].concat(getParentOrgIds(orgId));
44
- if(loginUserId){
43
+ if (loginUserId) {
45
44
  var env = {
46
45
  now: new Date().getTime(),
47
46
  loginId: loginUserId,
48
- shopId:m,
49
- warehouseId:"",
50
- roleId:roleId,
51
- orgId:orgId,
52
- orgIds:orgIds,
53
- m:m
47
+ shopId: m,
48
+ warehouseId: "",
49
+ roleId: roleId,
50
+ orgId: orgId,
51
+ orgIds: orgIds,
52
+ m: m
54
53
  }
55
54
  return env;
56
- }
57
- else{
55
+ } else {
58
56
  var ret = {
59
- state:'err',
60
- code:'no login',
61
- msg:"not login!"
57
+ state: 'err',
58
+ code: 'no login',
59
+ msg: "not login!"
62
60
  }
63
61
  out.print(JSON.stringify(ret));
64
62
  return null;
65
63
  }
66
- }
67
- else{
64
+ } else {
68
65
  var ret = {
69
- state:'err',
70
- code:'no login',
71
- msg:"not login!"
66
+ state: 'err',
67
+ code: 'no login',
68
+ msg: "not login!"
72
69
  }
73
70
  out.print(JSON.stringify(ret));
74
71
  return null;
@@ -76,42 +73,87 @@ function checklogin(){
76
73
  }
77
74
  }
78
75
 
79
- function getPermissions(roleId,tableId){
76
+ function getPermissions(roleId, tableId) {
80
77
  var searchArgs = {
81
- roleId:roleId,
82
- tableId:tableId
78
+ roleId: roleId,
79
+ tableId: tableId
83
80
  }
84
- var sr = owl_permissionService.search("0",searchArgs,null,0,10000,null);
85
- if(sr.state==='ok'){
81
+ var sr = owl_permissionService.search("0", searchArgs, null, 0, 10000, null);
82
+ if (sr.state === 'ok') {
86
83
  return sr.list;
87
84
  }
88
85
  return [];
89
86
  }
90
87
 
91
- function expandSectionPermission(permissions){
88
+ function expandTablePermission(permissions) {
89
+ var same_org = {
90
+ };
91
+
92
+ var sub_org = {
93
+
94
+ };
95
+
96
+ for (var i = 0; i < permissions.length; i++) {
97
+ var p = permissions[i];
98
+ if(same_org.read!='denied' && p.same_org.read){
99
+ same_org.read = p.same_org.read;
100
+ }
101
+ if(same_org.update!='denied' && p.same_org.update){
102
+ same_org.update = p.same_org.update;
103
+ }
104
+ if(same_org.del!='denied' && p.same_org.del){
105
+ same_org.del = p.same_org.del;
106
+ }
107
+ if(same_org.add!='denied' && p.same_org.add){
108
+ same_org.add = p.same_org.add;
109
+ }
110
+
111
+
112
+ if(sub_org.read!='denied' && p.sub_org.read){
113
+ sub_org.read = p.sub_org.read;
114
+ }
115
+ if(sub_org.update!='denied' && p.sub_org.update){
116
+ sub_org.update = p.sub_org.update;
117
+ }
118
+ if(sub_org.del!='denied' && p.sub_org.del){
119
+ same_org.del = p.same_org.del;
120
+ }
121
+ if(sub_orgadd!='denied' && p.sub_org.add){
122
+ sub_org.add = p.sub_org.add;
123
+ }
124
+ }
125
+
126
+ return {
127
+ same_org:same_org,
128
+ sub_org:sub_org
129
+ }
130
+
131
+ }
132
+
133
+ function expandSectionPermission(permissions) {
92
134
  var same_org = {
93
- "*":"allowed"
135
+ "*": "allowed"
94
136
  };
95
137
  var sub_org = {
96
- "*":"allowed"
138
+ "*": "allowed"
97
139
  };
98
140
 
99
- for(var i=0; i<permissions.length; i++){
141
+ for (var i = 0; i < permissions.length; i++) {
100
142
  var p = permissions[i];
101
143
  var sections_same_org = p.sections_same_org;
102
144
  var sections_sub_org = p.sections_sub_org;
103
- if(sections_same_org){
104
- for(var j=0; j<sections_same_org.length; j++){
145
+ if (sections_same_org) {
146
+ for (var j = 0; j < sections_same_org.length; j++) {
105
147
  var sec = sections_same_org[j];
106
- if(sec.sectionKey){
148
+ if (sec.sectionKey) {
107
149
  same_org[sec.sectionKey] = sec;
108
150
  }
109
151
  }
110
152
  }
111
- if(sections_sub_org){
112
- for(var j=0; j<sections_sub_org.length; j++){
153
+ if (sections_sub_org) {
154
+ for (var j = 0; j < sections_sub_org.length; j++) {
113
155
  var sec = sections_sub_org[j];
114
- if(sec.sectionKey ){
156
+ if (sec.sectionKey) {
115
157
  sub_org[sec.sectionKey] = sec;
116
158
  }
117
159
  }
@@ -119,35 +161,35 @@ function expandSectionPermission(permissions){
119
161
  }
120
162
 
121
163
  return {
122
- same_org:same_org,
164
+ same_org: same_org,
123
165
  sub_org: sub_org
124
166
  }
125
167
  }
126
168
 
127
- function expandFieldPermission(permissions){
169
+ function expandFieldPermission(permissions) {
128
170
  var same_org = {
129
- "*":{read:"allowed"}
171
+ "*": {read: "allowed"}
130
172
  }
131
173
  var sub_org = {
132
- "*":{read:"allowed"}
174
+ "*": {read: "allowed"}
133
175
  }
134
- for(var i=0; i<permissions.length; i++){
176
+ for (var i = 0; i < permissions.length; i++) {
135
177
  var p = permissions[i];
136
- if(p.fields_same_org){
137
- for(var j=0; j<p.fields_same_org.length; j++){
178
+ if (p.fields_same_org) {
179
+ for (var j = 0; j < p.fields_same_org.length; j++) {
138
180
  var f = p.fields_same_org[j];
139
181
  var fieldKey = f.fieldKey;
140
- if(f.sectionKey && f.sectionKey!='main'){
182
+ if (f.sectionKey && f.sectionKey != 'main') {
141
183
  fieldKey = f.sectionKey + "." + f.fieldKey;
142
184
  }
143
185
  same_org[fieldKey] = f;
144
186
  }
145
187
  }
146
- if(p.fields_sub_org){
147
- for(var j=0; j<p.fields_sub_org.length; j++){
188
+ if (p.fields_sub_org) {
189
+ for (var j = 0; j < p.fields_sub_org.length; j++) {
148
190
  var f = p.fields_sub_org[j];
149
191
  var fieldKey = f.fieldKey;
150
- if(f.sectionKey && f.sectionKey!='main'){
192
+ if (f.sectionKey && f.sectionKey != 'main') {
151
193
  fieldKey = f.sectionKey + "." + f.fieldKey;
152
194
  }
153
195
  sub_org[fieldKey] = f;
@@ -155,21 +197,123 @@ function expandFieldPermission(permissions){
155
197
  }
156
198
  }
157
199
  return {
158
- same_org:same_org,
159
- sub_org:sub_org
200
+ same_org: same_org,
201
+ sub_org: sub_org
160
202
  }
161
203
  }
162
- function filterFields(data,permissions,orgId){
163
- //根据权限,将没有权限的字段删除掉
204
+
205
+ function checkObject(obj, ef_field_permissions, parentKey,action){
206
+ for(var k in obj){
207
+ var ek = parentKey + "." + k;
208
+ if(ef_field_permissions && ef_field_permissions[ek] && ef_field_permissions[ek][action]==='denied'){
209
+ throw "没有"+action + "权限,ek=" + ek;
210
+ }
211
+
212
+ }
213
+ }
214
+
215
+ function checkPermission(data, permissions, orgId, action) {
164
216
  var section_permissions = expandSectionPermission(permissions);
165
217
  var field_permissions = expandFieldPermission(permissions);
218
+ var table_permissions = expandTablePermission(permissions);
219
+
166
220
  var ef_section_permissions = null;
167
221
  var ef_field_permissions = null;
168
- if(data._orgId === orgId){
222
+ var ef_table_permissions = null;
223
+ if (data._orgId === orgId) {
169
224
  ef_section_permissions = section_permissions.same_org;
170
225
  ef_field_permissions = field_permissions.same_org;
226
+ ef_table_permissions = table_permissions.same_org;
227
+ } else {
228
+ ef_section_permissions = section_permissions.sub_org;
229
+ ef_field_permissions = field_permissions.sub_org;
230
+ ef_table_permissions = field_permissions.sub_org;
231
+
171
232
  }
172
- else{
233
+
234
+ var valid_fields = ['_orgId', '_orgIds', "_v", "del"];
235
+ if(ef_table_permissions.add === 'denied'){
236
+ throw "表没有添加记录权限。"
237
+ }
238
+ //检查section_permission
239
+ for (var k in data) {
240
+ if(valid_fields.indexOf(k)>-1){
241
+ continue;
242
+ }
243
+ var v = data[k];
244
+ //if v is section
245
+ if (typeof v === 'object') {
246
+ //ef_field_permissions
247
+ if (ef_section_permissions && ef_section_permissions[k] && ef_section_permissions[k][action] === 'denied') {
248
+ throw "section没有" + action + "权限,sectionKey=" + k
249
+ }
250
+ if(Array.isArray(v)){
251
+ for(var i=0; i<v.length; i++){
252
+ var r = v[i];
253
+ checkObject(r,ef_field_permissions,k,action);
254
+ }
255
+ }
256
+ else{
257
+ checkObject(v,ef_field_permissions,k,action);
258
+ }
259
+ }
260
+ else {
261
+ if(ef_section_permissions && ef_section_permissions[k] && ef_field_permissions[k].add === 'denied'){
262
+ throw "字段没有" + action + "权限, key=" + k
263
+ }
264
+ }
265
+
266
+ }
267
+ }
268
+
269
+ function checkUpdatePermission(data,diffresult,permissions,orgId){
270
+ var section_permissions = expandSectionPermission(permissions);
271
+ var field_permissions = expandFieldPermission(permissions);
272
+ var table_permissions = expandTablePermission(permissions);
273
+
274
+ var ef_section_permissions = null;
275
+ var ef_field_permissions = null;
276
+ var ef_table_permissions = null;
277
+ if (data._orgId === orgId) {
278
+ ef_section_permissions = section_permissions.same_org;
279
+ ef_field_permissions = field_permissions.same_org;
280
+ ef_table_permissions = table_permissions.same_org;
281
+ } else {
282
+ ef_section_permissions = section_permissions.sub_org;
283
+ ef_field_permissions = field_permissions.sub_org;
284
+ ef_table_permissions = field_permissions.sub_org;
285
+ }
286
+ if(ef_table_permissions.update === 'denied'){
287
+ throw "没有修改的权限。"
288
+ }
289
+ if(diffresult && diffresult.length>0){
290
+ for(var i=0; i<diffresult.length; i++){
291
+ var r = diffresult[i];
292
+ if(r.parentKey && r.parentKey.length>0){
293
+ if(ef_section_permissions[r.parentKey] && ef_section_permissions[r.parentKey].update ==='denied'){
294
+ throw "没有修改的权限,sectionKey=" + r.parentKey
295
+ }
296
+ else if(ef_field_permissions[r.parentKey+"." + r.fieldKey] &&ef_field_permissions[r.parentKey+"." + r.fieldKey.update]==='denied' ){
297
+ throw "没有修改字段的权限,fieldKey=" + r.parentKey+"." + r.fieldKey;
298
+ }
299
+ }
300
+
301
+ }
302
+ }
303
+
304
+ //啥都不做代表检查通过
305
+ }
306
+
307
+ function filterFields(data, permissions, orgId) {
308
+ //根据权限,将没有读权限的字段删除掉
309
+ var section_permissions = expandSectionPermission(permissions);
310
+ var field_permissions = expandFieldPermission(permissions);
311
+ var ef_section_permissions = null;
312
+ var ef_field_permissions = null;
313
+ if (data._orgId === orgId) {
314
+ ef_section_permissions = section_permissions.same_org;
315
+ ef_field_permissions = field_permissions.same_org;
316
+ } else {
173
317
  ef_section_permissions = section_permissions.sub_org;
174
318
  ef_field_permissions = field_permissions.sub_org;
175
319
  }
@@ -177,27 +321,26 @@ function filterFields(data,permissions,orgId){
177
321
  var invisibleFields = [];
178
322
  data['invisibleFields'] = invisibleFields;
179
323
 
180
- var valid_fields = ['_orgId','_orgIds',"_v", "del"];
324
+ var valid_fields = ['_orgId', '_orgIds', "_v", "del"];
181
325
  var curSectionKey = '';
182
- for(var k in data){
183
- if(valid_fields.indexOf(k)>=0){
326
+ for (var k in data) {
327
+ if (valid_fields.indexOf(k) >= 0) {
184
328
  continue;
185
- }
186
- else{
187
- if(typeof data[k] === 'object'){
188
- if((ef_section_permissions[k] && ef_section_permissions[k].read === 'denied') ||
189
- ((!ef_section_permissions[k] || !ef_section_permissions[k].read) && (ef_section_permissions["*"] && ef_section_permissions["*"].read === 'denied'))){
329
+ } else {
330
+ if (typeof data[k] === 'object') {
331
+ if ((ef_section_permissions[k] && ef_section_permissions[k].read === 'denied') ||
332
+ ((!ef_section_permissions[k] || !ef_section_permissions[k].read) && (ef_section_permissions["*"] && ef_section_permissions["*"].read === 'denied'))) {
190
333
  delete data[k];
191
334
  invisibleFields.push(k);
192
335
  }
193
336
  var section = data[k];
194
- if(Array.isArray(section)){
195
- for(var i=0; i<section.length; i++){
337
+ if (Array.isArray(section)) {
338
+ for (var i = 0; i < section.length; i++) {
196
339
  var r = section[i];
197
- for(var fk in r){
198
- var rk = k+ "." + fk;
199
- if((ef_field_permissions[rk] && ef_field_permissions[rk].read === 'denied') ||
200
- ((!ef_field_permissions[rk] || !ef_field_permissions[rk].read) && (ef_field_permissions[k+".*"] && ef_field_permissions[k+".*"].read === 'denied'))){
340
+ for (var fk in r) {
341
+ var rk = k + "." + fk;
342
+ if ((ef_field_permissions[rk] && ef_field_permissions[rk].read === 'denied') ||
343
+ ((!ef_field_permissions[rk] || !ef_field_permissions[rk].read) && (ef_field_permissions[k + ".*"] && ef_field_permissions[k + ".*"].read === 'denied'))) {
201
344
  delete r[fk];
202
345
  invisibleFields.push(rk);
203
346
  }
@@ -205,9 +348,8 @@ function filterFields(data,permissions,orgId){
205
348
 
206
349
  }
207
350
  }
208
- }
209
- else {
210
- if((ef_field_permissions[k] && ef_field_permissions[k].read === 'denied') || ((!ef_field_permissions[k] || !ef_field_permissions[k].read) && ef_field_permissions["*"].read === 'denied')){
351
+ } else {
352
+ if ((ef_field_permissions[k] && ef_field_permissions[k].read === 'denied') || ((!ef_field_permissions[k] || !ef_field_permissions[k].read) && ef_field_permissions["*"].read === 'denied')) {
211
353
  delete data[k];
212
354
  invisibleFields.push(k);
213
355
  }
@@ -218,3 +360,5 @@ function filterFields(data,permissions,orgId){
218
360
 
219
361
 
220
362
 
363
+
364
+
@@ -16,9 +16,13 @@ function isEqual(r1,r2){
16
16
  if(r1==null || r2==null){
17
17
  return false;
18
18
  }
19
+ if(isScalar(r1) || isScalar(r2)){
20
+ return r1===r2;
21
+ }
19
22
  //now assert a1!=null && r2!=null
20
23
  var ks1 = Object.keys(r1);
21
24
  var ks2 = Object.keys(r2);
25
+
22
26
  if(ks1.length!==ks2.length){
23
27
  return false;
24
28
  }
@@ -35,6 +39,7 @@ function isEqual(r1,r2){
35
39
  function diffArray(a1, a2,parentKey){
36
40
  //a1是旧的,a2是新的
37
41
 
42
+ var temp_matched = [];
38
43
  var result = [];
39
44
  if(!a1){
40
45
  a1 = [];
@@ -49,21 +54,39 @@ function diffArray(a1, a2,parentKey){
49
54
  var r2 = a2[j];
50
55
  if(isEqual(r1,r2)){
51
56
  found = true;
52
- r2._matched = true;
57
+ if(isScalar(r2)){
58
+ temp_matched.push(r2);
59
+ }
60
+ else{
61
+ r2._matched = true;
62
+ }
63
+
53
64
  break;
54
65
  }
55
66
  }
56
67
  if(!found){
57
68
  //r1不存在于a2中,说明r1被删除了
58
- r1._type='deleted'
59
- result.push(r1)
69
+ result.push({
70
+ type:'deleted',
71
+ r:r1
72
+ });
60
73
  }
61
74
  }
62
75
  for(var i=0; i<a2.length; i++){
63
76
  r2 = a2[i];
64
- if(!r2._matched){
65
- r2._type = 'added';
66
- result.push(r2);
77
+ if(isScalar(r2)){
78
+ if(temp_matched.indexOf(r2)==-1){
79
+ result.push({
80
+ type:'added',
81
+ r:r2
82
+ });
83
+ }
84
+ }
85
+ else if(!r2._matched){
86
+ result.push({
87
+ type:'added',
88
+ r:r2
89
+ });
67
90
  }
68
91
 
69
92
  }
@@ -164,15 +187,15 @@ function diff(obj1, obj2,parentKey){
164
187
  });
165
188
  }
166
189
  else{
167
- for(var kv in v2){
168
- result.push({
169
- type:'added',
170
- fieldKey : kv,
171
- parentKey: parentKey+"." + k2,
172
- oldv:null,
173
- newv:v2[kv]
174
- });
175
- }
190
+ for(var kv in v2){
191
+ result.push({
192
+ type:'added',
193
+ fieldKey : kv,
194
+ parentKey: parentKey+"." + k2,
195
+ oldv:null,
196
+ newv:v2[kv]
197
+ });
198
+ }
176
199
  }
177
200
  }
178
201
 
@@ -29,6 +29,7 @@
29
29
  var id = modelObject.id;
30
30
  var action = $.params.action;
31
31
  var oldObj = @projectCodeService.get(id);
32
+ var roleId = env.roleId
32
33
  if(orgId && oldObj && oldObj._orgIds){
33
34
  //检查是否有权限修改
34
35
  if(orgId!='0' && oldObj._orgIds.indexOf(orgId)===-1){
@@ -41,22 +42,32 @@
41
42
  return;
42
43
  }
43
44
  }
44
-
45
- if (!id || action=='add') {
45
+ var diffResult = {}
46
+ var tableId = 'owl_' + spec._t;
47
+ var permissions = getPermissions(roleId,tableId);
48
+ if (!id || action==='add') {
46
49
  //adding
47
50
  if(!modelObject._orgId){
48
51
  modelObject._orgId = orgId;
49
52
  }
50
53
  modelObject._orgIds = [modelObject._orgId].concat(getParentOrgIds(modelObject._orgId));
51
54
  modelObject.m = env.m;
55
+
56
+ //如果检查不通过,则会抛出异常
57
+ checkPermission(modelObject,permissions,orgId,"add");
52
58
  var newdata = @projectCodeService.add( modelObject,env );
53
59
  }
54
60
  else {
55
61
  modelObject._orgIds = [modelObject._orgId].concat(getParentOrgIds(modelObject._orgId));
62
+ diffResult = diff(oldObj,modelObject,"");
63
+
64
+
65
+ checkUpdatePermission(modelObject,diffResult,permissions,orgId);
66
+
56
67
  var newdata = @projectCodeService.update( modelObject,env);
57
68
  }
58
69
 
59
- var diffResult = diff(oldObj,modelObject);
70
+
60
71
 
61
72
  var ret = {
62
73
  state: 'ok',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owl-cli",
3
- "version": "6.16.0",
3
+ "version": "6.18.0",
4
4
  "main": "index.js",
5
5
  "preferGlobal": true,
6
6
  "bin": {