Tank Auth. Беглый обзор.


Tank Auth требует некоторой доводки напильником
Зачем мне это?

Просто в последнее время я нахожусь в поиске библиотеки авторизации для CodeIgniter. А Tank Auth как раз то? что это делает.

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

Инсталляция довольно простая и укладывается в несколько пунктов:

  • Скачать/распаковать
  • Папку application скопировать в папку с приложением
  • Папку captcha скопировать в папку CodeIgniter (капча у меня не заработала, но об этом ниже)
  • С помощью файла schema.sql создать таблицы БД
  • В настройках вашего приложения редактировать файл config.php и установить параметр $config['sess_use_database'] = TRUE.

В принципе библиотека готова к работе.

По поводу капчи подробнее

Капча по умолчанию использует штатный плагин CodeIgniter, и она у меня категорически не встала как рыба об лёд. Может я что не так делал, а может не я. Но я так понял, что это не только моя проблема, и что многие сталкиваются с этим.

С этим мне ещё предстоит разобраться. Если не удастся разобраться можно использовать Recaptcha. Говорят работает 100%, не пробовал поскольку работал на локальном проекте. Я пока совсем отключил капчу в настройках.

Кстати, все настройки библиотеки хранятся в файле config/tank_auth.php

Использование библиотеки. 1

У библиотеки довольно развитый интерфейс. Готовый контроллер auth имеет следующие функции:

  • login — страница входа в систему
  • logout — соответсвенно выход
  • register — регистрация
  • send_again — ссылка в духе «Повторить письмо с кодом активации»
  • activate — действие активации. Обычно открывается из секретной ссылки в письме
  • forgot_password — для тех кто забывает пароли ;)
  • reset_password — сбросить забытый пароль и установить новый
  • change_password — поменять пароль
  • change_email — ссылка в духе «Изменить e-mail»
  • reset_email — ссылка активации нового e-mail, которая должна быть в письме
  • unregister — удалить пользователя

Полный джентельменский набор и ничего лишнего. При всём великолепии набора функционала, считаю однозначно необходимым изменять представления (views) соответствующие этим функциям. Дефолтовые шаблоны однозначно не впишутся ни в один дизайн :)

Кроме того, если разработчик любит делать несколько шаблонов на одну страницу, как я например (header, footer и т.д.), то придётся править и контроллер, что есть не очень хорошо.

Использование библиотеки. 2

Как регистрироваться, входить и выходить стало понятнее. А вот как на обычных страницах контролировать доступ к функционалу?

Для этого есть библиотека libraries/tank_auth.php, в ней предусмотрены функции is_logged_in, get_user_id и get_username. С их помощью можно построить нужную проверка. Например так:

load->helper('url');

                // Загрузить библиотеку  
		$this->load->library('tank_auth');

                //  Если пользователь не вошёл в систему то 
                if(!$this->tank_auth->is_logged_in){
                    redirect('error/need_login');
                }

                //  Если пользователь вошёл в систему,
                // но это не тот пользователь, которого мы ждём
                if($this->tank_auth->get_user_id<>123){
                    redirect('error/wrong_user');
                }
               ......................................
	}
 

Это довольно грубый пример для простейшего случая. Если у вас сложная модель доступа с множеством пользователей с разными типовыми ролями — пожалуй стоит написать целый класс со своим алгоритмом.

Но это уже другая история =)

Tank Auth. Беглый обзор.: 7 комментариев

  1. Dandr

    Пока только намотал на ус, где это можно найти. Когда созрею до такого, тогда вернусь к теме))

  2. RIPkilobyte

    freakAuth помоему лучше будет… хотя сам сейчас использую redux_auth.. функционал во второе его версии гораздо лучше и как то проще с ним работать… единственный минус который нашел — все так же используются не родные php сессии

  3. altesack Автор записи

    Надо будет попробовать. А оно с Native Session работает?

  4. RIPkilobyte

    нет. это и есть его минус. а так очень даже удобная штука

  5. Серега

    А по-моему DX AUTH круче гораздо. Ты ее не пробовал?

  6. altesack Автор записи

    Нет не пробовал. А как она с нативными сессиями? А то прям беда!

Комментарии запрещены.