Users.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('UserStorageFactory');
  4. Lib::loadClass('ProcesHelper');
  5. Lib::loadClass('SyncUsers');
  6. class Route_Users extends RouteBase {
  7. public function handleAuth() {
  8. if (!User::logged()) {
  9. throw new HttpException('Unauthorized', 401);
  10. }
  11. }
  12. public function defaultAction() {
  13. SE_Layout::gora();
  14. SE_Layout::menu();
  15. $this->menu();
  16. SE_Layout::dol();
  17. }
  18. public function menu() {
  19. $usrLogin = User::getLogin();
  20. ?>
  21. <ul>
  22. <li><a href="index.php?_route=Users&_task=syncUser&usrLogin=<?php echo $usrLogin; ?>">Sync user <?php echo $usrLogin; ?></a></li>
  23. </ul>
  24. <?php
  25. }
  26. public function syncUserAction() {
  27. SE_Layout::gora();
  28. SE_Layout::menu();
  29. $usrLogin = V::get('usrLogin', '', $_GET);
  30. echo '<div class="container">';
  31. try {
  32. if (empty($usrLogin)) throw new Exception("Empty user login");
  33. $usrStorageDB = UserStorageFactory::getStorage('DB');
  34. $usrStorageLdap = UserStorageFactory::getStorage('MacOSX');
  35. if (!$usrStorageDB) throw new Exception("Error storage DB not exists");
  36. if (!$usrStorageLdap) throw new Exception("Error storage Ldap not exists");
  37. echo '<h4>' . "Synchronizacja użytkownika <code>{$usrLogin}</code>" . '</h4>';
  38. $usrFrom = $usrStorageDB->getUser($usrLogin);
  39. DBG::_('DBG_SU', '>1', 'User from:', $usrFrom, __CLASS__, __FUNCTION__, __LINE__);
  40. if ($usrFrom) {
  41. $zasobPermsTblId = ProcesHelper::getZasobTableID('CRM_AUTH_PROFILE');
  42. if ($zasobPermsTblId > 0) {
  43. // TODO: ?_route=Users&_task=addGroup&usrLogin={$usrFrom->login}
  44. ?>
  45. <p>Ustal stanowisko:
  46. <a href="index.php?MENU_INIT=USER_ADD_GROUP&usrLogin=<?php echo $usrFrom->login; ?>">ustal stanowisko</a>
  47. </p>
  48. <?php
  49. }
  50. $zasobUsersTblId = ProcesHelper::getZasobTableID('ADMIN_USERS');
  51. if ($zasobUsersTblId > 0) {
  52. // /index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=4095#EDIT/4527
  53. ?>
  54. <p>Edytuj:
  55. <a href="index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID=<?php echo $zasobUsersTblId; ?>#EDIT/<?php echo $usrFrom->primaryKey; ?>">edytuj</a>
  56. </p>
  57. <?php
  58. }
  59. }
  60. $this->syncUser($usrLogin, $usrStorageDB, $usrStorageLdap);
  61. } catch (Exception $e) {
  62. ?>
  63. <div class="alert alert-danger"><?php echo $e->getMessage(); ?></div>
  64. <?php
  65. }
  66. echo '</div>';// .container
  67. SE_Layout::dol();
  68. }
  69. public function syncUser($userName, $usrStorageDB, $usrStorageLdap) {
  70. if (empty($userName)) throw new Exception("Empty user login");
  71. if (!$usrStorageDB) throw new Exception("Error storage DB not exists");
  72. if (!$usrStorageLdap) throw new Exception("Error storage Ldap not exists");
  73. $synUsers = new SyncUsers($usrStorageDB, $usrStorageLdap);
  74. $syncTodoList = $synUsers->getSyncUserTodoList($userName, $syncGroups = true, $syncDisabled = true);
  75. ?>
  76. <?php if (empty($syncTodoList)) : ?>
  77. <div class="alert alert-info">Brak zadań do wykonania - użytkownik zsynchronizowany</div>
  78. <?php else : ?>
  79. <div class="well">
  80. <p>Lista zadań do wykonania:</p>
  81. <ul>
  82. <?php foreach ($syncTodoList as $vTask) : ?>
  83. <li><?php echo $vTask; ?></li>
  84. <?php endforeach; ?>
  85. </ul>
  86. </div>
  87. <?php endif; ?>
  88. <?php
  89. if ('1' == V::get('_runSync', '', $_POST)) {
  90. $synced = $synUsers->syncUser($userName, $syncGroups = true, $syncDisabled = true);
  91. if (!$synced) {
  92. ?>
  93. <div class="alert alert-danger">
  94. Nie udało się zsynchronizować uprawnień użytkownika <?php echo $userName; ?>.
  95. </div>
  96. <?php
  97. $errorsList = $synUsers->getErrorsMsgListWithDbg();
  98. if (!empty($errorsList)) {
  99. echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">';
  100. echo "Błędy:\n" . implode("\n", $errorsList);
  101. echo '</pre>';
  102. }
  103. }
  104. else {
  105. ?>
  106. <div class="alert alert-success">
  107. Synchronizacja uprawnień użytkownika <?php echo $userName; ?> zakończona powodzeniem.
  108. </div>
  109. <?php
  110. }
  111. }
  112. else {
  113. ?>
  114. <form action="" method="POST">
  115. <input type="hidden" name="_runSync" value="1">
  116. <input type="submit" value="Synchronizuj" class="btn btn-primary btn-big">
  117. </form>
  118. <?php
  119. }
  120. }
  121. }