Как применить разрешение на определенные файлы в laravel?
Я новичок в laravel и хочу разработать приложение для управления постами, такими как некоторые основные операции CRUD и так далее. Что мне нужно, так это небольшое руководство о том, как добавить конкретное разрешение на конкретную публикацию для определенных пользователей? это может показаться немного запутанным, но я хочу, чтобы другие пользователи не видели сообщения друг друга, а только те сообщения, которые пользователь-создатель разрешает видеть. Буду признателен за любые рекомендации, связанные с этим небольшим проектом, от схемы базы данных до ее кодирования.
Я попробовал пакет под названием Spatie для laravel, но я не знаю, будет ли он полностью поддерживать этот сценарий или нет??
2 ответа
Вы пытаетесь предоставить доступ к определенной группе пользователей для определенных сообщений в вашей базе данных. Если этот сценарий верен, вы можете достичь этого, используя свои таблицы в базе данных.
Для этого вам нужно настроить некоторые из ваших таблиц, как показано ниже:
Шаг 1:
В вашей таблице сообщений добавьте дополнительный столбец с именем access_level
Шаг 2:
Когда пользователь выбирает сообщение как общедоступное, затем добавляет public
Ключевое слово в этом access_level
колонка
Шаг 3:
Когда ты бежишь select
запрос, чтобы показать все сообщения просто запустите where
запрос как этот where access_level = "public"
Если вы хотите показать патичную публикацию патичному пользователю, вам нужно создать таблицу с именем post_users
user_id
а такжеpost_id
внешние ключи
| id | user_id | post_id |
| 1 | 12 | 22 |
| 2 | 22 | 22 |
Вы можете использовать ролевую аутентификацию для конкретного пользователя для конкретной задачи. Для этого вы можете следовать этой ссылке git
$user->assignRole('writer');
$user->removeRole('writer');
$user->syncRoles(params);
$role->givePermissionTo('edit articles');
$role->revokePermissionTo('edit articles');
$role->syncPermissions(params);
$permission->assignRole('writer');
$permission->removeRole('writer');
$permission->syncRoles(params);
Вы также можете проверить краткую кодировку здесь