Работа с пользователями
Пользователи представлены классом \Cetera\User. Все пользовательские поля материалов доступны как свойства объекта. Для получения материалов, как правило, используются соответствующие методы разделов. Смотри Работа с разделами и Итераторы.
Методы \Cetera\User
Метод | Описание |
---|---|
enum() | Возвращает итератор с пользователями. См. Итераторы |
getById($id) | Статический. Возвращает пользователя с данным ID. |
getByLogin($username) | Статический. Возвращает пользователя по его логину. |
getByLogin($email) | Статический. Возвращает пользователя по его e-mail. |
getExternal($network, $id) | Статический. Возвращает пользователя по ID внешней сети. $network — USER_FACEBOOK, USER_TWITTER, USER_VK, USER_LJ, USER_GOOGLE, USER_ODNOKLASSNIKI, USER_OPENID |
create($type) | Статический. Создает пользователя. |
delete() | Удаляет пользователя. |
save() | Сохраняет пользователя в БД. |
setFields($fields) | Обновляет поля. |
addExternal($network, $id) | Привязывает пользователя к аккаунту внешней сети. |
getExternalId($network) | Возвращает внешний id пользователя, если он привязан к внешней сети. |
getExternals() | Возвращает id всех аккаунтов внешний сетей, к которым привязан пользователь. |
allowBackOffice() | Имеет ли право пользователь на доступ в back office. |
isAdmin() | Имеет ли пользователь привилегии администратора. |
isDisabled() | Пользователь заблокирован. |
isInGroup($group_id) | Является ли пользователь членом группы. |
getGroups() | Список групп, в которых состоит пользователь. |
logout() | Снимает авторизацию пользователя. |
Авторизация
Авторизация в FastsiteCMS построена на базе класса \Zend_Auth используя адаптер \Cetera\UserAuthAdapter, реализующий интерфейс \Zend_Auth_Adapter_Interface
Пример авторизации пользователя:
$result = \Cetera\Application::getInstance()->getAuth()->authenticate(new MyUserAuthAdapter(array(
'login' => [ПОЛЬЗОВАТЕЛЬ],
'pass' => [ПАРОЛЬ],
'remember' => [ДОЛГАЯ АВТОРИЗАЦИЯ]
)));
switch ($result->getCode()) {
case \Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
// вывести ошибку 'Пользователь не найден'
break;
case \Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
// вывести ошибку 'Неверный пароль'
break;
case \Zend_Auth_Result::SUCCESS:
// действия при успешной авторизации
break;
}
Для получения авторизованного в настоящий момент пользователя служит метод \Cetera\Application::getUser()
Пример, ограничить доступ к странице только для зарегистрированных пользователей:
$user = \Cetera\Application::getInstance()->getUser();
if (!$user) die('Страница только для зарегистрированных пользователей');
echo 'Добро пожаловать, '.$user->name;
Авторизация через соцсети
Для авторизации через соцсети используется сервис http://ulogin.ru/
Виджет авторизации делаем в конструкторе http://ulogin.ru/constructor.php и вставляем на сайт
Код авторизации удобно разместить в файле bootstrap.php, тогда в качестве обратной ссылки можно указать любую страницу сайта:
if (isset($_POST['token'])) {
$s = file_get_contents('http://ulogin.ru/token.php?token=' . $_POST['token'] . '&host=' . $_SERVER['HTTP_HOST']);
$u = json_decode($s, true);
if ($u && $u['uid']) \Cetera\Application::getInstance()->getAuth()->authenticate(new \Cetera\UserAuthAdapterULogin($u));
}
Создание пользователя (регистрация)
$user = \Cetera\User::create();
$user->setFields(array(
'login' => 'donald',
'name' => 'Donald J. Trump',
'email' => 'trump@whitehouse@gov',
'password' => md5('HillarySucks'),
));
$user->save();