UserStorageBase.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. class UserStorageBase {
  3. private $_errors = array();
  4. /**
  5. * @returns object $usr
  6. * $usr->primaryKey
  7. * $usr->login
  8. * $usr->password optional (required in createUser)
  9. * $usr->name
  10. * $usr->email
  11. * $usr->phone
  12. * $usr->homeEmail
  13. * $usr->homePhone
  14. * $usr->employeeType 'Pracownik','Kandydat','Partner','Anonymous'
  15. * $usr->isDisabled 1, 0 or null if not set
  16. */
  17. public function getUser($usrLogin) {}
  18. /**
  19. * @returns bool
  20. */
  21. public function isDisabled($usr) {}
  22. /**
  23. * @returns bool
  24. */
  25. public function setDisabled($usrLogin, $isDisabled) {}
  26. /**
  27. * Create user by data.
  28. * @see getUser for data fields
  29. *
  30. * @returns bool
  31. */
  32. public function createUser($userData) {}
  33. /**
  34. * Update user by data.
  35. * @see getUser for data fields
  36. *
  37. * @returns bool
  38. */
  39. public function updateUser($usrLogin, $updateData) {}
  40. public function setSyncUserDate($usrLogin) {}
  41. public function setSyncGroupDate($groupID) {}
  42. /**
  43. * User group list by id.
  44. *
  45. * @returns assoc array with group names
  46. * ['ID_ZASOB'] = 'GROUP_NAME';
  47. * ['workgroup'] = 'workgroup';
  48. * ['com.apple.access_mail'] = 'com.apple.access_mail';
  49. * ['com.apple.access_addressbook'] = 'com.apple.access_addressbook';
  50. * ['com.apple.access_calendar'] = 'com.apple.access_calendar';
  51. * ['com.apple.access_smb'] = 'com.apple.access_smb';
  52. * ['com.apple.access_afp'] = 'com.apple.access_afp';
  53. * ['com.apple.access_vpn'] = 'com.apple.access_vpn';
  54. * ['com.apple.access_chat'] = 'com.apple.access_chat';
  55. */
  56. public function getUserGroups($usrLogin) {}
  57. public function createGroup($group) {}
  58. public function addUserGroup($usrLogin, $group) {}
  59. public function removeUserGroup($usrLogin, $group) {}
  60. public function updateGroup($group, $updateData) {}
  61. public function addNestedGroup($groupID, $nestedGroup) {}
  62. public function removeNestedGroup($groupID, $nestedGroup) {}
  63. public function addParentGroup($groupID, $parentGroup) {}
  64. public function removeParentGroup($groupID, $parentGroup) {}
  65. /**
  66. * Group.
  67. *
  68. * @returns object $group
  69. * $group->primaryKey
  70. * $group->realName
  71. * $group->nestedGroups
  72. * $group->type 'STANOWISKO','PODMIOT','DZIAL','local','network'
  73. * 'local' - access groups like com.apple.access_mail
  74. * 'network' - network group: workgroup
  75. * (optional) $group->zasobID
  76. * (optional) $group->zasobDESC
  77. */
  78. public function getGroup($groupID) {}
  79. /**
  80. * Build local group object.
  81. *
  82. * @returns object $group @see getGroup
  83. *
  84. * Example: _buildGroupLocal('com.apple.access_mail')
  85. */
  86. protected function _buildGroupLocal($groupName) {
  87. $group = new stdClass();
  88. $group->primaryKey = $groupName;
  89. $group->realName = $groupName;
  90. $group->groupID = null;
  91. $group->type = 'local';
  92. $group->nestedGroups = null;
  93. return $group;
  94. }
  95. /**
  96. * Build network group object.
  97. *
  98. * @returns object $group @see getGroup
  99. *
  100. * Example: _buildGroupNetwork('workgroup')
  101. */
  102. protected function _buildGroupNetwork($groupName) {
  103. $group = new stdClass();
  104. $group->primaryKey = $groupName;
  105. $group->realName = $groupName;
  106. $group->groupID = null;
  107. $group->type = 'network';
  108. $group->nestedGroups = null;
  109. return $group;
  110. }
  111. /**
  112. * Clean string to use as uid, ldap cn, etc.
  113. * @returns string
  114. */
  115. protected function _cleanUid($str) {
  116. // TODO: clean
  117. $str = preg_replace('/[^a-zA-Z0-9._-]+/', '_', $str);
  118. return $str;
  119. }
  120. protected function _cleanText($str) {
  121. // TODO: clean text from bad signs
  122. $str = preg_replace('/[^a-zA-Z0-9._-]+/', '_', $str);
  123. return $str;
  124. }
  125. protected function setError($code, $msg, $dbgMsg) {
  126. $this->_errors[] = (object)array('code'=>$code, 'msg'=>$msg, 'dbgMsg'=>$dbgMsg);
  127. }
  128. public function hasErrors() {
  129. return !empty($this->_errors);
  130. }
  131. public function getErrorsMsgList() {
  132. $msgList = array();
  133. foreach ($this->_errors as $vErr) {
  134. $msgList[] = "Error {$vErr->code}: {$vErr->msg}";
  135. }
  136. return $msgList;
  137. }
  138. public function getRawErrorsList() {
  139. return $this->_errors;
  140. }
  141. public function getErrorsMsgListWithDbg() {
  142. $msgList = array();
  143. foreach ($this->_errors as $vErr) {
  144. $msgList[] = "Error {$vErr->code}: {$vErr->msg} (DBG:{$vErr->dbgMsg})";
  145. }
  146. return $msgList;
  147. }
  148. public function isPasswordChanged($usrLogin) {
  149. return 0;
  150. }
  151. }