UserStorageBase.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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 true, false 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(ObjectGroup $group) {}
  58. public function addUserGroup($usrLogin, $group) {}
  59. public function removeUserGroup($usrLogin, $group) {}
  60. public function updateGroup($group, $updateData) {}
  61. public function addNestedGroup($groupID, $nestedGroupID) {}
  62. public function removeNestedGroup($groupID, $nestedGroupID) {}
  63. public function addParentGroup($groupID, $parentGroupID) {}
  64. public function removeParentGroup($groupID, $parentGroupID) {}
  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. public function getParentGroups(ObjectGroup $group) {}
  80. /**
  81. * Build local group object.
  82. *
  83. * @returns object $group @see getGroup
  84. *
  85. * Example: _buildGroupLocal('com.apple.access_mail')
  86. */
  87. protected function _buildGroupLocal($groupName) {
  88. $group = new stdClass();
  89. $group->primaryKey = $groupName;
  90. $group->realName = $groupName;
  91. $group->groupID = null;
  92. $group->type = 'local';
  93. $group->nestedGroups = null;
  94. return $group;
  95. }
  96. /**
  97. * Build network group object.
  98. *
  99. * @returns object $group @see getGroup
  100. *
  101. * Example: _buildGroupNetwork('workgroup')
  102. */
  103. protected function _buildGroupNetwork($groupName) {
  104. $group = new stdClass();
  105. $group->primaryKey = $groupName;
  106. $group->realName = $groupName;
  107. $group->groupID = null;
  108. $group->type = 'network';
  109. $group->nestedGroups = null;
  110. return $group;
  111. }
  112. /**
  113. * Clean string to use as uid, ldap cn, etc.
  114. * @returns string
  115. */
  116. protected function _cleanUid($str) {
  117. // TODO: clean
  118. $str = preg_replace('/[^a-zA-Z0-9._-]+/', '_', $str);
  119. return $str;
  120. }
  121. protected function _cleanText($str) {
  122. // TODO: clean text from bad signs
  123. $str = preg_replace('/[^a-zA-Z0-9._-]+/', '_', $str);
  124. return $str;
  125. }
  126. protected function setError($code, $msg, $dbgMsg) {
  127. $this->_errors[] = (object)array('code'=>$code, 'msg'=>$msg, 'dbgMsg'=>$dbgMsg);
  128. }
  129. public function hasErrors() {
  130. return !empty($this->_errors);
  131. }
  132. public function getErrorsMsgList() {
  133. $msgList = array();
  134. foreach ($this->_errors as $vErr) {
  135. $msgList[] = "Error {$vErr->code}: {$vErr->msg}";
  136. }
  137. return $msgList;
  138. }
  139. public function getRawErrorsList() {
  140. return $this->_errors;
  141. }
  142. public function getErrorsMsgListWithDbg() {
  143. $msgList = array();
  144. foreach ($this->_errors as $vErr) {
  145. $msgList[] = "Error {$vErr->code}: {$vErr->msg} (DBG:{$vErr->dbgMsg})";
  146. }
  147. return $msgList;
  148. }
  149. public function isPasswordChanged($usrLogin) {
  150. return 0;
  151. }
  152. }