Создание блога

firep91613

Новичок
Я голосую за админку в виде отдельного приложения. Но это опять надо роуты тащить в БД, чтобы не дублировать код 😀 Ща вообще распространены админки, которые связаны с мордой сайта только по БД + upload-dir (или upload-stor), либо через API в основном для морды.

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

Да, я уже писал: снести нафиг!
Админка в виде отдельного приложения - это как? Ну то есть, у меня щас блог по адресу localhost:8080. Админка в виде отдельного приложения localhost:8080/admin/ - там надо снова создавать точку входа в public, маршруты новые создавать, контроллеры и т.д.?
 

firep91613

Новичок
Одной достаточно. Еще иногда данные доступа админа прописываются прямо в конфиге (отдельно или совпадают с данными доступа к БД со стороны приложения), а еще иногда аутентификация выполняется через СУБД (и данные доступа кешируются при успешной аутентификации).

Ты вообще можешь сделать для начала только админа без какого-либо разграничения прав. И позволить ему делать все или ограничить его возможности. Если ограничить возможности, то чтобы что-то сделать сверх них, нужно напрямую лезть в БД/ФС. Хотя обычные юзеры могут быть нужны для создания комментов, а не статей. Можешь тупо для админа использовать нулевой идентификатор, а для всех прочих комментаторов любые другие.
Ок, приму к свединию, это не так существенно сейчас. Все таки я один на своем блоге. И комментариев нет.
 

miketomlin

Новичок
там надо снова создавать точку входа в public, маршруты новые создавать, контроллеры и т.д.?
Тебе все равно все это или почти все нужно будет делать. Просто не будет смешиваться морда и админка. Кстати, размещение админки на одном роуте морды делается по этой же причине – чтобы не смешивать. А на отдельном хосте роутинг будет еще проще: не нужен префикс /admin/, соответственно нет большой нужды использовать роутер, поддерживающий группы.
 
Последнее редактирование:

firep91613

Новичок
На отдельный хост/порт - это типо создать отдельную директорию, независимо от директории "морды" и запускать на другом порту? Ну вот сейчас localhost:8080 - морда, помимо ее еще админку запускать на другом порту, допустим, localhost:8081? Из админки уже подключатся к контейнеру с БД и рулить всем. Так получается?

Либо делай через спец. роут (или группу) морды
Вот про это не понял :(

А CMS там подобрые вордпресс, друпал, джумла и другие как делают? У них же вроде там site.com/admin/ - по устаревшему?
 

miketomlin

Новичок
помимо ее еще админку запускать на другом порту, допустим, localhost:8081? Из админки уже подключатся к контейнеру с БД и рулить всем. Так получается?
Да.

Вот про это не понял :(
Чего непонятного. Сделать админку частью морды, но в одной ветке вроде /admin/, а не размазывать по всей морде. Группа роутов – это когда сам роутер позволяет определить и понимает вложенность, так что тебе не надо сто раз писать admin/bla, admin/bla-bla и т.п. Но в общем можно и самому сделать вложенный роутинг.

У них же вроде там site.com/admin/ - по устаревшему?
Ты на них вообще не ориентируйся. Это хрень. Да, WPшка еще совсем недавно или прямо сейчас использовала отдельную точку входа. Она же еще совсем недавно или прямо сейчас и фронт-контроллер запускала для главной, как индексный файл. Мы что тоже теперь должны страдать этой фигней?! 😂

У меня, например, во всем корне часто вообще нет ни одно пхпшного файла (а если бы и был, то он вряд ли бы выполнился пыхом). Для WP и WPшников это вообще взрыв мозга. А то что админки вообще может не быть в публичном доступе, т.к. она висит на localhost'е сервера, WP'шникам даже не пытайся объяснять. Их потуги по сокрытию админки обычно ограничиваются переименованием папки /admin. Кстати, на шареде ты можешь прятать админку на хосте www. host.name, маскируя ее редиректом на host.name.
 
Последнее редактирование:

AmdY

Пью пиво
Команда форума
Боже, ты же учишься. Делай сразу правильно, а не костыли. Создавай пермишины, создавай группы как набор этих пермишинов, цепляй эту группу на пользователя. Помни что пермишен может быть ещё и к сущности привязан, например редактировать ты можешь только свои статьи.
 

miketomlin

Новичок
Создавай пермишины, создавай группы как набор этих пермишинов, цепляй эту группу на пользователя.
Он может увязнуть во всех этих примочках. Судя по теме, он еще незнаком со связью многие-ко-многим. Один-ко-многим пока будет норм. В наших блогах на уровне БД не используются группы доступа, при этом авторы тоже могут редактировать только свои статьи (и по-всякому управлять только комментами к ним).
 

firep91613

Новичок
А что именно вы подразумеваете под костылями?
Создавай пермишины, создавай группы как набор этих пермишинов, цепляй эту группу на пользователя. Помни что пермишен может быть ещё и к сущности привязан, например редактировать ты можешь только свои статьи.
Имеется ввиду, что каждый юзер относится к определенной группе? Посетитель, автор, модератор, администратор. У каждой группы свой набор пермишнов? Ну типо посетитель может только читать, автор может писать статьи и редактировать только свои статьи, модератор может редактировать все статьи, а администратор может все?
Он может увязнуть во всех этих примочках. Судя по теме, он еще незнаком со связью многие-ко-многим. Один-ко-многим пока будет норм. В наших блогах на уровне БД не используются группы доступа, при этом авторы тоже могут редактировать только свои статьи (и по-всякому управлять только комментами к ним).
Могу, но я постараюсь :)
 

AnrDaemon

Продвинутый новичок
Сам-то дашь ссылку на RFC с прувом твоей точки зрения?
Практически, все определения path заходят в segment, либо напрямую в pchar.
Код:
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
Отсюда, нам интересно только
Код:
sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
                  / "*" / "+" / "," / ";" / "="
И, да, это именно СТАНДАРТ (STD:66), не candidate, не informational.
Ещё вопросы?
 

AnrDaemon

Продвинутый новичок
Боже, ты же учишься. Делай сразу правильно, а не костыли. Создавай пермишины, создавай группы как набор этих пермишинов, цепляй эту группу на пользователя. Помни что пермишен может быть ещё и к сущности привязан, например редактировать ты можешь только свои статьи.
Достаточно одной таблички admin_users, где перечислить ID пользователей-администраторов. Для начала.
Расширять можно до бесконечности.
 

miketomlin

Новичок
Да, я рассчитывал увидеть прув твоей точки зрения, а пока что увидел только моей.

Если кратко, путь состоит из pchar или слеша (возможно, во множественном числе). По твоей первой ссылке (немного ниже якоря) имеем:
Код:
query = *( pchar / "/" / "?" )

fragment = *( pchar / "/" / "?" )
Убираем отсюда недопустимый для пути вопросительный знак и получаем:
Код:
pchar / "/" == pchar / "/"
Эврика! Доказано:
Путь по символам ничем не отличается от строки запроса/фрагмента кроме запрета на вопросительный знак по понятной причине.
 
Последнее редактирование:

firep91613

Новичок
Чего непонятного. Сделать админку частью морды, но в одной ветке вроде /admin/, а не размазывать по всей морде. Группа роутов – это когда сам роутер позволяет определить и понимает вложенность, так что тебе не надо сто раз писать admin/bla, admin/bla-bla и т.п. Но в общем можно и самому сделать вложенный роутинг.
Я смотрел у ларавеля, так надо делать?
PHP:
$router->prefix('admin')->group(function ($router) {
     $router->get('/', 'admin/dashboard.php');
});
 

miketomlin

Новичок
так надо делать?
Примерно так, но не обязательно в точности так. Вместо анонимной ф-ции можешь использовать обычный контроллер/экшен «первого уровня», а в нем уже вложенный роутинг и прочие действия, например авторизацию для доступа к админке. Кстати, авторизация для ветки /admin/ может отличаться от таковой для морды. Т.е. когда админ шарится по морде, куки для админки можно не передавать на сервер.

Не надо подтасовывать.
О каком подтасовывании идет речь?! Просто я не стал писать тройное равенство. Про путь написано буквами перед определениями query и fragment:
Если кратко, путь состоит из pchar или слеша (возможно, во множественном числе).
Или ты не согласен с этим утверждением? 😁
 

firep91613

Новичок
дай образок посмотреть? )
Переделывать начал. Мне сказали не правильно, когда контроллер дергает данные из БД.

Я тут прочитал пару статеек о MVC. Обязательно ли, чтобы контроллеры, модели и виды наследовали от базовых/абстрактных классах? Стоит ли вид делать классом? С статьях делают классом, но мне кажется для блога смысла нет.
 

AmdY

Пью пиво
Команда форума
Переделывать начал. Мне сказали не правильно, когда контроллер дергает данные из БД.

Я тут прочитал пару статеек о MVC. Обязательно ли, чтобы контроллеры, модели и виды наследовали от базовых/абстрактных классах? Стоит ли вид делать классом? С статьях делают классом, но мне кажется для блога смысла нет.
Лучше чтобы не наследовались. У тебя код должен быть максимально независим, чтобы любой кусок с лёгкостью можно было перенести в другое место или проект. Но иногда с наследованием удобно. То же и по отдельным классам, в идеальном мире у тебя для каждого действия один класс с одним публичным методом, инъекции зависимостей через конструктор и __invoke() запускающий код. Тем более сейчас в php есть анотации и дополнительный функционал легко подцепливается через них (например указание роутинга и пермишинов для контроллера).
 
Сверху