Как создаются «костыли», или когда надо «быстро»
И так, была задача «быстро» сделать сообщество закрытым. Дело в том, что я действительно давно хотел сделать это, а тут случай помог. В общем:
костыль — любимый инструмент программистов после велосипеда. Превращает не работающий код в хоть как-то работающий или работающий через ж…
Костыли не всегда плохо, они же могут и помочь в некоторых случаях, но я буду писать тут именно о «плохих» примерах.
В методе getUid
есть место, когда участник не авторизирован. Мы добавим туда:
if(Config::get(Config::PARAM_PRIVATE) == 1) {
include HLEB_GLOBAL_DIRECTORY . '/app/Optional/login.php';
hl_preliminary_exit();
}
Где, если в конфиге выставить:
parameters.private = "1"
То сайт становится приватным, вас кидает на страницу авторизации.
Отлично. Но есть вопросы:
А если я включу еще и инвайт систему, то я попаду в неё?
Нет. Решение выше, сделает сайт глобально «редиректным» для любой страницы, если вы не авторизированы на нем. Даже страница с регистрацией не будет доступна.
Куда на странице login
делась кнопка «запомнить меня»?
Я не знаю. Точнее я конечно знаю, чтобы не ломать дизайн, и не учитывать еще её, она была просто удалена.
Почему на странице авторизации нет системы, которая бы показывала, что пароль ошибочный и т.д.
Я не знаю. Точнее… тут могу написать 100 пунктов почему там нет оповещений.
Возможно стоит шаблон для входа разместить в папке с шаблонами, а не по app/Optional
?
Не буду далее отвечать сам себе. Цель была, — быстро сделать. И это было сделано. Теперь мы имеем костыль. У меня есть еще некоторые сайты, тот же форум на Discourse. И что теперь, я должен постоянно коситься на него и думать, что там лучше? Что мешает на этом сайте сделать достойно это дело?
Ничего не мешает. Я просто показал, как создаются костыли, — быстро.
Поверьте, я не одинок в этом. Часто вижу «костыли» и у крупных компаний. Десятки миллионов долларов и 10 лет работы, например, было выкинуто (ИМХО) для одного решения в Q&A области. Зачем? Ведь было сразу понятно, что «костыль» будет.
Система авторизации, инвайт система и различные формы доступа, да, необходимо продумать уже сейчас. Я посмотрю сегодня на все это.
Спасибо. Есть действительно много моментов, которые стоит решить уже сейчас.