@devhoussam123 Just use this in your controller logic...
$user->assignRole('writer');
...assuming you have the roles created in the Spatie package.
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
I'm using laravel Breez as Auth scaffolding package by laravel and I setup laravel permissions by spatie.
I have created two registration forms one for "Writer" and other for "Publisher" all registration views are located in RegisteredUserController
app\Http\Controllers\Auth\RegisteredUserController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\Frontend\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class RegisteredUserController extends Controller
{
/**
* Display the registration view for writer.
*
* @return \Illuminate\View\View
*/
public function createWriter()
{
return view('auth.writer.writer-space');
}
/**
* Display the registration view for publisher.
*
* @return \Illuminate\View\View
*/
public function createPublisher()
{
return view('auth.publisher.publisher-space');
}
/**
* Handle an incoming registration request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|confirmed|min:8',
]);
Auth::login($user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]));
event(new Registered($user));
return redirect(RouteServiceProvider::HOME);
}
}
as you can see in this controller I have two registration view for two type of users "Writer" and "Publisher".
What I want to do is to Set the role of the users while registration based on this two types "Writer" and "Publisher" Roles using laravel-permission by spatie.
app\routes\auth.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\RegisteredUserController;
Route::get('/publisher-space', [RegisteredUserController::class, 'createPublisher'])->middleware('guest')->name('publisher-space');
Route::get('/writer-space', [RegisteredUserController::class, 'createWriter'])->middleware('guest')->name('writer-space');
Please or to participate in this conversation.