Я пытаюсь написать свой собственный модуль RBAC в Кохане. Я не хочу использовать существующий модуль, я просто хочу это сделать, чтобы узнать.Объединение таблиц в ORM
Мои таблицы: пользователи, роли, разрешения и users_roles, role_permissions (из-за многих-многих отношений между пользователями < -> роли и роли < -> разрешения);
Моя модель Пользователь:
class Model_User extends ORM {
protected $_primary_key = 'user_id';
protected $_has_many = array(
'roles' => array(
'model' => 'role',
'through' => 'users_roles',
),
);
}
Моя Role Model:
class Model_Role extends ORM {
protected $_primary_key = 'role_id';
protected $_has_many = array(
'users' => array(
'model' => 'user',
'through' => 'users_roles',
),
'permissions' => array(
'model' => 'permission',
'through' => 'roles_permissions',
),
);
}
и моя модель Разрешение:
class Model_Permission extends ORM {
protected $_primary_key = 'permission_id';
protected $_has_many = array(
'roles' => array(
'model' => 'role',
'through' => 'roles_permissions',
),
);
}
Я создаю пользователей:
$user = ORM::factory('user');
$user->username = 'johndoe';
$user->email = '[email protected]';
//etc
$user.save();
я создаю роли:
$author = ORM::factory('role');
$author->name = 'author';
$author->save();
создать разрешение:
$read = ORM::factory('permission');
$read->name = 'read';
$read->description = 'can read posts';
$read->save();
$write = ORM::factory('permission');
$write->name = 'write';
$write->description = 'can write posts';
$write->save();
Я добавить роли пользователей:
$user->add('roles', $author);
добавить разрешения ролей:
$author->add('permissions', $read);
$author->add('permissions', $write);
и все это wo отлично.
Но мой вопрос как проверить, если пользователь имеет данное разрешение: в этом случае, как проверить, если JohnDoe имеет разрешение на писать сообщение?
Благодарим за помощь!
Получите все разрешения авторов, а затем просмотрите их и посмотрите, разрешено ли разрешение на запись в этом наборе объектов разрешений. – hakre
Я хочу проверить, имеет ли $ user разрешение на запись, а не если $ author имеет разрешение на запись .. –
Затем вам сначала нужно получить роль (и) пользователя, а затем просмотреть их, чтобы посмотреть, разрешено ли разрешение. Что с этим сложно? – hakre