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

6 августа, 2010
yii rbac

Я думаю, все, кто хоть немного работал с фреймворком Yii знают, что он поддерживает возможность разграничения прав доступа на основе ролей.

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

Одно из основных преимуществ использования данной библиотеки заключается в том, что вам нужно написать минимум кода для проверки прав доступа. Обычно этот код выглядит следующим образом.

if (!Yii::app()->user->checkAccess('createUser')) {
	throw new CHttpException(403, 'Forbidden');
}
//остальной код…

В теории всё просто. Но на практике, документации и примеров по этой теме практически нет (надеюсь, это скоро изменится).

Основные источники информации (на русском): Аутентификация и авторизация и RBAC и описание ролей в файле. На английском хороших и подробных примеров, к сожалению, я не нашел.

Примечание. Очень советую прочитать эти статьи, прежде чем переходить к моему примеру.

Когда я первый раз решил использовать RBAC, то выяснилось, что есть множество нюансов, которые приходится учитывать при работе с этой библиотекой. Ничего запредельно сложного и недоступного для понимания, но «ковырялся» я довольно долго ;)
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | Комментарии (41) »

CGridView. Часть вторая. AJAX.

25 июля, 2010
yii grid view

В этой части я хочу рассказать о некоторых особенностях реализации AJAX запросов в компоненте CGridView.

Предположим, у нас есть таблица, и мы создали для неё модель и скрипты для выполнения CRUD операций (с помощью встроенного генератора Yii).

Пусть таблица называется countries, содержит список стран с двумя полями (id, name).

В этом случае, страница управления записями будет доступна адресу
Читать дальше »

Опубликовано в Ajax, PHP, Web разработка, Yii | Комментарии (29) »

Неожиданное обновление CircleTasks

13 июля, 2010

Постоянные читатели этого блога, наверное, помнят, что некоторое время назад (прошло почти 10 месяцев :) ) я опубликовал несколько постов о разработке TODO скрипта под названием CircleTasks. Там же были выложены исходники и ссылка на демо версию.

Тогда пришло очень много пожеланий и советов по развитию системы. Какие-то я реализовал, какие-то – нет. Ключевой идеей была максимальная простота интерфейса, поэтому вводил новые функции я очень аккуратно.

Но, вынужден признаться, что со временем интерес к этому проекту у меня ослабел. Текущий функционал лично меня устраивал, и мотивации что-то менять не было.

И, совсем недавно, я узнал, что оказывается не я один пользуюсь этой системой :)
Читать дальше »

Опубликовано в CodeIgniter, PHP, Web разработка, Разное | Комментарии (12) »

Yii PHP фреймворк: оформление административных страниц

6 июля, 2010
yii grid view

Одной из наиболее мощных возможностей фреймворка Yii является генерация кода. Она позволяет сразу после создания таблицы в базе данных получить файлы модели, контроллера и представлений. Т.е. весь необходимый код для выполнения CRUD операций.

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

Взгляните на обычную страницу управления записями, сформированную с помощью компонента CGridView.
Читать дальше »

Опубликовано в HTML, PHP, Web разработка, Yii | Комментарии (21) »

Yii PHP framework: создание запросов с условием IN

3 июля, 2010
yii in condition

Последнее время мне довольно часто приходится работать с фреймворком Yii. И иногда возникают вопросы, ответы на которые не очевидны (во всяком случае для меня).

Попробую объяснить. Сам фреймворк, на мой взгляд, достаточно удобный и документация подробная. Но классов много, и формат передачи данных их методам часто сильно влияет на результат.

Рассмотрим небольшой пример – использование оператора IN.

Т.е. нужно сформировать примерно такой запрос.

SELECT * FROM tbl_users WHERE id IN (1, 2, 3)

Читать дальше »

Опубликовано в MySQL, PHP, Web разработка, Yii | Комментарии (16) »

WordPress плагин для внутренней перелинковки страниц сайта. Версия 3.

24 июня, 2010
wp terms descriptions 3 logo

Знаете, всегда очень приятно, когда кто-то проявляет внимание к твоей работе и помогает полезными советами. Сразу появляется желание что-нибудь сделать ;)

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

Примечание. Этот плагин предназначен для автоматической внутренней перелинковки сайта. Вы создаёте перечень ключевых слов и указываете ссылки для них. Плагин ищет ключевые слова в записях блога и преобразует их в ссылки.

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

В общем-то, я думал, что плагин решает свою узкую задачу в полном объеме… Но один из читателей этого блога (по имени Турист) объяснил мне, что это не так :)
Читать дальше »

Опубликовано в PHP, Web разработка, WordPress | Комментарии (96) »

Yii фреймворк: получение статистики перехода по ссылкам от сервиса Bit.ly

15 июня, 2010
yii bitly

Сегодня продолжим тему использования сервиса Bit.ly вместе с PHP фреймворком Yii. В прошлой части мы рассмотрели создание коротких ссылок для страниц вымышленного сайта с новостями.

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

Приступим.
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | 1 Комментарий »

Использование сервиса Bit.ly вместе с PHP фреймворком Yii

12 июня, 2010
yii bitly

Думаю, о твиттере и о том, какую роль в нем играют короткие ссылки, слышали все. В принципе, можно вообще не заморачиваться, т.к. twitter сам создаст их для вас, но при таком подходе возникнет несколько проблем.

Во-первых, длина ссылки и текста может превысить 140 символов. Т.е. ссылку лучше сразу сократить.

Во-вторых, будет сложнее отслеживать статистику переходов.

Поэтому гораздо удобнее использовать специализированные сервисы, например, Bit.ly. Этот сервис предоставляет API как для создания ссылок, так и для получения статистики переходов по ним.

Теперь рассмотрим небольшой пример.
Читать дальше »

Опубликовано в PHP, Web разработка, Yii | Комментарии (2) »

WordPress плагин для внутренней перелинковки страниц сайта. Версия 2.

2 июня, 2010
wp terms descriptions 2

Приветствую!

Прежде всего, хочу поблагодарить всех, кто участвовал в обсуждении и тестировании моего плагина «Terms Descriptions». Вы подсказали мне несколько хороших идей, которые я реализовал в новой версии плагина.

Сразу даю ссылку на архив.

архив с исходным кодом

Новые возможности.
Читать дальше »

Опубликовано в HTML, PHP, Web разработка, WordPress | Комментарии (12) »

Ограничения фреймворков (на примере Yii)

31 мая, 2010
yii php framework autocomplete

О том, что фреймворки позволяют сократить время разработки, знают все. Но иногда при этом появляются самые неожиданные ограничения.

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

В этой статье я хочу показать пример такой ситуации, и, естественно, её решение.
Читать дальше »

Опубликовано в Ajax, HTML, JavaScript, PHP, Web разработка, Yii | Комментарии (10) »