Как сделать доступ к файлу по определеному url и нужно ли это?

Сервер nginx (frontend) + apache (backend).
Мультиязычный Wordpress (плагин Polylang).

Для авторизации используется api другого сайта, которое в случае если пользователь правильно ввёл логин-пароль возвращает токен для дальнейшей авторизации пользователя.

То есть:
example.com > example.ru > ввод логина/пароля, если ок то > example.com + токен

Сейчас сделал криво.
Создано 2 страницы на которые апи возвращает токен для дальнейшей авторизации:
example.com/ru/auth-ru/
example.com/en/auth-en/
а в самом шаблоне страницы никакого вывода, только действия по авторизации и редирект на страницу скоторой человек нажал "войти".

Это немного убивает логику: шаблоны страниц лежат в папке pages и среди них файл исключительно с логикой, да и в админке зачем-то создана страница которой по сути не существует.

Я хочу не делать страниц вовсе, а создать условный auth.php в папке с темой (чтобы всё в 1 месте) если это возможно, или хотя бы в корневом каталоге.

В котором загрузить wordpress (чтобы использовать функции)
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );


Сделать всё что нужно и переадресовать человека на страницу с которой он начал авторизацию.

Сейчас если допустим положить его в корень сайта и обратиться example.com/auth.php то получу страницу 404

Правильный ли это подход вообще и как прописать (подозреваю что в .htaccess) правила для такого url'а?
  • Вопрос задан
  • 2974 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ответ уже как бы есть, я только не могу понять, зачем городить сторонние файлы, делать редиректы и тд. Есть же такая удобна штука как хуки. Например - init, template_redirect, template_include. Вместо целого файла регистрируете query_var, можно даже rewtie_rule свой (example.com/auth/). При попадании на этот урл в хуке init или template_include стартуете авторизованную сессию, если есть токен, делаете что надо (например сверяете токен с таковым в таблице wp_usermeta), дальше отправляете на нужную страницу (откуда начали авторизацию). Гибкость фантастическая. И все - родные фичи WP, а не костыли. Да, это более advanced topic, чем просто сторонний файлик, но и более гибкий в результате, более надежный и безопасный. Вот в вашем случае, например, а что, если токен левый отправить? Проверки есть? Какая-нибудь API key pair есть? Так чтобы один ключик на том сервисе где логинитесь, а второй - на самом сайте. Понятно, что вы детально не раскрыли механизм авторизации, но со стороны здесь просматривается не очень надежное место.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@maxyc_webber
Web-программист
а зачем апач?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы