diff --git a/config/filament.php b/config/filament.php
index c806e64d0d..8e4be020dd 100644
--- a/config/filament.php
+++ b/config/filament.php
@@ -81,6 +81,7 @@ return [
'forgot-password' => Filament\Http\Livewire\Auth\ForgotPassword::class,
'reset-password' => Filament\Http\Livewire\Auth\ResetPassword::class,
'register' => Filament\Http\Livewire\Auth\Register::class,
+ 'logout' => Filament\Http\Livewire\Auth\Logout::class,
'dashboard' => Filament\Http\Livewire\Dashboard::class,
],
diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php
index 51059f21ba..3b38a72987 100644
--- a/resources/lang/en/auth.php
+++ b/resources/lang/en/auth.php
@@ -17,4 +17,8 @@ return [
'register' => 'Create a new account',
+ 'logout' => 'Sign out',
+
+ 'loggedout' => 'You have been successfully signed out.',
+
];
diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php
index ef820a1dd9..19ce264aef 100644
--- a/resources/views/livewire/auth/login.blade.php
+++ b/resources/views/livewire/auth/login.blade.php
@@ -27,4 +27,6 @@
{{ __('Login') }}
+
+
\ No newline at end of file
diff --git a/resources/views/livewire/auth/logout.blade.php b/resources/views/livewire/auth/logout.blade.php
new file mode 100644
index 0000000000..b9893cd35c
--- /dev/null
+++ b/resources/views/livewire/auth/logout.blade.php
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/resources/views/livewire/dashboard.blade.php b/resources/views/livewire/dashboard.blade.php
index d1b66d86e9..ef79c65f12 100644
--- a/resources/views/livewire/dashboard.blade.php
+++ b/resources/views/livewire/dashboard.blade.php
@@ -1,3 +1,4 @@
-
- Dashboard
+
+
{{ __('Dashboard') }}
+
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 95fb1eba6f..bc2d15af78 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -34,10 +34,14 @@ Route::group([
// Authenticated routes
Route::group(['middleware' => ['auth']], function () {
// Dashboard
- Route::get('/', config('filament.livewire.dashboard'))->name('dashboard');
+ Route::get('/', config('filament.livewire.dashboard'))
+ // ->middleware('verified')
+ ->name('dashboard');
// Profile
- // Route::get('profile', config('filament.livewire.profile'))->middleware('verified');
+ // Route::get('profile', config('filament.livewire.profile'))
+ // ->middleware('verified')
+ // ->name('profile');
});
});
diff --git a/src/Commands/MakeUser.php b/src/Commands/MakeUser.php
index bae96d50f9..5a454332dd 100644
--- a/src/Commands/MakeUser.php
+++ b/src/Commands/MakeUser.php
@@ -4,8 +4,9 @@ namespace Filament\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
+use Illuminate\Auth\Events\Registered;
use Filament\Traits\ConsoleValidation;
-use App\Models\User;
+use Filament\Contracts\User as UserContract;
class MakeUser extends Command
{
@@ -44,14 +45,17 @@ class MakeUser extends Command
return $this->secret('Password');
}, ['password', 'required|min:8']);
- $user = User::create([
+ $userClass = app(UserContract::class);
+ $user = $userClass::create([
'name' => $name,
'email' => $email,
'password' => Hash::make($password),
]);
+ event(new Registered($user));
$appName = config('app.name', 'Laravel');
$loginURL = route('filament.login');
+
$this->info("Success! You may now login to {$appName} at {$loginURL} with user `{$user->name}`.");
}
}
\ No newline at end of file
diff --git a/src/Http/Livewire/Auth/ForgotPassword.php b/src/Http/Livewire/Auth/ForgotPassword.php
index 2e280560e4..65f06b0ab5 100644
--- a/src/Http/Livewire/Auth/ForgotPassword.php
+++ b/src/Http/Livewire/Auth/ForgotPassword.php
@@ -7,8 +7,8 @@ use Livewire\Component;
class ForgotPassword extends Component
{
- public $email;
public $message;
+ public $email;
protected $rules = [
'email' => 'required|email',
diff --git a/src/Http/Livewire/Auth/Login.php b/src/Http/Livewire/Auth/Login.php
index 358b4b22af..f42c6d58b4 100644
--- a/src/Http/Livewire/Auth/Login.php
+++ b/src/Http/Livewire/Auth/Login.php
@@ -11,6 +11,7 @@ class Login extends Component
{
use ThrottlesLogins;
+ public $message;
public $email;
public $password;
public $remember = false;
@@ -20,6 +21,11 @@ class Login extends Component
'password' => 'required|min:8',
];
+ public function mount()
+ {
+ $this->message = session('message');
+ }
+
public function login(Request $request)
{
$data = $this->validate();
diff --git a/src/Http/Livewire/Auth/Logout.php b/src/Http/Livewire/Auth/Logout.php
new file mode 100644
index 0000000000..8e3fe4571a
--- /dev/null
+++ b/src/Http/Livewire/Auth/Logout.php
@@ -0,0 +1,28 @@
+route('filament.login');
+ }
+
+ Auth::logout();
+ session()->flash('message', __('filament::auth.loggedout'));
+ return redirect()->route('filament.login');
+ }
+
+ public function render()
+ {
+ return view('filament::livewire.auth.logout', ['label' => __('filament::auth.logout')])
+ ->layout('filament::layouts.auth');
+ }
+}
\ No newline at end of file
diff --git a/src/Http/Livewire/Auth/Register.php b/src/Http/Livewire/Auth/Register.php
index b827bafb8c..bbc9dd6eed 100644
--- a/src/Http/Livewire/Auth/Register.php
+++ b/src/Http/Livewire/Auth/Register.php
@@ -30,14 +30,17 @@ class Register extends Component
public function register()
{
$this->validate();
+
$userClass = app(UserContract::class);
$user = $userClass::create([
'name' => $this->name,
'email' => $this->email,
'password' => Hash::make($this->password),
]);
+
event(new Registered($user));
Auth::login($user);
+
return redirect()->route('filament.dashboard');
}
diff --git a/src/Http/Livewire/Dashboard.php b/src/Http/Livewire/Dashboard.php
index ca596ef020..4e0c3e4139 100644
--- a/src/Http/Livewire/Dashboard.php
+++ b/src/Http/Livewire/Dashboard.php
@@ -9,6 +9,6 @@ class Dashboard extends Component
public function render()
{
return view('filament::livewire.dashboard')
- ->layout('filament::layouts.auth');
+ ->layout('filament::layouts.auth', ['title' => __('Dashboard')]);
}
}
\ No newline at end of file
diff --git a/tests/Feature/LogoutTest.php b/tests/Feature/LogoutTest.php
new file mode 100644
index 0000000000..bae4ffcbd0
--- /dev/null
+++ b/tests/Feature/LogoutTest.php
@@ -0,0 +1,42 @@
+withoutExceptionHandling();
+ $user = User::factory()->create();
+ $this->actingAs($user)
+ ->get(route('filament.dashboard'))
+ ->assertSeeLivewire('filament-logout');
+ }
+
+ public function test_authenticated_user_can_log_out()
+ {
+ $user = User::factory()->create();
+ Livewire::actingAs($user)
+ ->test(Logout::class)
+ ->call('logout')
+ ->assertRedirect(route('filament.login'))
+ ->assertSessionHas('message', __('filament::auth.loggedout'));
+
+ $this->assertGuest();
+ }
+
+ public function test_guest_cannot_log_out()
+ {
+ Livewire::test(Logout::class)
+ ->call('logout')
+ ->assertRedirect(route('filament.login'));
+ }
+}
\ No newline at end of file