You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuRoute.php 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace Luticate\Utils;
  3. use Illuminate\Http\Request;
  4. class LuRoute {
  5. /**
  6. * @var callable
  7. */
  8. private $_middleware;
  9. /**
  10. * @param $middleware callable
  11. */
  12. public function setMiddleware($middleware)
  13. {
  14. $this->_middleware = $middleware;
  15. }
  16. private function getOptions($url, $business, $method, $permissions = array())
  17. {
  18. $middleware = $this->_middleware;
  19. return [function(Request $request) use($business, $method, $permissions, $middleware)
  20. {
  21. if (!is_array($permissions)) {
  22. $permissions = array($permissions);
  23. }
  24. if ($middleware != null && !$middleware($permissions, $request)) {
  25. abort(401);
  26. }
  27. $controller = new LuController();
  28. if (strpos($business, "\\") === false)
  29. $business = "App\\Http\\Business\\" . $business . "Business";
  30. return $controller->execute($business, $method);
  31. }];
  32. }
  33. public function get($url, $business, $method, $permissions = array())
  34. {
  35. global $app;
  36. return $app->get($url, $this->getOptions($url, $business, $method, $permissions));
  37. }
  38. public function post($url, $business, $method, $permissions = array())
  39. {
  40. global $app;
  41. return $app->post($url, $this->getOptions($url, $business, $method, $permissions));
  42. }
  43. public function put($url, $business, $method, $permissions = array())
  44. {
  45. global $app;
  46. return $app->put($url, $this->getOptions($url, $business, $method, $permissions));
  47. }
  48. public function delete($url, $business, $method, $permissions = array())
  49. {
  50. global $app;
  51. return $app->delete($url, $this->getOptions($url, $business, $method, $permissions));
  52. }
  53. }