Как сделать чтоб User 1 смог создать User 2 и редактировать только его профиль?

Главные вкладки

Аватар пользователя Shagi Shagi 26 июля 2009 в 0:39

Администратор имеет все права. Это понятно.

Создаю Роль - Менеджер и роль - Заказчик.
Менеджер может создать юзера с ролью Заказчик.
Но как сделать, чтоб Менеджер 1 мог редактировать юзеров, которых именно он создал, а не тех, кто создал Администратор или другой Менеджер?

Пробовал два модуля:
administerusersbyrole
role_delegation

В результате, Менеджер может создавать юзеров с ролью Заказчика, но может редактировать любых юзеров с ролью Заказчика. Да еще может и себя назначить администратором Smile

Ужас Sad

Может кто сталкивался с такой проблемой?
Подскажите!

Комментарии

Аватар пользователя Shagi Shagi 26 июля 2009 в 1:05

С помощью модуля roleassign можно добится, что юзер может назначать только одну роль - в данном случае Заказчик. Хоть самому себе Smile
Но. Как добиться, чтоб он мог редактировать/просматривать только те профили, которые сам создавал?

Аватар пользователя Shagi Shagi 26 июля 2009 в 1:32

Интересный модуль user_permissions
Получается, можно конкретному юзеру персонально назначать любые права Smile
Но, опять же...
Если я дам такому юзеру отдельные права, он сможет изменить и другие учетные записи, а не только те, что сам создал Sad

Аватар пользователя Jackinua Jackinua 9 марта 2010 в 23:16

Добавил в модуле subuser пару строк в файле subuser.pages.inc, вместо

<?php  if ($admin && !$notify) {
    
drupal_set_message(t('Created a new user account for <a href="url">%name</a>. No e-mail has been sent.', array('url=> url("user/$account->uid"), '%name' => $account->name)));
  }
?>

следующий код

<?php  if ($admin && !$notify) {
    
//
if (module_exists('user_types')==TRUE){
//Detect relation between user role and user_roles (array_keys($roles) -- $role - new user role)
$temp db_result(db_query('SELECT user_type_id FROM {user_types_type} WHERE role = %d'array_keys ($roles)));
//Insert or Update one role to one user into user_types_user
db_query("UPDATE {user_types_user} SET user_type_id='%d' WHERE uid='%d'",$temp$account->uid);
if (!
db_affected_rows()) {
[
user=db_query]db_query[/user]("INSERT INTO {users_types_user} (uid, user_type_id) VALUES ('%d', '%d')"$account->uid$temp);
}

        }
    

//
    
drupal_set_message(t('Created a new user account for <a href="url">%name</a>. No e-mail has been sent.', array('url=> url("user/$account->uid"), '%name' => $account->name)));
  }
?>

Правда соотношение 1 к 1. Кто сталкнеться, тот поймет