Yii PHP framework: контроль доступа с использованием ролей (RBAC)

Я думаю, все, кто хоть немного работал с фреймворком Yii знают, что он поддерживает возможность разграничения прав доступа на основе ролей.
Принцип работы этой системы достаточно прост. Вы создаёте наборы правил и пользователей, связываете их между собой. После этого, вы в любой момент можете проверить, имеет ли пользователь право на выполнение какой-то операции или нет.
Одно из основных преимуществ использования данной библиотеки заключается в том, что вам нужно написать минимум кода для проверки прав доступа. Обычно этот код выглядит следующим образом.
-
if (!Yii::app()->user->checkAccess('createUser')) {
-
throw new CHttpException(403, 'Forbidden');
-
}
-
//остальной код…
В теории всё просто. Но на практике, документации и примеров по этой теме практически нет (надеюсь, это скоро изменится).
Основные источники информации (на русском): Аутентификация и авторизация и RBAC и описание ролей в файле. На английском хороших и подробных примеров, к сожалению, я не нашел.
Примечание. Очень советую прочитать эти статьи, прежде чем переходить к моему примеру.
Когда я первый раз решил использовать RBAC, то выяснилось, что есть множество нюансов, которые приходится учитывать при работе с этой библиотекой. Ничего запредельно сложного и недоступного для понимания, но «ковырялся» я довольно долго ![]()
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | View Comments
CGridView. Часть вторая. AJAX.

В этой части я хочу рассказать о некоторых особенностях реализации AJAX запросов в компоненте CGridView.
Предположим, у нас есть таблица, и мы создали для неё модель и скрипты для выполнения CRUD операций (с помощью встроенного генератора Yii).
Пусть таблица называется countries, содержит список стран с двумя полями (id, name).
В этом случае, страница управления записями будет доступна адресу
Читать дальше »
Опубликовано в Ajax, PHP, Web разработка, Yii | View Comments
Yii PHP фреймворк: оформление административных страниц

Одной из наиболее мощных возможностей фреймворка Yii является генерация кода. Она позволяет сразу после создания таблицы в базе данных получить файлы модели, контроллера и представлений. Т.е. весь необходимый код для выполнения CRUD операций.
Но, естественно, код формируется по стандартному шаблону, дизайн которого вам, возможно, захочется изменить.
Взгляните на обычную страницу управления записями, сформированную с помощью компонента CGridView.
Читать дальше »
Опубликовано в HTML, PHP, Web разработка, Yii | View Comments
Yii PHP framework: создание запросов с условием IN

Последнее время мне довольно часто приходится работать с фреймворком Yii. И иногда возникают вопросы, ответы на которые не очевидны (во всяком случае для меня).
Попробую объяснить. Сам фреймворк, на мой взгляд, достаточно удобный и документация подробная. Но классов много, и формат передачи данных их методам часто сильно влияет на результат.
Рассмотрим небольшой пример – использование оператора IN.
Т.е. нужно сформировать примерно такой запрос.
-
SELECT * FROM tbl_users WHERE id IN (1, 2, 3)
Опубликовано в MySQL, PHP, Web разработка, Yii | View Comments
Yii фреймворк: получение статистики перехода по ссылкам от сервиса Bit.ly

Сегодня продолжим тему использования сервиса Bit.ly вместе с PHP фреймворком Yii. В прошлой части мы рассмотрели создание коротких ссылок для страниц вымышленного сайта с новостями.
В этой части мы создадим отдельную страницу, на которой будет отображаться статистика переходов по коротким ссылкам.
Приступим.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | View Comments
Использование сервиса Bit.ly вместе с PHP фреймворком Yii

Думаю, о твиттере и о том, какую роль в нем играют короткие ссылки, слышали все. В принципе, можно вообще не заморачиваться, т.к. twitter сам создаст их для вас, но при таком подходе возникнет несколько проблем.
Во-первых, длина ссылки и текста может превысить 140 символов. Т.е. ссылку лучше сразу сократить.
Во-вторых, будет сложнее отслеживать статистику переходов.
Поэтому гораздо удобнее использовать специализированные сервисы, например, Bit.ly. Этот сервис предоставляет API как для создания ссылок, так и для получения статистики переходов по ним.
Теперь рассмотрим небольшой пример.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | View Comments
Ограничения фреймворков (на примере Yii)

О том, что фреймворки позволяют сократить время разработки, знают все. Но иногда при этом появляются самые неожиданные ограничения.
По-идее, так и должно быть. Каким бы универсальным не пытались сделать фреймворк разработчики, всегда чем-то приходится жертвовать. Точнее искать компромисс между количеством кода, который должен написать пользователь и гибкостью.
В этой статье я хочу показать пример такой ситуации, и, естественно, её решение.
Читать дальше »
Опубликовано в Ajax, HTML, JavaScript, PHP, Web разработка, Yii | View Comments
Yii PHP фреймворк: создаем поле с автозаполнением

Приветствую всех!
Сегодня я покажу небольшой пример использования виджета CAutoComplete из фреймворка Yii. Как несложно догадаться, он создаёт текстовое поле, под которым может появляться список с вариантами подстановок.
Принцип создания такого поля довольно прост. На странице нужно поместить обычное текстовое поле и назначить событию onKeyUp обработчик, который будет отправлять AJAX запросы серверу. В этих запросах нужно передавать введённый посетителем текст. Сервер ищет совпадения с этим текстом в БД и возвращает результат браузеру. JavaScript обработчик создаёт список с вариантами, полученными от сервера, и показывает его под полем.
Как видите, алгоритм несложный, но рутинной работы много.
Теперь, давайте разберёмся, что сделает за вас виджет, а что придётся делать вам.
Читать дальше »
Опубликовано в MySQL, PHP, Web разработка, Yii | View Comments
Yii PHP framework: связанные таблицы и limit

Давно я собирался написать этот пост, практически сразу после выхода цикла о создании игрового сайта, но как-то всё время откладывал.
В новых версиях фреймворка Yii (1.1.х) немного изменился принцип использования встроенной библиотеки для работы с базой данных, точнее она стала по-другому формировать SQL запросы при использовании связанных таблиц.
Речь идет об этом изменении.
Читать дальше »
Опубликовано в MySQL, PHP, Web разработка, Yii | View Comments
XML-RPC и Yii фреймворк

Последнее время фреймворк Yii набирает популярность. В основном благодаря интенсивному развитию и неплохому набору встроенных библиотек. Поэтому для меня было, немного удивительно, что в дистрибутиве не обнаружилось библиотеки для работы с XML-RPC.
Но, как оказалось, этот недостаток несложно исправить. Рассмотрим небольшой пример, получение нескольких записей из блога на движке WordPress с помощью XML-RPC запроса.
Шаг 1. Загружаем библиотеку для работы с XML-RPC.
Читать дальше »
Опубликовано в PHP, Web разработка, Yii | View Comments





