owl-cli 6.26.0 → 6.27.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.
|
@@ -364,6 +364,154 @@ function filterFields(data, permissions, orgId) {
|
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
+
function mergeArray(a1, a2,section_permission){
|
|
368
|
+
//a1是旧的,a2是新的
|
|
369
|
+
// $.log("diffArray,parentKey=" + parentKey);
|
|
370
|
+
|
|
371
|
+
var temp_matched = [];
|
|
372
|
+
var result = [];
|
|
373
|
+
var merged = [];
|
|
374
|
+
if(!a1){
|
|
375
|
+
a1 = [];
|
|
376
|
+
}
|
|
377
|
+
if(!a2){
|
|
378
|
+
a2 = [];
|
|
379
|
+
}
|
|
380
|
+
for(var i=0; i<a1.length; i++){
|
|
381
|
+
var r1 = a1[i];
|
|
382
|
+
var found = false;
|
|
383
|
+
for(var j=0; j<a2.length; j++){
|
|
384
|
+
var r2 = a2[j];
|
|
385
|
+
if(isEqual(r1,r2)){
|
|
386
|
+
found = true;
|
|
387
|
+
if(isScalar(r2)){
|
|
388
|
+
temp_matched.push(r2);
|
|
389
|
+
}
|
|
390
|
+
else{
|
|
391
|
+
r2._matched = true;
|
|
392
|
+
}
|
|
393
|
+
merged.push(r1);
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
if(!found){
|
|
398
|
+
//r1不存在于a2中,说明r1被删除了
|
|
399
|
+
if(section_permission && section_permission.del === 'denied'){
|
|
400
|
+
//不允许删除
|
|
401
|
+
merged.push(r1);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
for(var i=0; i<a2.length; i++){
|
|
406
|
+
r2 = a2[i];
|
|
407
|
+
if(isScalar(r2)){
|
|
408
|
+
if(temp_matched.indexOf(r2)==-1){
|
|
409
|
+
if(!section_permission || section_permission.add !== 'denied' ){
|
|
410
|
+
merged.push(r2);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
else if(!r2._matched){
|
|
416
|
+
if(!section_permission || section_permission.add !== 'denied' ){
|
|
417
|
+
merged.push(r2);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return merged;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
function merge(oldObj,newObj,permissions,orgId){
|
|
425
|
+
var section_permissions = expandSectionPermission(permissions);
|
|
426
|
+
var field_permissions = expandFieldPermission(permissions);
|
|
427
|
+
var table_permissions = expandTablePermission(permissions);
|
|
428
|
+
|
|
429
|
+
var ef_section_permissions = null;
|
|
430
|
+
var ef_field_permissions = null;
|
|
431
|
+
var ef_table_permissions = null;
|
|
432
|
+
if (data._orgId === orgId) {
|
|
433
|
+
ef_section_permissions = section_permissions.same_org;
|
|
434
|
+
ef_field_permissions = field_permissions.same_org;
|
|
435
|
+
ef_table_permissions = table_permissions.same_org;
|
|
436
|
+
} else {
|
|
437
|
+
ef_section_permissions = section_permissions.sub_org;
|
|
438
|
+
ef_field_permissions = field_permissions.sub_org;
|
|
439
|
+
ef_table_permissions = table_permissions.sub_org;
|
|
440
|
+
}
|
|
441
|
+
if(ef_table_permissions && ef_table_permissions.update==='denied'){
|
|
442
|
+
throw "没有修改权限。"
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
for(var k in oldObj){
|
|
446
|
+
var vo = oldObj[k];
|
|
447
|
+
if(typeof vo === 'object'){
|
|
448
|
+
if(ef_section_permissions[k] && ef_section_permissions[k].update==='denied' || ef_section_permissions[k] && ef_section_permissions[k].read==='denied'){
|
|
449
|
+
newObj[k] = vo;
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
if(Array.isArray(vo)){
|
|
454
|
+
//暂时对于Array, 只要对于section有权限,则是对于整行来说的,而不能对于行中的某个字段
|
|
455
|
+
var vn = newObj[k];
|
|
456
|
+
var merged = mergeArray(vo,vn,ef_section_permissions[k]);
|
|
457
|
+
vn[k] = merged;
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
var vn = newObj[k];
|
|
461
|
+
for(var sk in vo){
|
|
462
|
+
var fk = k + "." + sk;
|
|
463
|
+
if(ef_field_permissions[fk] && ef_field_permissions[fk].update==='denied' || ef_field_permissions[fk] && ef_field_permissions[fk].read==='denied'){
|
|
464
|
+
vn[fk] = vo[fk];
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
else if(vo === null){
|
|
470
|
+
if((ef_section_permissions[k] && (ef_section_permissions[k].update==='denied' || ef_section_permissions[k].read==='denied') )||
|
|
471
|
+
(ef_field_permissions[k] && (ef_field_permissions[k].update==='denied' || ef_field_permissions[k].read==='denied') )
|
|
472
|
+
){
|
|
473
|
+
newObj[k] = null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else{
|
|
477
|
+
if(ef_field_permissions[k] && (ef_field_permissions[k].update==='denied' || ef_field_permissions[k].read==='denied') ){
|
|
478
|
+
newObj[k] = oldObj[k];
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
for(var k in newObj){
|
|
484
|
+
//找到在new 但是 不在 old里面的,这表明是add
|
|
485
|
+
var vn = newObj[k];
|
|
486
|
+
var vo = oldObj[k];
|
|
487
|
+
if(typeof vn === 'object' ){
|
|
488
|
+
|
|
489
|
+
if(!vo && ef_section_permissions[k] && ef_section_permissions[k].add === 'denied'){
|
|
490
|
+
delete newObj[k];
|
|
491
|
+
}
|
|
492
|
+
else if(Array.isArray(vn)){
|
|
493
|
+
//do nothing
|
|
494
|
+
}
|
|
495
|
+
else{
|
|
496
|
+
for(var nk in vn){
|
|
497
|
+
if(vn[nk] && !vo[nk]){
|
|
498
|
+
var fk = k + "." + nk;
|
|
499
|
+
if(ef_field_permissions[fk] && ef_field_permissions[fk].add === 'denied'){
|
|
500
|
+
delete vn[nk];
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
else{
|
|
507
|
+
if(!vo && ef_field_permissions[k] && ef_field_permissions[k].add === 'denied'){
|
|
508
|
+
delete newObj[k];
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
}
|
|
514
|
+
|
|
367
515
|
|
|
368
516
|
|
|
369
517
|
|
|
@@ -38,7 +38,7 @@ function isEqual(r1,r2){
|
|
|
38
38
|
|
|
39
39
|
function diffArray(a1, a2,parentKey){
|
|
40
40
|
//a1是旧的,a2是新的
|
|
41
|
-
$.log("diffArray,parentKey=" + parentKey);
|
|
41
|
+
// $.log("diffArray,parentKey=" + parentKey);
|
|
42
42
|
|
|
43
43
|
var temp_matched = [];
|
|
44
44
|
var result = [];
|
|
@@ -94,8 +94,17 @@ function diffArray(a1, a2,parentKey){
|
|
|
94
94
|
return result;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
|
|
98
|
+
|
|
97
99
|
function diff(obj1, obj2,parentKey){
|
|
98
100
|
var result = []
|
|
101
|
+
if(!obj1){
|
|
102
|
+
obj1 = {};
|
|
103
|
+
}
|
|
104
|
+
if(!obj2){
|
|
105
|
+
obj2 = {};
|
|
106
|
+
}
|
|
107
|
+
|
|
99
108
|
var keys1 = Object.keys(obj1);
|
|
100
109
|
var keys2 = Object.keys(obj2);
|
|
101
110
|
keys1.sort();
|
|
@@ -203,4 +212,5 @@ function diff(obj1, obj2,parentKey){
|
|
|
203
212
|
|
|
204
213
|
}
|
|
205
214
|
return result;
|
|
206
|
-
}
|
|
215
|
+
}
|
|
216
|
+
|
|
@@ -60,11 +60,9 @@
|
|
|
60
60
|
else {
|
|
61
61
|
modelObject._orgIds = [modelObject._orgId].concat(getParentOrgIds(modelObject._orgId));
|
|
62
62
|
diffResult = diff(oldObj,modelObject,"");
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
var newdata = @projectCodeService.update( modelObject,env);
|
|
63
|
+
// checkUpdatePermission(modelObject,diffResult,permissions,orgId);
|
|
64
|
+
var merged = merge(oldObj,modelObject,permissions,orgId);
|
|
65
|
+
var newdata = @projectCodeService.update( merged,env);
|
|
68
66
|
}
|
|
69
67
|
|
|
70
68
|
|