ControllerAuthorize.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * PHP 5
  4. *
  5. * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
  6. * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  7. *
  8. * Licensed under The MIT License
  9. * For full copyright and license information, please see the LICENSE.txt
  10. * Redistributions of files must retain the above copyright notice.
  11. *
  12. * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
  13. * @link http://cakephp.org CakePHP(tm) Project
  14. * @license http://www.opensource.org/licenses/mit-license.php MIT License
  15. */
  16. App::uses('BaseAuthorize', 'Controller/Component/Auth');
  17. /**
  18. * An authorization adapter for AuthComponent. Provides the ability to authorize using a controller callback.
  19. * Your controller's isAuthorized() method should return a boolean to indicate whether or not the user is authorized.
  20. *
  21. * {{{
  22. * public function isAuthorized($user) {
  23. * if (!empty($this->request->params['admin'])) {
  24. * return $user['role'] === 'admin';
  25. * }
  26. * return !empty($user);
  27. * }
  28. * }}}
  29. *
  30. * the above is simple implementation that would only authorize users of the 'admin' role to access
  31. * admin routing.
  32. *
  33. * @package Cake.Controller.Component.Auth
  34. * @since 2.0
  35. * @see AuthComponent::$authenticate
  36. */
  37. class ControllerAuthorize extends BaseAuthorize {
  38. /**
  39. * Get/set the controller this authorize object will be working with. Also checks that isAuthorized is implemented.
  40. *
  41. * @param Controller $controller null to get, a controller to set.
  42. * @return mixed
  43. * @throws CakeException
  44. */
  45. public function controller(Controller $controller = null) {
  46. if ($controller) {
  47. if (!method_exists($controller, 'isAuthorized')) {
  48. throw new CakeException(__d('cake_dev', '$controller does not implement an %s method.', 'isAuthorized()'));
  49. }
  50. }
  51. return parent::controller($controller);
  52. }
  53. /**
  54. * Checks user authorization using a controller callback.
  55. *
  56. * @param array $user Active user data
  57. * @param CakeRequest $request
  58. * @return boolean
  59. */
  60. public function authorize($user, CakeRequest $request) {
  61. return (bool)$this->_Controller->isAuthorized($user);
  62. }
  63. }