Подскажите пожалуйста как решить данную проблему:
при авторизации пользователя проверяется его статус в одной из таблиц, и если он равен 0, то необходимо удалить одну роль.
Я это реализую таким образом:
function mymodule_user($op, &$edit, &$account, $category = NULL){
..
switch($op){
case 'login':
...
$edited_account = (array)$account;
foreach($edited_account['roles'] as $key=>$role){
//оставляем все роли, кроме базового и оптимального
if(in_array($role, array('базовый','оптимальный')))
unset($edited_account['roles'][$key]);
}
user_save($account, $edited_account);
break;
}
}
..
switch($op){
case 'login':
...
$edited_account = (array)$account;
foreach($edited_account['roles'] as $key=>$role){
//оставляем все роли, кроме базового и оптимального
if(in_array($role, array('базовый','оптимальный')))
unset($edited_account['roles'][$key]);
}
user_save($account, $edited_account);
break;
}
}
Роли за данным пользователем снимаются, но при следующей авторизации происходит проблема: "Имя пользователя или пароль неверны."
Администратором меняю пароль и снова успешная авторизация.
Комментарии
в каком смысле удаление роли? И почему не просто
<?php user_save($account):?>
?