Dec
12
Вчера започнах работа по ZonesCI - малка библиотека за управление на потребители и групи в CodeIgniter. Отделих 4-5 дни на проучване на съществуващи 3рd party решения, но не успях да намеря подходящо. Като цяло, самият фреймуърк не предлага функционалност и разчита на модули като Simplelogin, ezAuth, redux_auth, Freak Auth и други библиотеки с отворен код.
При всички тях обаче имаше проблеми от сорта:
- проверка за логнат потребител, но без привилегии и роли
- тежки и огромни системи, включващи много излишна функционалност
- необходимост от промяна на съществуващ код (добавяне на базови контролери и други неща, почти 'по ядрото')
- конкретен модел на базата от данни, наложен от библиотеката
Силно неприложими решения, ако вече имате ядрото на работния продукт и искате да 'наложите' системата за оторизация, без да чупите или променяте драстично кода.
В проекта в Google Code в момента съм качил ZonesCI 0.1a - още алфа версия, която работи за тестовия ми проект изключително добре, но ще развивам през идната седмица. В моя случай системата решава следните проблеми:
- поддържа система от потребители и приходящите им роли
- дава възможност за връзка към custom taблица 'USERS' без значение от дефинираните полета (изисква само ID, поле за име/mail и парола)
- не изисква промени в кода, единствено ползване на check() метод в контролерите, които са дефинирани за конкретен сорт потребители
- не съдържа предварително дефинирани форми или системи за регистрация и логин, т.е. позволява ръчна настройка и конфигурация
- малка и лека е - един конфигурационен файл и една библиотека
- надграден от SimpleLogin библиотеката
В repository-то на ZonesCI има и примерна CodeIgniter апликация с тестови данни и пробни проверки, която помага за по-лесното навлизане в системата.
Сходни постове:
- CakePHP - администрация, Auth, Acl и привилегии В CakePHP
- CodeIgniter и MySQL Stored Procedures Ког
- Множество Stored Routines в CodeIgniter При
Related posts brought to you by Yet Another Related Posts Plugin.


















Браво за библиотеката. Малко градивна критика неделя сутринта приемаш ли ? Да се изгладят работите...
Имаш
private functionдекларация в класа, а в същото време е писан като за PHP4. По-добре направи целия клас като за PHP5, с всички удобства които предоставя -- иначе тази декларация сprivate-а няма да проработи на PHP4.Второто нещо което видях (това е вече професионално изкривяване) е непълната phpdoc документация. Прекарвал ли си класа през phpdoc да видиш какво ще се получи накрая? За това може би вече се държа като педант, но например сложи му page-level docblock най-отгоре, после полетата или ги документирай с batch docblock (една декларация з група от полета), или документирай всяко по отделно, аргументите на функциите им сложи и имената а не само типовете, docblock-овете вътре в методите и функциите не се обработват, сложи разясненията за връщания резултат в
@return-а, а не вътре в кода, и т.н. Ако добрата документация е важна по принцип, то за open-source проект е два пъти по-важна, а и ще спести много време на всички които ще я ползват, ако начина на употреба е ясна от function-level docblock-а (също и в генерираната от тях документация), вместо да се разхождат из кода. Да не каже някой, че съм лицемер -- ето примерно аз как пиша документация (за PHP4 проект).Понеже не познавам CI толкова много в дълбочина, а и начина ми на писане е по-различен няма да коментирам другите неща, защото май за до персонален избор и начин на правене на нещата
Привет, Калояне, и благодаря за feedback-a
Честно казано, като сертифициран Java разработчик, PHP не ми е най-силната страна, затова имам някои хронологически пропуски, но това не пречи да commit-на публично библиотеката, която работи за мен.
В случая предпочитам кодът да върви на PHP4, защото някои от работните сървъри все още са на 4-ка. Избягвал съм __construct и други по-специфични конструкции за версия 5, ако имам възможност, ще го тествам и на 4, като премахна private модификатора.
За документацията - тази седмица ще правя crash тестове и ще допълвам библиотеката, така че към края ще се постарая да я изпипам повече. За момента има няколко тегления, но никакъв фийдбек - не е изключено да се появят бъгове или идеи за по-добра реализация на този етап.
Разбира се, публичното представяне помага за по-бързото набиране на feedback
Добре изглежда, въпреки че не ползвам CI. Само бих ти препоръчал GitHub за хостинг opensource проекти
Впрочем, за протокола и на двамата, библиотеките за auth на Zend могат лесно да се интегрират към CodeIgniter - общо и в частност
Не ми се говори за Zend Framework просто, супер съм разочарован -- проекта все повече заприличва на някакво кръвосемешение между Java и PEAR, отколкото на това, което обещаха като започваше проекта... Вижте колко от нещата ще се променят в ZF 2.0, чак е смешно -- толкова много хора, пари и ресурси и накрая това тромаво и over-engineered прасе
Мислех, че си фен на Zend - а това, че прилича на доста тежък JEE Framework се забелязва и от непрофесионалисти
Бях, бях... заради това сега разочарованието ми е по-голямо
Мерси много! Свърши ми чудесна работа
А да те питам използваш ли template система. В момента си чеша главата с това, но ми се струва, че е като pain in the ass...
Новак съм все още с CI, но до момента ми харесва много
Ами, не, не ползвам template engine, по-скоро използвам ръчна концепция за шаблони - имам главен шаблон (layout, template_view.php) и в него залагам if клаузи, които правят проверка за наличието на даден компонент. Обикновено целият шаблон ми е един и същ с изключение на съдържанието, така че в повечето случаи си дефинирам променлива contentFile с името на view-то и там вмъквам динамичното съдържание, като оставам header, footer и менюта подредени еднакви навсякъде.
Един вид в кода:
< ? if(isset($contentFile)) {
$this->load->view($contentFile);
} ?>
А в контролера:
$data['contentFile'] = 'some_view';
$this->load->view('template', $data);
Аха... Мерси
Ще пробвам твоя начин