Aliaksandr
таков путь
Pathologic
так для этого у тебя есть контроллеры
Pathologic
ну то есть роуты сами по себе это уже маршрутизатор
Serguei
Axenia
Dreamer_0x01 (368.7) увеличил карму Serg_64j (1921.91)
Pathologic
ты делаешь, как в ево изначально - один роут и один контроллер
Pathologic
а надо делать разные роуты и разные контроллеры
Pathologic
если тебе по одному роуту ответ в разном виде нужно возвращать, то предусмотри это в контроллере
Andrey
А почему нельзя роут ч параметрами сделать и в контроллере разрулить циферки
Aliaksandr
просто получается что на фронте я такой маршрутизатор на javascript делаю, просто достав из атрибута data-action формы - и все ок. А если я хочу сделать это на php, достав тот же action из $_POST и отправить запрос по адресу - уже хрен с маслом
Aliaksandr
или без масла
Andrey
Ну походу да)
Pathologic
для чего тебе на пхп, отправлять запрос на этот же сайт
Pathologic
если ты можешь просто вызвать что тебе нужно
Pathologic
ну то есть то что ты делаешь, это как поставить рядом с ево вордпресс и типа что в ево отправляешь форму, а там плагин на 404 ловит ее и отправляет запрос в вордпресс 🙃
Pathologic
получается что никто не знает про вордпресс
Pathologic
но зачем в вордпресс отправлять запрос, если можно подключить в своем ajax.php файлы от вордпресса и просто выполнить что он там делает
Aliaksandr
зачем - это уже другой вопрос ) пока вопрос встал как ))
Aliaksandr
получить то я могу
Aliaksandr
просто я дополнительно начал экспериментировать с получением через эти именованные роуты - и тут возник этот вопрос, который я умом понимаю, но сердцем нет ))))))
Pathologic
просто не нужно с сайта А отправлять запрос на сайт A
Pathologic
когда ты отправляешь запрос, на сайте создается сессия
Pathologic
у тебя получается одна сессия создалась когда ты отправил запрос из браузера
Aliaksandr
нужно или не нужно - это вопрос спорный
Pathologic
потом создалась вторая, когда ты отправил запрос из пхп
Pathologic
но это разные сессии
Pathologic
вторая ничего не знает про токен, который хранится в первой
Aliaksandr
хочу отправить и отравляю, а то, что для этого приходится отключать защиту ларавелевскую - это считаю косяком ларавелевским, а не своим
Pathologic
это не косяк, оно работает как задумано
Aliaksandr
да нихрена это не задумано так
Aliaksandr
ну хорошо, я прописал все эти права доступа в миддлварах и т.п. - и они там проверяются. А чтобы получать напрямую из контроллеров - мне что, опять нужно по второму кругу проверять все те же самые доступы?
Aliaksandr
а если оно пришло из миддлвара - то проверять одно и то же два раза ?
Pathologic
в миддваре ты проверяешь запросы из браузера
Aliaksandr
чем больше вникаешь - тем больше понимаешь, что кругом такая же херня, что и эво - просто более умными словами обоснованная )
Pathologic
скажем так, ты можешь проверить ip там и если он localhost, то пропускать
Aliaksandr
ну так а как мне проверять тогда права в самом контроллере? еще раз? два раза?
Pathologic
но ты не сможешь права там вообще проверить
Aliaksandr
или писать два разных контроллера - одинаковых, только в одном проверка через миддлвар, а во втором - прямо в него встроена, чтобы по два раза проверку не гонять
Pathologic
у тебя же отдельная сессия создалась, где ты не авторизован и прав у тебя значит нет
Aliaksandr
ну и какой выход, если я хочу данные отдавать по апи и в виде массива прямо на сайте? полное дублирование всех контроллеров, только у одних права проверяет миддлвар, а у второго - сам контроллер?
Aliaksandr
зачем мне тогда вообще проверять права в миддлваре, а не сразу в контроллере?
Pathologic
для апи тебе не нужен миддлваре
Pathologic
даже не так
Pathologic
ты в своем ajax.php разбираешь запрос, который прошел через мидлваре, и вызываешь какой-то метод класса
Pathologic
ну и отдаешь ответ в json
Pathologic
а если запрос не через ajax, то ты вызываешь тот же метод класса, но ответ отдаешь пропустив через view
Aliaksandr
да не цепляйся к слову апи. ну ок, не апи - для пост-запросов мне нужны роуты, чтобы туда что-то слать (авторизацию, регистрацию, всякое редактирование), а для гет (получения списков и инфы) мне эти роуты особо и не нужны. т.е. уже получается что права надо проверять в разных местах
Pathologic
для гет тебе тоже нужны роуты
Am
Таким образом скоро придут к группам роутов и всё же "апи" вынесут куда нужно. ((%
Am
ADR это правильно.
Am
Плодить ничего не нужно, все проверяется где нужно и один раз.
Aliaksandr
для гет тебе тоже нужны роуты
зачем мне гет-роуты, по которым я все равно ничего не получу, потому что там даже права не проверишь, если я туда обращусь
Pathologic
почему это не проверишь
Pathologic
мидлваре работают и для пост и для гет ((:
Aliaksandr
мидлваре работают и для пост и для гет ((:
ну так есть контроллер, который отдает документ на гет и редактирует его на пост. понятно, что через аякс я его получу и так и так, обращаясь к нужному роуту. но если я вдруг захотел без аякса просто исполнить этот же контроллер, чтобы получить этот документ у себя на странице - то все права же и слетают сразу
Pathologic
ты можешь разные мидлваре использовать
Pathologic
для разных случаев
Aliaksandr
так если я вообще обращаюсь к этому контроллеру, чтобы получить те же самые данные мимо его роута - то и прав он никаких не знает
Pathologic
на get можешь не проверять права, на post проверять
Aliaksandr
или мне нужно два разных контроллера одно и то же делающих клонировать?
Pathologic
контроллер один, роуты разные
Aliaksandr
блин, так какой роут то? вот я нахожусь на какой-то странице эво и захотелось мне получить заголовок другой страницы. я говорю ау, дайте мне (new PageInfo())->get(1)->pagetitle, потому что я не могу сделать Http::get('page-info') - в итоге ни там ни там никто не знает, есть ли у меня доступ к этой странице - потому что проверка прав в миддлваре и он в обоих случаях либо вообще не работает либо его нужно отключить, потому что от новой сессии он все равно не сработает
Pathologic
что значит захотелось получить?
Pathologic
ты перешел на страницу, значит у тебя есть для этого права
Pathologic
в коде этой страницы тебе нужно получить заголовок другой страницы - ну бери и получай
Pathologic
хочешь через new PageInfo())->get(1)->pagetitle, хочешь запросом из базы
Pathologic
миддлваре в этом случае нужно чтобы определить, можно тебе страницу получить или нельзя
Pathologic
но допустим что ты зашел как пользователь, которому нельзя видеть заголовок страницы 1
Pathologic
ну проверишь как-нибудь сам уже
Pathologic
миддлваре относится к запросу
Pathologic
а как его обрабатывать - сам решаешь
Aliaksandr
Ну нет прав и все, и роут documents/1 об этом знает, потому что ему миддлваре скажет, что этого юзера туда пускать нельзя. Но если я просто вызову контроллер - ему об этом ничего неизвестно. Т.е. получается надо эту проверку либо дублировать в контроллере, либо делать до вызова контроллера, но тоже дублировать функционал
Pathologic
если пользователя миддлваре не пустит на роут documents/1 то уже не имеет значения, может ли этот пользователь увидеть в documents/1 заголовок из documents/2
Pathologic
твой контроллер просто не выполнится
Aliaksandr
Да я на главной хочу вывести это заголовок, но не к доку есть права не у всех. Такое даже в эво есть, типа группы документов - нет доступа, тебе ничего не показывает, есть - показывает
Aliaksandr
Получается мне надо еще какой-то очередной прослойко-класс писать, который потом и в миддлваре и вне его эти права проверяет
Aliaksandr
Чтобы это было из единой точки
Pathologic
в миддлваре можно проверить группу пользователя и группу страницы
Pathologic
если совпадают, то пользователь увидит страницу