1. Go to this page and download the library: Download mmtech/iam-rbac library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace App\Kafka\Handlers;
use Junges\Kafka\Contracts\ConsumerMessage;
use Mmtech\Rbac\Kafka\Contracts\TopicMessageHandlerInterface;
final class AuthEventsTopicHandler implements TopicMessageHandlerInterface
{
public function topic(): string
{
return 'auth.events.v1';
}
public function handle(ConsumerMessage $message): void
{
// Your business logic here.
}
}
use Illuminate\Support\Facades\Route;
Route::middleware(['rbac.auth.user', 'rbac.bind.gateway.user', 'can:orders.read'])
->get('/orders', [OrdersController::class, 'index']);
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
public function index(Request $request): JsonResponse
{
abort_unless($request->user()->can('orders.read'), 403);
return response()->json(['ok' => true]);
}
auth()->user()->can('orders.read');
Gate::forUser($request->user())->allows('orders.read');
$this->authorize('orders.read'); // in a `Controller` using `AuthorizesRequests`
use Mmtech\Rbac\Authorization\Contracts\PermissionCheckerInterface;
$allowed = app(PermissionCheckerInterface::class)->userCan(
$sub,
'orders.read',
'customer_app'
);
use Mmtech\Rbac\Authorization\Contracts\PermissionCheckerInterface;
use Mmtech\Rbac\Support\SurfaceResolver;
$allowed = app(PermissionCheckerInterface::class)->userCan(
$sub,
'orders.read',
SurfaceResolver::resolve($request)
);
$roles = auth()->user()->rbacRoles(); // list<array{id: string, name: string}>
$first = auth()->user()->rbacRole(); // first entry or null
// Optional explicit surface (otherwise same as Gate / SurfaceResolver for this request):
$rolesAdmin = auth()->user()->rbacRoles('admin_panel');
// Request helpers (when user is GatewayUser):
$roles = request()->rbacRoles();
$first = request()->rbacRole();