Here I come, there I am.

 

Вчера започнах работа по ZonesCI - малка библиотека за управление на потребители и групи в CodeIgniter. Отделих 4-5 дни на проучване на съществуващи 3рd party решения, но не успях да намеря подходящо. Като цяло, самият фреймуърк не предлага функционалност и разчита на модули като Simplelogin, ezAuth, redux_auth, Freak Auth и други библиотеки с отворен код.

При всички тях обаче имаше проблеми от сорта:

Силно неприложими решения, ако вече имате ядрото на работния продукт и искате да 'наложите' системата за оторизация, без да чупите или променяте драстично кода.

В проекта в Google Code в момента съм качил ZonesCI 0.1a - още алфа версия, която работи за тестовия ми проект изключително добре, но ще развивам през идната седмица. В моя случай системата решава следните проблеми:

В repository-то на ZonesCI има и примерна CodeIgniter апликация с тестови данни и пробни проверки, която помага за по-лесното навлизане в системата.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati
  • TwitThis
del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Сходни постове:

  1. CakePHP - администрация, Auth, Acl и привилегии В CakePHP
  2. CodeIgniter и MySQL Stored Procedures   Ког
  3. Множество Stored Routines в CodeIgniter   При

Related posts brought to you by Yet Another Related Posts Plugin.

Comments

11 Responses to “ZonesCI - малка CodeIgniter auth библиотека”

  1. Калоян К. Цветков on December 13th, 2009 13:21

    Браво за библиотеката. Малко градивна критика неделя сутринта приемаш ли ? Да се изгладят работите... ;)

    Имаш private function декларация в класа, а в същото време е писан като за PHP4. По-добре направи целия клас като за PHP5, с всички удобства които предоставя -- иначе тази декларация с private-а няма да проработи на PHP4.

    Второто нещо което видях (това е вече професионално изкривяване) е непълната phpdoc документация. Прекарвал ли си класа през phpdoc да видиш какво ще се получи накрая? За това може би вече се държа като педант, но например сложи му page-level docblock най-отгоре, после полетата или ги документирай с batch docblock (една декларация з група от полета), или документирай всяко по отделно, аргументите на функциите им сложи и имената а не само типовете, docblock-овете вътре в методите и функциите не се обработват, сложи разясненията за връщания резултат в @return-а, а не вътре в кода, и т.н. Ако добрата документация е важна по принцип, то за open-source проект е два пъти по-важна, а и ще спести много време на всички които ще я ползват, ако начина на употреба е ясна от function-level docblock-а (също и в генерираната от тях документация), вместо да се разхождат из кода. Да не каже някой, че съм лицемер -- ето примерно аз как пиша документация (за PHP4 проект).

    Понеже не познавам CI толкова много в дълбочина, а и начина ми на писане е по-различен няма да коментирам другите неща, защото май за до персонален избор и начин на правене на нещата ;)

  2. admin on December 13th, 2009 13:28

    Привет, Калояне, и благодаря за feedback-a :) Честно казано, като сертифициран Java разработчик, PHP не ми е най-силната страна, затова имам някои хронологически пропуски, но това не пречи да commit-на публично библиотеката, която работи за мен.

    В случая предпочитам кодът да върви на PHP4, защото някои от работните сървъри все още са на 4-ка. Избягвал съм __construct и други по-специфични конструкции за версия 5, ако имам възможност, ще го тествам и на 4, като премахна private модификатора.

    За документацията - тази седмица ще правя crash тестове и ще допълвам библиотеката, така че към края ще се постарая да я изпипам повече. За момента има няколко тегления, но никакъв фийдбек - не е изключено да се появят бъгове или идеи за по-добра реализация на този етап.

  3. Калоян К. Цветков on December 13th, 2009 14:04

    Разбира се, публичното представяне помага за по-бързото набиране на feedback ;)

  4. Радослав Станков on December 14th, 2009 0:46

    Добре изглежда, въпреки че не ползвам CI. Само бих ти препоръчал GitHub за хостинг opensource проекти :)

  5. Марио Пешев on December 14th, 2009 13:10

    Впрочем, за протокола и на двамата, библиотеките за auth на Zend могат лесно да се интегрират към CodeIgniter - общо и в частност :)

  6. Калоян К. Цветков on December 14th, 2009 14:17

    Не ми се говори за Zend Framework просто, супер съм разочарован -- проекта все повече заприличва на някакво кръвосемешение между Java и PEAR, отколкото на това, което обещаха като започваше проекта... Вижте колко от нещата ще се променят в ZF 2.0, чак е смешно -- толкова много хора, пари и ресурси и накрая това тромаво и over-engineered прасе ;)

  7. admin on December 14th, 2009 16:14

    Мислех, че си фен на Zend - а това, че прилича на доста тежък JEE Framework се забелязва и от непрофесионалисти :)

  8. Калоян К. Цветков on December 14th, 2009 16:18

    Бях, бях... заради това сега разочарованието ми е по-голямо ;)

  9. Method-X on December 26th, 2009 20:15

    Мерси много! Свърши ми чудесна работа :)

    А да те питам използваш ли template система. В момента си чеша главата с това, но ми се струва, че е като pain in the ass...

    Новак съм все още с CI, но до момента ми харесва много :)

  10. admin on December 26th, 2009 23:41

    Ами, не, не ползвам 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);

  11. Method-X on December 27th, 2009 11:12

    Аха... Мерси :) Ще пробвам твоя начин :)

Leave a Reply