PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/commands/RbacController.php

https://gitlab.com/Georgiy.Zhegusov/museum_documents
PHP | 399 lines | 235 code | 75 blank | 89 comment | 0 complexity | bca6a96e07bf3df9d5473566a749090f MD5 | raw file
  1. <?php
  2. namespace app\commands;
  3. use app\rbac\isDepcultMuseum;
  4. use app\rbac\isStartedMuseum;
  5. use yii;
  6. use yii\console\Controller;
  7. use app\rbac\isOwnMuseum;
  8. use app\rbac\isOwnUser;
  9. use app\rbac\isLastFile;
  10. class RbacController extends Controller
  11. {
  12. public function actionInit()
  13. {
  14. $auth = Yii::$app->authManager;
  15. // clear all
  16. $auth->removeAll();
  17. ////Museum block
  18. // add "museuNav" permission
  19. $museumNav = $auth->createPermission('museumNav');
  20. $museumNav->description = 'Create museum menu in Nav';
  21. $auth->add($museumNav);
  22. // add "museumCreate" permission
  23. $museumCreate = $auth->createPermission('museumCreate');
  24. $museumCreate->description = 'Create a museum';
  25. $auth->add($museumCreate);
  26. // add "museumIndex" permission
  27. $museumIndex = $auth->createPermission('museumIndex');
  28. $museumIndex->description = 'index a museum';
  29. $auth->add($museumIndex);
  30. // add "museumExpert" permission
  31. $museumExpert = $auth->createPermission('museumExpert');
  32. $museumExpert->description = 'own index a museum';
  33. $auth->add($museumExpert);
  34. // add "museumView" permission
  35. $museumView = $auth->createPermission('museumView');
  36. $museumView->description = 'view a museum';
  37. $auth->add($museumView);
  38. // add "museumUpdate" permission
  39. $museumUpdate = $auth->createPermission('museumUpdate');
  40. $museumUpdate->description = 'Update a museum';
  41. $auth->add($museumUpdate);
  42. // add "museumDelete" permission
  43. $museumDelete = $auth->createPermission('museumDelete');
  44. $museumDelete->description = 'delete a museum';
  45. $auth->add($museumDelete);
  46. // add "isOwnMuseum" rule
  47. $museumIsOwnRule = new isOwnMuseum();
  48. $auth->add($museumIsOwnRule);
  49. // add "isDepcultMuseum" rule
  50. $museumIsDepcultRule = new isDepcultMuseum();
  51. $auth->add($museumIsDepcultRule);
  52. // user can view only own museum
  53. $museumViewOwn = $auth->createPermission('museumViewOwn');
  54. $museumViewOwn->description = 'view an own user';
  55. $museumViewOwn->ruleName = $museumIsOwnRule->name;
  56. $auth->add($museumViewOwn);
  57. $auth->addChild($museumViewOwn,$museumView);
  58. $museumIsViewInited = new isStartedMuseum();
  59. // user can view only own museum
  60. $museumViewInited = $auth->createPermission('museumViewInited');
  61. $museumViewInited->description = 'view all inited museums';
  62. $museumViewInited->ruleName = $museumIsViewInited->name;
  63. $auth->add($museumViewInited);
  64. $auth->addChild($museumViewInited,$museumView);
  65. ////File block
  66. // add "fileNav" permission
  67. $fileNav = $auth->createPermission('fileNav');
  68. $fileNav->description = 'Create file menu in Nav';
  69. $auth->add($fileNav);
  70. // add "fileCreate" permission
  71. $fileCreate = $auth->createPermission('fileCreate');
  72. $fileCreate->description = 'Create a file';
  73. $auth->add($fileCreate);
  74. // add "fileIndex" permission
  75. $fileIndex = $auth->createPermission('fileIndex');
  76. $fileIndex->description = 'index a file';
  77. $auth->add($fileIndex);
  78. // add "fileView" permission
  79. $fileView = $auth->createPermission('fileView');
  80. $fileView->description = 'view a file';
  81. $auth->add($fileView);
  82. // add "fileUpdate" permission
  83. $fileUpdate = $auth->createPermission('fileUpdate');
  84. $fileUpdate->description = 'Update a file';
  85. $auth->add($fileUpdate);
  86. // add "fileDelete" permission
  87. $fileDelete = $auth->createPermission('fileDelete');
  88. $fileDelete->description = 'delete a file';
  89. $auth->add($fileDelete);
  90. // add "fileDownload" permission
  91. $fileDownload = $auth->createPermission('fileDownload');
  92. $fileDownload->description = 'delete a file';
  93. $auth->add($fileDownload);
  94. // add "isLastFile" rule
  95. $fileIsLastRule = new isLastFile();
  96. $auth->add($fileIsLastRule);
  97. // user can create only own file
  98. $fileCreate_for_own_museum = $auth->createPermission('fileCreate_for_own_museum');
  99. $fileCreate_for_own_museum->description = 'create only own museum';
  100. $fileCreate_for_own_museum->ruleName = $museumIsOwnRule->name;
  101. $auth->add($fileCreate_for_own_museum);
  102. $auth->addChild($fileCreate_for_own_museum,$fileCreate);
  103. // user can create only own file
  104. $fileCreate_for_depcult_museum = $auth->createPermission('fileCreate_for_depcult_museum');
  105. $fileCreate_for_depcult_museum->description = 'create only own museum';
  106. $fileCreate_for_depcult_museum->ruleName = $museumIsDepcultRule->name;
  107. $auth->add($fileCreate_for_depcult_museum);
  108. $auth->addChild($fileCreate_for_depcult_museum,$fileCreate);
  109. // user can create only own file
  110. $fileDownload_for_depcult_museum = $auth->createPermission('fileDownload_for_depcult_museum');
  111. $fileDownload_for_depcult_museum->description = 'create only own museum';
  112. $fileDownload_for_depcult_museum->ruleName = $museumIsDepcultRule->name;
  113. $auth->add($fileDownload_for_depcult_museum);
  114. $auth->addChild($fileDownload_for_depcult_museum,$fileDownload);
  115. // user can download only own museum's last file
  116. $fileDownload_for_depcult_last_museum = $auth->createPermission('fileDownload_for_depcult_last_museum');
  117. $fileDownload_for_depcult_last_museum->description = 'download only own last museum';
  118. $fileDownload_for_depcult_last_museum->ruleName = $fileIsLastRule->name;
  119. $auth->add($fileDownload_for_depcult_last_museum);
  120. $auth->addChild($fileDownload_for_depcult_last_museum,$fileDownload_for_depcult_museum);
  121. // user can download only own museum's file
  122. $fileDownload_for_own_museum = $auth->createPermission('fileDownload_for_own_museum');
  123. $fileDownload_for_own_museum->description = 'download only own museum';
  124. $fileDownload_for_own_museum->ruleName = $museumIsOwnRule->name;
  125. $auth->add($fileDownload_for_own_museum);
  126. $auth->addChild($fileDownload_for_own_museum,$fileDownload);
  127. // user can download only own museum's last file
  128. $fileDownload_for_own_last_museum = $auth->createPermission('fileDownload_for_own_last_museum');
  129. $fileDownload_for_own_last_museum->description = 'download only own last museum';
  130. $fileDownload_for_own_last_museum->ruleName = $fileIsLastRule->name;
  131. $auth->add($fileDownload_for_own_last_museum);
  132. $auth->addChild($fileDownload_for_own_last_museum,$fileDownload_for_own_museum);
  133. ////User block
  134. // add "userNav" permission
  135. $userNav = $auth->createPermission('userNav');
  136. $userNav->description = 'Create user menu in Nav';
  137. $auth->add($userNav);
  138. // add "userCreate" permission
  139. $userCreate = $auth->createPermission('userCreate');
  140. $userCreate->description = 'Create a user';
  141. $auth->add($userCreate);
  142. // add "userIndex" permission
  143. $userIndex = $auth->createPermission('userIndex');
  144. $userIndex->description = 'index a user';
  145. $auth->add($userIndex);
  146. // add "userView" permission
  147. $userView = $auth->createPermission('userView');
  148. $userView->description = 'view a user';
  149. $auth->add($userView);
  150. // add "userUpdate" permission
  151. $userUpdate = $auth->createPermission('userUpdate');
  152. $userUpdate->description = 'Update a user';
  153. $auth->add($userUpdate);
  154. // add "userDelete" permission
  155. $userDelete = $auth->createPermission('userDelete');
  156. $userDelete->description = 'delete a user';
  157. $auth->add($userDelete);
  158. // add "isOwnUser" rule
  159. $userIsOwnRule = new isOwnUser();
  160. $auth->add($userIsOwnRule);
  161. // user can view only own user
  162. $userViewOwn = $auth->createPermission('userViewOwn');
  163. $userViewOwn->description = 'view an own user';
  164. $userViewOwn->ruleName = $userIsOwnRule->name;
  165. $auth->add($userViewOwn);
  166. $auth->addChild($userViewOwn,$userView);
  167. // user can update only own user
  168. $userUpdateOwn = $auth->createPermission('userUpdateOwn');
  169. $userUpdateOwn->description = 'update an own user';
  170. $userUpdateOwn->ruleName = $userIsOwnRule->name;
  171. $auth->add($userUpdateOwn);
  172. $auth->addChild($userUpdateOwn,$userUpdate);
  173. ////Status block
  174. // add "statusNav" permission
  175. $statusNav = $auth->createPermission('statusNav');
  176. $statusNav->description = 'Create status menu in Nav';
  177. $auth->add($statusNav);
  178. // add "statusCreate" permission
  179. $statusCRUD = $auth->createPermission('statusCRUD');
  180. $statusCRUD->description = 'CRUD status';
  181. $auth->add($statusCRUD);
  182. ////Status line
  183. // add "statusLineNav" permission
  184. $statusLineNav = $auth->createPermission('statusLineNav');
  185. $statusLineNav->description = 'Create statusLine menu in Nav';
  186. $auth->add($statusLineNav);
  187. // add "statusLineView" permission
  188. $statusLineView = $auth->createPermission('statusLineView');
  189. $statusLineView->description = 'view status Line';
  190. $auth->add($statusLineView);
  191. ////Status history
  192. // add "statusHistoryNav" permission
  193. $statusHistoryNav = $auth->createPermission('statusHistoryNav');
  194. $statusHistoryNav->description = 'Create statusHistory menu in Nav';
  195. $auth->add($statusHistoryNav);
  196. // add "statusHistoryView" permission
  197. $statusHistory = $auth->createPermission('statusHistory');
  198. $statusHistory->description = 'view status Line';
  199. $auth->add($statusHistory);
  200. ////AutoStatus block
  201. // add "autoStatusNav" permission
  202. $autoStatusNav = $auth->createPermission('autoStatusNav');
  203. $autoStatusNav->description = 'Create autoStatus menu in Nav';
  204. $auth->add($autoStatusNav);
  205. // add "autoStatusCRUD" permission
  206. $autoStatusCRUD = $auth->createPermission('autoStatusCRUD');
  207. $autoStatusCRUD->description = 'CRUD autoStatus';
  208. $auth->add($autoStatusCRUD);
  209. ////Event block
  210. // add "eventNav" permission
  211. $eventNav = $auth->createPermission('eventNav');
  212. $eventNav->description = 'Create event menu in Nav';
  213. $auth->add($eventNav);
  214. // add "eventCreate" permission
  215. $eventCRUD = $auth->createPermission('eventCRUD');
  216. $eventCRUD->description = 'CRUD event';
  217. $auth->add($eventCRUD);
  218. ////Group block
  219. // add "groupNav" permission
  220. $groupNav = $auth->createPermission('groupNav');
  221. $groupNav->description = 'Create group menu in Nav';
  222. $auth->add($groupNav);
  223. // add "groupCreate" permission
  224. $groupCRUD = $auth->createPermission('groupCRUD');
  225. $groupCRUD->description = 'CRUD group';
  226. $auth->add($groupCRUD);
  227. ////Log block
  228. // add "museumLog" permission
  229. $museumLog = $auth->createPermission('museumLog');
  230. $museumLog->description = 'see museum logs';
  231. $auth->add($museumLog);
  232. ////History block
  233. // add "museumHistory" permission
  234. $museumHistory = $auth->createPermission('museumHistory');
  235. $museumHistory->description = 'see museumHistory';
  236. $auth->add($museumHistory);
  237. // create roles
  238. $guest = $auth->createRole('guest');
  239. $expert = $auth->createRole('expert');
  240. $depcult = $auth->createRole('depcult');
  241. $admin = $auth->createRole('admin');
  242. $root = $auth->createRole('root');
  243. //register roles in a system
  244. $auth->add($guest);
  245. $auth->add($expert);
  246. $auth->add($admin);
  247. $auth->add($depcult);
  248. $auth->add($root);
  249. //Add rules for guest
  250. //Add guest rules to expert
  251. $auth->addChild($expert,$guest);
  252. //Add rules for expert
  253. //Add museum
  254. $auth->addChild($expert,$museumNav);
  255. $auth->addChild($expert,$museumExpert);
  256. $auth->addChild($expert,$museumViewOwn);
  257. //Add file
  258. $auth->addChild($expert,$fileCreate_for_own_museum);
  259. $auth->addChild($expert,$fileDownload_for_own_last_museum);
  260. //Add user
  261. $auth->addChild($expert,$userViewOwn);
  262. //Add user
  263. $auth->addChild($expert,$userUpdateOwn);
  264. //Add rules for depcult
  265. //Add museum
  266. $auth->addChild($depcult,$museumNav);
  267. $auth->addChild($depcult,$museumExpert);
  268. $auth->addChild($depcult,$museumViewInited);
  269. //Add file
  270. $auth->addChild($depcult,$fileCreate_for_depcult_museum);
  271. $auth->addChild($depcult,$fileDownload_for_depcult_last_museum);
  272. //Add user
  273. $auth->addChild($depcult,$userViewOwn);
  274. //Add user
  275. $auth->addChild($depcult,$userUpdateOwn);
  276. //Add expert rules to admin
  277. $auth->addChild($admin,$expert);
  278. //Add rules for admin
  279. //Add museum
  280. $auth->addChild($admin,$museumCreate);
  281. $auth->addChild($admin,$museumUpdate);
  282. $auth->addChild($admin,$museumDelete);
  283. $auth->addChild($admin,$museumIndex);
  284. $auth->addChild($admin,$museumView);
  285. //Add file
  286. $auth->addChild($admin,$fileNav);
  287. $auth->addChild($admin,$fileCreate);
  288. $auth->addChild($admin,$fileUpdate);
  289. $auth->addChild($admin,$fileIndex);
  290. $auth->addChild($admin,$fileView);
  291. $auth->addChild($admin,$fileDownload);
  292. //Add status
  293. $auth->addChild($admin,$statusNav);
  294. $auth->addChild($admin,$statusCRUD);
  295. //Add statusLine
  296. $auth->addChild($admin, $statusLineNav);
  297. $auth->addChild($admin, $statusLineView);
  298. //Add autoStatus
  299. $auth->addChild($root,$autoStatusNav);
  300. $auth->addChild($root,$autoStatusCRUD);
  301. //Add user
  302. $auth->addChild($admin,$userNav);
  303. $auth->addChild($admin,$userCreate);
  304. $auth->addChild($admin,$userUpdate);
  305. $auth->addChild($admin,$userDelete);
  306. $auth->addChild($admin,$userIndex);
  307. $auth->addChild($admin,$userView);
  308. //Add log
  309. $auth->addChild($admin,$museumLog);
  310. //Add history
  311. $auth->addChild($admin,$museumHistory);
  312. //Add admin rules to root
  313. $auth->addChild($root,$admin);
  314. //Add rules for root
  315. //Add files
  316. $auth->addChild($root,$fileDelete);
  317. //Add event
  318. $auth->addChild($root,$eventNav);
  319. $auth->addChild($root,$eventCRUD);
  320. //Add group
  321. $auth->addChild($root,$groupNav);
  322. $auth->addChild($root,$groupCRUD);
  323. }
  324. }