1.1 User can request for message from explore page 1.2User cannot message broker if not following 1.3 prepare action which handles creating inbox between user and broker if not exists
39 lines
944 B
PHP
39 lines
944 B
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class EnsureUserFollowedBroker
|
|
{
|
|
/**
|
|
* Handle an incoming request.
|
|
*
|
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
|
*/
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
$sender = \Auth::user();
|
|
if ($sender->isBroker()) {
|
|
return $next($request);
|
|
}
|
|
|
|
$recipientUser = $request->route('recipient');
|
|
if ($recipientUser->isBroker()) {
|
|
$recipient = $recipientUser->type;
|
|
|
|
$isFollowing = $recipient->followers->contains($sender->id);
|
|
|
|
if ($isFollowing) {
|
|
return $next($request);
|
|
}
|
|
|
|
abort(403, 'You are not following this broker.');
|
|
}
|
|
|
|
abort('404', 'Broker not found.');
|
|
}
|
|
}
|