Разработка JohnCMS 10 (обсуждения, новости)

3.41K
.
Кадило крутится, лавэха мутится
Давно новостей не было, давайте это исправим.
Как вы наверное уже знаете, сейчас идет достаточно активная разработка JohnCMS 10.

Что же нового?
Если коротко и без подробностей, то следующее:
- Полностью новая система работы с пользователями поддерживающая роли и права пользователей
- Новый роутер с поддержкой именованных маршрутов, middleware, группировкой маршрутов и прочими возможностями
- Измененная структура модулей
- Упрощенная работа с формами
- Миграции
- Консольные команды

А дальше уже рассмотрим подробнее зачем всё это нужно и что это дает.
.
Simba
Кадило крутится, лавэха мутится
Новая система работы с пользователями.

Полностью изменена структура таблицы пользователей и все лишние поля удалены.
Работа с дополнительными полями будет вынесена в админку и добавлять их сможет каждый на своё усмотрение.

Старый небезопасный алгоритм работы с паролями заменен на безопасный современный.

Полностью заменена система запоминания авторизации.
При авторизации для каждого нового браузера генерируется свой токен и запоминается. Это позволит в личном кабинете пользователя смотреть на каких устройствах он авторизован и при желании удалять запомненную авторизацию на них.
Так же позволит легко реализовать механизм регистрации/авторизации через соц.сети.

Старая система прав заменена на более гибкую на основе ролей и прав.
Суть такова:
Пользователь имеет роль, к роли привязываются определенные права. Далее в модулях можно будет проверять права, а не роли. А роли можно будет создавать отдельно и наделять их только нужными правами.
Но если вам не нужна такая гибкость, то при разработке модулей можно будет использовать просто проверку ролей. Она стала более очевидной в отличие от старой версии с проверкой цифер.
if ($user->hasRole('admin')) {
    echo 'Только для админа';
}

if ($user->hasRole(['admin', 'moderator'])) {
    echo 'Для админа и модератора';
}

К слову с проверкой прав всё так же достаточно просто:
if ($user->hasPermission('can_delete_post')) {
    echo 'Можно удалить пост';
}
.
Кадило крутится, лавэха мутится
Новый роутер

Роутер поддерживает именованные маршруты.
Зачем это нужно?
Это нужно для того, чтобы строить адреса страниц по имени маршрута.

Рассмотрим пример настроек маршрутов:
https://github.com/johncms/joh ... s.php

В целом он не сильно отличается от старого за исключением новых возможностей.
В примере можно увидеть как задаются имена маршрутов.
Чтобы построить URL по имени маршрута можно использовать функцию route()
echo route('login.index');

Этот код выведет URL адрес страницы авторизации. /login

Предположим ситуацию, вы хотите изменить адрес страницы авторизации. Раньше вам пришлось бы менять адрес во всех шаблонах.
Теперь если вы используете описанный выше пример, вы можете изменить адрес в настройках роутера и он изменится автоматически везде где используется функция route с указанным именем.
Это простой пример и возможно не показательный, но вы можете так же более гибко строить адреса в том числе с динамическими параметрами.
Посмотрим на пример:
Опишем простой URL с каким-то действием над пользователем.
$router->get('/userprofile/{user_id}/{action}', [LogoutController::class, 'confirm'])->setName('profile.action');

А теперь получим его передав необходимые параметры
echo route('profile.action', ['user_id' => '1001', 'action' => 'delete']);

// Результатом будет такой URL
/userprofile/1001/delete

Как видите, всё достаточно просто и гибко.
.
Кадило крутится, лавэха мутится
Поддержка middleware.
На первый взгляд если вы никогда не сталкивались с этим, может показаться чем-то непонятным, но на самом деле всё просто.

middleware - это промежуточное программное обеспечение которое будет выполняться в определенные моменты выполнения программы.
Самый типичный случай применения - проверить авторизован ли пользователь или нет. Если нет, то не пустить его на определенную страницу или определенную группу страниц.

По сути своей middleware это обычный php класс с одним методом.
Рассмотрим прмиер: https://github.com/johncms/joh ... p#L26
В этом примере просто проверяется авторизован ли пользователь. Если пользователь не авторизован, то он перенаправляется на главную страницу.

Где и как используется?
Вот тут можно посмотреть пример:
https://github.com/johncms/joh ... p#L51

Как вы можете заменить в примере просто передается название класса.
Дальше когда обрабатывается запрос пользователя к странице, перед тем как выполнить метод контроллера, выполняется код из AuthorizedUserMiddleware и потом если пользователь не авторизован, он переадресуется на главную, а если авторизован, он продолжает свой путь и выполняется метод контроллера.

В общем-то это пожалуй самый частый случай использования (проверить права пользователя и пустить или не пустить его на страницу).

Более подробно всё это будет описано в документации.
.
Wap Master
Наконец-то
.
Новый Джон это хорошо, но смысл? Для многих и старый 6 с норм кодом... Из модулей кроме форума все сырое, поэтому движок всеми забыт... + Мультиязычность отпугнула, если и пи лить ее то только один основной язык и вторую версию с мультиязычной... 


Потому что новые модули с недопереводами никто не хочет делать, потому что понимают что без всех пакетов это дерьмо 
.
Кадило крутится, лавэха мутится
# Serega1993 (09.09.2021 / 22:01)
Новый Джон это хорошо, но смысл? Для многих и старый 6 с норм кодом... Из модулей кроме форума все сырое, поэтому движок всеми забыт... + Мультиязычность отпугнула, если и пи лить ее то только один ос
Да нет смысла, юзай 6 джон, кто ж тебе запрещает? )
.
Flowap.ru
Согласен с оратором выше. Как по мне движок своё отжил. Уже нет и не будет сайтов на Johncms 9 или 10. Но вы делайте для себя если вам так хочется. 
.
Добавлено: 10.09.2021 / 06:55
# Кеня (10.09.2021 / 00:39)
Согласен с оратором выше. Как по мне движок своё отжил. Уже нет и не будет сайтов на Johncms 9 или 10. Но вы делайте для себя если вам так хочется. 
Все можно решить очень просто достаточно написать в релиз нормальный зц + личные файлы как минимум пару соток уз сайтов появяться, добавить блоги которые добавляют ещё с Джона 3

Добавлено: 10.09.2021 / 06:56
+ добавить в форум последние обновленные темы, из непрочитанного вышел и все хрен чё найдешь новое
.
Кадило крутится, лавэха мутится
Кому что, а кому-то подавай загруз и соц. сеточки которые нахер никому не нужны
Всего: 151