Есть ли способ явно определить политику для ресурса Nova в Laravel? - PullRequest
0 голосов
/ 05 августа 2020

Сценарий такой: я хочу иметь возможность управлять типами сотрудников-пользователей независимо от других пользователей. Только сотрудники должны иметь возможность видеть и взаимодействовать с кадровым ресурсом, и никакой другой тип пользователей не должен иметь к нему доступа.

Итак, у меня есть ресурсы App\Nova\User и App\Nova\Staff, и оба из них имеют свои $model свойство, указывающее на модель App\Models\User. Это отлично работает и делает все, что мне нужно.

Проблема, с которой я столкнулся, связана с разрешениями. Я также иногда использую политики Laravel и хотел бы сделать то же самое здесь, но я не знаю, как создать политику специально для ресурса Staff, потому что он ссылается на модель User? По сути, я не хочу, чтобы внештатные пользователи могли просматривать какие-либо или выполнять какие-либо операции CRUD с персоналом. Я считаю, что могу скрыть персонал на боковой панели, но я понимаю, что пользователь все еще может получить к нему доступ по URL-адресу.

Я знаю, что могу создать модель персонала, которая расширяет модель пользователя, и тогда мой ресурс Nova может указывать к этой новой модели персонала, но у меня были проблемы с ней, так как я ее изначально настроил, до использования spatie/laravel-permissions для ролей / разрешений пользователей.

У меня есть несколько других типов пользователей, которых я бы любят создавать ресурсы для них, чтобы ими можно было управлять независимо, даже если они все находятся в одной таблице пользователей. В итоге у меня будет что-то вроде суперадминистратора, с другим пользовательским типом администратора клиента, который может видеть всех пользователей своего клиента, поэтому они могут видеть ресурс `` Сотрудник '', и, как указано выше, только администраторы клиентов должны быть в состоянии видеть это, и, конечно же, видеть в нем только своих сотрудников.

Я впервые использую Nova, поэтому любая помощь приветствуется.

...