@@ -436,6 +436,10 @@ async def _migrCell(self):
436
436
authkv = self .cellslab .getSafeKeyVal ('auth' )
437
437
userkv = authkv .getSubKeyVal ('user:info:' )
438
438
439
+ permmigrs = (
440
+ (('cron' , 'set' , 'creator' ), ('cron' , 'set' , 'user' )),
441
+ )
442
+
439
443
for iden , info in userkv .items ():
440
444
update = False
441
445
if not isinstance (info .get ('onepass' ), (None , dict )):
@@ -448,7 +452,63 @@ async def _migrCell(self):
448
452
update = True
449
453
info .pop ('passwd' )
450
454
451
- userkv .set (iden , info )
455
+ rules = []
456
+ for allow , path in info .get ('rules' , ()):
457
+ for oldperm , newperm in permmigrs :
458
+ if path [:3 ] == oldperm :
459
+ update = True
460
+ rules .append ((allow , newperm + path [3 :]))
461
+ continue
462
+ rules .append ((allow , path ))
463
+
464
+ info ['rules' ] = rules
465
+
466
+ if update :
467
+ userkv .set (iden , info )
468
+
469
+ rolekv = authkv .getSubKeyVal ('role:info:' )
470
+
471
+ for iden , info in rolekv .items ():
472
+ update = False
473
+ rules = []
474
+ for allow , path in info .get ('rules' , ()):
475
+ for oldperm , newperm in permmigrs :
476
+ if path [:3 ] == oldperm :
477
+ update = True
478
+ rules .append ((allow , newperm + path [3 :]))
479
+ continue
480
+ rules .append ((allow , path ))
481
+
482
+ info ['rules' ] = rules
483
+
484
+ if update :
485
+ rolekv .set (iden , info )
486
+
487
+ for viewiden in self .viewdefs .keys ():
488
+ trigdict = self .core .cortexdata .getSubKeyVal (f'view:{ viewiden } :trigger:' )
489
+ for trigiden , tdef in trigdict .items ():
490
+ if tdef .get ('creator' ) is None :
491
+ tdef ['creator' ] = tdef ['user' ]
492
+ trigdict .set (trigiden , tdef )
493
+
494
+ defview = self .cellinfo .get ('defaultview' )
495
+ apptdefs = self .cortexdata .getSubKeyVal ('agenda:appt:' )
496
+ for apptiden , info in apptdefs .items ():
497
+ info ['user' ] = info .get ('creator' )
498
+
499
+ if info .get ('view' ) is not None :
500
+ apptdefs .set (apptiden , info )
501
+ continue
502
+
503
+ if (userinfo := userkv .get (info ['user' ])) is None :
504
+ logger .warning (f'cron job ({ apptiden } ) has no user or view set and will be removed!' )
505
+ apptdefs .delete (apptiden )
506
+ continue
507
+
508
+ profilekv = authkv .getSubKeyVal (f'user:{ userinfo ["iden" ]} :profile:' )
509
+ info ['view' ] = profilekv .get ('cortex:view' , defview )
510
+
511
+ apptdefs .set (apptiden , info )
452
512
453
513
logger .info (f'Completed cell migration, removed deprecated confdefs: { remconfs } ' )
454
514
await self ._migrlogAdd ('cell' , 'prog' , 'none' , s_common .now ())
0 commit comments