Блокируйте ресурс только для одного пользователя в PHP AJAX и перенаправляйте другого в форму только для чтения

Я создаю приложение с Laravel 5.5. Я использую так PHP AJAX и MySQL.

У меня проблема. Пользователь соединяется со своей учетной записью в приложении, и когда он нажимает на элемент (например, карточку контакта), я хочу перенаправить этого пользователя в форму только для чтения, потому что другой пользователь находится в текущей карточке. Этот другой пользователь видит форму для редактирования карты.

На самом деле, я хочу заблокировать ресурс только для одного редактируемого пользователя. Другие пользователи будут доступны только для чтения (перенаправить на другой маршрут)

Можно ли использовать промежуточное ПО? Использовать куки? Или запустить маршрут Ajax, когда пользователь закрыл свой браузер или вкладку?

Помоги мне….

1

Решение

Добавьте новое обнуляемое поле в базу данных на вашем ресурсе, чтобы сохранить текущий идентификатор пользователя, который отвечает за редактирование. Затем добавьте промежуточное программное обеспечение, которое проверит, является ли это поле пустым, а затем свободно редактирует, если не будет доступно только для чтения.

например, у вас есть таблица продуктов:

id title group_id editor_id


1 велосипед 1 5

2 машины 3 ноль

Код ресурса 1 может быть изменен только пользователем с кодом 5.

Resource id 2 доступен для редактирования любому пользователю, который начинает редактирование.

и затем после выхода пользователя или любого другого поведения, которое вам нравится, попробуйте снова сделать его нулевым, чтобы его могли редактировать другие.

код промежуточного программного обеспечения:

// find the resource
$resource = Resource::find($request->resource_id);

// current user is last user. so no need to check.
if($resource->editor_id == auth()->user()->id) return $next($request);

// check if 10 minutes passed from last edit by another user.
if(Carbon::now()->diffInMinutes(Carbon::parse($resource->updated_at)) >= 10) {
// replace current user id with last one.
$resource->editor_id = auth()->user()->id;
$resource->save();
} else {
return response('You dont have permission to edit.');
}
0

Другие решения

Я считаю, что вы должны использовать оба подхода;

  1. Обрабатывать его через промежуточное ПО Laravel на стороне сервера — Вам необходимо создать промежуточное программное обеспечение, которое должно проверять вызов ресурсов. Вам также необходимо сохранить флаг обновления для ресурса для определенного запроса сеанса, чтобы он не был доступен для других.
  2. Проверка на стороне клиента на наличие ресурса — После того, как ресурс отправлен другим пользователем, текущий пользователь, который видит ресурс как Готов только , можете работать с ним с последними данными в форме.

Более того, вы можете управлять очередью запросов для обработки такого приоритета, чтобы, если несколько пользователей просматривали ресурс, они могли получать их в соответствии с их приоритетом в зависимости от установленного вами приоритета.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector