apply_kanded_access4.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. use Drupal\views\Views;
  3. $view = Views::getView('kanded');
  4. if (!$view) {
  5. echo "VIEW NOT FOUND\n";
  6. exit;
  7. }
  8. $role_access = function (array $roles) {
  9. $map = [];
  10. foreach ($roles as $r) {
  11. $map[$r] = $r;
  12. }
  13. return [
  14. 'type' => 'role',
  15. 'options' => ['role' => $map],
  16. ];
  17. };
  18. $perm_access = [
  19. 'type' => 'perm',
  20. 'options' => ['perm' => 'access content'],
  21. ];
  22. $kanded_access = [
  23. 'type' => 'mustikas_kanded_access',
  24. 'options' => [],
  25. ];
  26. $config = [
  27. 'default' => $perm_access,
  28. 'page_1' => $perm_access,
  29. 'page_liikmemaksud' => $kanded_access,
  30. 'page_projektid' => $kanded_access,
  31. 'page_tegevuskulud' => $kanded_access,
  32. 'page_liikmemaksud_saldod' => $role_access([
  33. 'administrator', 'emal_juhatuse_liige', 'emal_raamatupidamine', 'emal_susteemi_administraator',
  34. ]),
  35. 'page_projektid_saldod' => $role_access([
  36. 'emal_juhatuse_liige', 'emal_raamatupidamine', 'emal_susteemi_administraator',
  37. ]),
  38. ];
  39. $storage = $view->storage;
  40. $displays = $storage->get('display');
  41. foreach ($config as $display_id => $access) {
  42. if (!isset($displays[$display_id])) {
  43. echo "MISSING DISPLAY $display_id\n";
  44. continue;
  45. }
  46. if (!isset($displays[$display_id]['display_options'])) {
  47. $displays[$display_id]['display_options'] = [];
  48. }
  49. $displays[$display_id]['display_options']['access'] = $access;
  50. // Peida "inherit default" access, et display kasutaks oma accessi.
  51. if (!isset($displays[$display_id]['display_options']['defaults'])) {
  52. $displays[$display_id]['display_options']['defaults'] = [];
  53. }
  54. if ($display_id === 'default') {
  55. $displays[$display_id]['display_options']['defaults']['access'] = FALSE;
  56. } else {
  57. $displays[$display_id]['display_options']['defaults']['access'] = FALSE;
  58. }
  59. echo "SET $display_id -> " . $access['type'] . " (defaults.access=false)\n";
  60. }
  61. $storage->set('display', $displays);
  62. $storage->save();
  63. echo "STORAGE SAVED\n";