@treent

Как правильно ограничить доступ?

Нужна помощь , встала задача разграничить доступ к документам , а точнее есть N-ый документ и два пользователя один может только просматривать этот документ , а другой может не только читать а еще и редактировать .
Подскажите как правильно это реализовывать с помощью php и my sql или вообще без базы данных , буду очень благодарен если дадите ссылки на документацию и т.д.
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 3
AxianLTD
@AxianLTD
Как реализовать вы вряд ли получите ответ. Могу посоветовать посмотреть как это сделано в OpenSource системах управления документами. Один из возможных подходов
Есть список пользователей
У документа есть ACL - access control list. В нем перечислены ссылки на пользователей с указанием прав доступа.
Код отвечающий за доступ к документу проверяет имя и права.
Но вы неизменно получите еще и проблему одновременного доступа на запись. А какой вариант выбрать для ее решения - вам карты в руки.
Я бы посоветовал, прежде чем кодить, ознакомиться с проектированием многопользовательских систем. Или взять готовое решение для управления документами, благо таких пруд пруди.
Ответ написан
Комментировать
@Kostik_1993
Web Developer
Это называется роли и разрешения. Например для Laravel есть такое расширение. На чем пишете вы не знаю, поэтому конкретно что-то посоветовать еще не могу. Скажу только что без базы данных это реализовать сложнее
Ответ написан
Комментировать
supervaleha
@supervaleha
Web-development
Если на языке абстракций - то условно у вас есть документ и к нему все имеют доступ на чтение. Это значит, что где-то в БД есть список пользователей, которые имеют право на РЕДАКТИРОВАНИЕ.

Т.е. на чтение даём всем, а для предоставления функционала и инструментария редактирования проверяем наличие прав на изменение.

При попытке сохранить документ, также обязательно проверяем разрешено ли пользователю, от имени которого приходит запрос на сохранение, это делать - т.е. есть ли он в списке, о котором я говорил в первом абзаце.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы