Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Shady Hesham's avatar

how to make multi auth for sanctum to protect api

i have already multi auth system in my project, one for the user and the other for admin, and here is my guards

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => admin_auth',
    ],
	],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    'admin_auth' => [
        'driver' => 'eloquent',
        'model' => App\Models\admins\admin::class,
    ],
],

and I would like to have multi auth for API using sanctum because I only do it for one auth which is the user

here is my code to create token

    // Validate the form data
    $this->validate($request, [
        'phone_number'   => 'required|numeric',
        'password' => 'required',
        //'device_name' => 'required', for mobile app //need to be placed in token name
    ]);

    $user = User::where('phone_number', $request->input('phone_number'))->first();

    // Check password
    if(!$user || !Hash::check($request->input('password'), $user->password)) {
        return response([
            'message' => 'The phone number or passowrd is not correct'
        ], 401);
    }

    $roles = $user->getRoleNames()->toArray();

    $token = $user->createToken('mymobile_token', $roles)->plainTextToken;

so how to create another auth for the admin? and how to protect the public API which does not need to have a login

0 likes
0 replies

Please or to participate in this conversation.