PageRenderTime 39ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/applications/acl/controllers/Cli.php

http://shozu.googlecode.com/
PHP | 215 lines | 160 code | 9 blank | 46 comment | 12 complexity | bedc0847c62f9f1e321a233f0ffa4e2f MD5 | raw file
  1. <?php
  2. namespace acl\controllers;
  3. use \acl\models\User as User;
  4. use \acl\models\Role as Role;
  5. use \acl\models\Resource as Resource;
  6. class Cli extends \shozu\Controller\CLI
  7. {
  8. /**
  9. * Create new user with given email, return generated password if
  10. * no password given.
  11. *
  12. * @param string $user_email
  13. * @param string $password
  14. */
  15. public function adduserAction($user_email, $password = null)
  16. {
  17. $user = User::findOne('login = ?', array($user_email));
  18. if(!$user)
  19. {
  20. if(empty($password))
  21. {
  22. $password = strtolower(substr(uniqid(), -6));
  23. }
  24. $user = new User;
  25. $user->login = $user_email;
  26. $user->password = sha1($password);
  27. $user->save();
  28. echo $password . "\n";
  29. }
  30. else
  31. {
  32. echo "User already exists.\n";
  33. }
  34. }
  35. public function setpasswordAction($user_email, $password)
  36. {
  37. $user = User::findOne('login = ?', array($user_email));
  38. if(!$user)
  39. {
  40. echo "No such user.\n";
  41. return;
  42. }
  43. $user->password = sha1(trim($password));
  44. $user->save();
  45. echo "Ok.\n";
  46. }
  47. /**
  48. * Give roles to user
  49. *
  50. * @param string $user_email
  51. * @param string $roles comma-separated role labels
  52. */
  53. public function addrolesAction($user_email, $roles)
  54. {
  55. $user = User::findOne('login = ?', array($user_email));
  56. if(!$user)
  57. {
  58. die("No such user.\n");
  59. }
  60. $roles = explode(',', $roles);
  61. foreach($roles as $role_label)
  62. {
  63. $user->giveRole($role_label);
  64. }
  65. $user->save();
  66. echo "Ok.\n";
  67. }
  68. /**
  69. * Remove roles from user
  70. *
  71. * @param string $user_email
  72. * @param string $roles comma-separated role labels
  73. */
  74. public function removerolesAction($user_email, $roles)
  75. {
  76. $user = User::findOne('login = ?', array($user_email));
  77. if(!$user)
  78. {
  79. echo "No such user.\n";
  80. return;
  81. }
  82. $roles = explode(',', $roles);
  83. foreach($roles as $role_label)
  84. {
  85. $user->removeRole($role_label);
  86. }
  87. $user->save();
  88. echo "Ok.\n";
  89. }
  90. /**
  91. * List all roles or roles from user if given
  92. *
  93. * @param string $user_email
  94. */
  95. public function listrolesAction($user_email = '')
  96. {
  97. if(!empty($user_email))
  98. {
  99. $user = User::findOne('login = ?', array($user_email));
  100. if(!$user)
  101. {
  102. echo "No such user.\n";
  103. return;
  104. }
  105. $roles = $user->getRoles();
  106. }
  107. else
  108. {
  109. $roles = Role::find();
  110. }
  111. foreach($roles as $role)
  112. {
  113. echo $role->label."\n";
  114. }
  115. }
  116. /**
  117. * List all user matching pattern
  118. *
  119. * @param string $pattern SQL pattern: %john%
  120. */
  121. public function listusersAction($pattern = '')
  122. {
  123. if(!empty($pattern))
  124. {
  125. $users = User::find('login like ?', array($pattern));
  126. }
  127. else
  128. {
  129. $users = User::find();
  130. }
  131. foreach($users as $user)
  132. {
  133. echo $user->login."\n";
  134. }
  135. }
  136. /**
  137. * Add resources to given role
  138. *
  139. * @param string $role
  140. * @param string $resources
  141. */
  142. public function addresourcesAction($role, $resources)
  143. {
  144. $role = Role::findOne('label like ?', array($role));
  145. if(!$role)
  146. {
  147. echo "No such role.\n";
  148. return;
  149. }
  150. $resources = explode(',', $resources);
  151. foreach($resources as $resource_label)
  152. {
  153. $role->giveResource($resource_label);
  154. }
  155. $role->save();
  156. echo "Ok.\n";
  157. }
  158. /**
  159. * Remove resources to given role
  160. *
  161. * @param string $role
  162. * @param string $resources
  163. */
  164. public function removeresourcesAction($role, $resources)
  165. {
  166. $role = Role::findOne('label like ?', array($role));
  167. if(!$role)
  168. {
  169. echo "No such role.\n";
  170. return;
  171. }
  172. $resources = explode(',', $resources);
  173. foreach($resources as $resource_label)
  174. {
  175. $role->removeResource($resource_label);
  176. }
  177. $role->save();
  178. echo "Ok.\n";
  179. }
  180. /**
  181. * List all resources or resources from role if given
  182. *
  183. * @param string $user_email
  184. */
  185. public function listresourcesAction($role = '')
  186. {
  187. if(!empty($role))
  188. {
  189. $role = Role::findOne('label = ?', array($role));
  190. if(!$role)
  191. {
  192. echo "No such role.\n";
  193. return;
  194. }
  195. $resources = $role->getResources();
  196. }
  197. else
  198. {
  199. $resources = Resource::find();
  200. }
  201. foreach($resources as $resource)
  202. {
  203. echo $resource->label."\n";
  204. }
  205. }
  206. }