fork download
  1. <?php
  2. //идея в том, что бы если авторизован - было доступно все приложение
  3. //а если не авторизован - то только страницы регистрации/авторизаци а с других страниц бросало
  4. //на страницу регистрации с сообщением "зарегистрируйтесь"
  5.  
  6. // мидлвэйры
  7. //мидлвэйр для проверки для группы регистрации
  8. $middleware_access = function ($request, $response, $next){
  9. $authorized = false;
  10. //пусть страницы авторизации всегда доступны
  11. if (true) {
  12. //по идее тут должны только роуты из группы регистрации обрабатываться
  13. $next($request,$response);
  14. return $response;
  15. }
  16.  
  17.  
  18. };
  19.  
  20. //мидлвэйр для проверки для группы всех остальных
  21. $middleware_access_all = function ($request, $response, $next){
  22. $authorized = true;
  23. //если авторизация есть то идем по роутам
  24. if ($authorized) {
  25. $next($request,$response);
  26. return $response;
  27. }else{
  28. //а если авторизации нет то тут как то сделать редирект на страницу
  29. //авторизацию, но у меня получается какая то жопа
  30. //такое не работает
  31. $response->withRedirect('/registration', 301);
  32. return $response;
  33.  
  34. }
  35. };
  36.  
  37.  
  38.  
  39. //роуты
  40. //группа для регистрации
  41. $app->group('', function(){
  42.  
  43. $this->get('/registration', function($request, $response){
  44.  
  45. //..
  46.  
  47. });
  48.  
  49. $this->post('/registration', function($request, $response){
  50.  
  51. //..
  52. });
  53.  
  54. })->add($middleware_access);
  55.  
  56. //группа всех остальных роутов
  57. $app->group('',function(){
  58.  
  59. $this->get('/', function ($request, $response){
  60.  
  61. //..
  62. });
  63.  
  64. $this->post('/', function($request, $response){
  65. //..
  66. });
  67.  
  68. $this->get('/test', function($request, $response){
  69. //..
  70. });
  71.  
  72. })->add($middleware_access_all);
  73.  
  74.  
  75. //группы роутов у меня начинаются с одинаковых шаблонов $app->group('', ...)
  76. //незнаю можно ли так делать
Runtime error #stdin #stdout #stderr 0.03s 24220KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
PHP Notice:  Undefined variable: app in /home/BNUbYg/prog.php on line 34
PHP Fatal error:  Uncaught Error: Call to a member function group() on null in /home/BNUbYg/prog.php:34
Stack trace:
#0 {main}
  thrown in /home/BNUbYg/prog.php on line 34