-
Notifications
You must be signed in to change notification settings - Fork 37
Auth
В систему изначально закладывается универсальная система авторизации, которая предусматривает подключение нескольких провайдеров для одного пользователя. Для обеспечения подобного функционала у нас существует таблица auth:
auth
----
userId - link to users table
provider - provider name, "equals" for login/pass
foreignKey - foreign key, user login for login/pass; facebook id; twitter id; etc
token - token to access, hash for login/pass
tokenSecret - secret token, salt of hash for login/pass (by default)
tokenType - can be "request" or "access"
created
updated
Система авторизации login/password полностью есть в скелетоне, см. Application\Auth\Table.
Пример настроек для использования авторизации через базу данных
<?php
"auth" => array(
"equals" => array(
"encryptFunction" => function($password, $salt) {
return md5(md5($password) . $salt);
}
)
)
В контроллере авторизации:
<?php
// login/password
Auth\Table::getInstance()->authenticateEquals($login, $password);
// ldap
$ldapAuth = $this->api('ldap', 'auth');
if (!$ldapAuth($login, $password)) {
throw new Exception('Wrong credentials');
}
Проверка на "вшивость":
<?php
if ($identity = $auth->getIdentity()) {
// all ok
}
Система авторизация должна поддерживать следующие провайдеры:
- по умолчанию - связка логин/пароль - данный функционал вынесен в \Application\Auth\Table
- LDAP - проверка через LDAP сервер - данный функционал вынесене в api ldap/auth
- Twitter - данный функционал вынесен в контроллер twitter\auth
- VKontakte
- OpenID
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View