feat: implementar sistema de autenticação e gerenciamento de usuários
- Adicionar CreateUserController para criação de usuários com validação - Implementar LogoutController para logout seguro com invalidação de sessão - Atualizar UserController para dashboard com listagem de usuários - Configurar modelo User com campos fillable e cast para permissions - Criar UserService para lógica de negócio de criação de usuários - Implementar Gate de autorização no AppServiceProvider
This commit is contained in:
parent
62d779bde1
commit
595b06d012
|
|
@ -20,7 +20,11 @@ public function createUsers(Request $request): RedirectResponse
|
||||||
'password' => 'required|string|min:8',
|
'password' => 'required|string|min:8',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user = $this->userService->createUser($validated);
|
try {
|
||||||
return redirect()->route('users.view', ['user' => $user]);
|
$user = $this->userService->createUser($validated);
|
||||||
|
return redirect()->route('users.view', ['user' => $user], 200)->with('message', 'Usuário cadastrado com sucesso!');
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return redirect()->route('users.create', status: 403)->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,17 @@
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
class LogoutController extends Controller
|
class LogoutController extends Controller
|
||||||
{
|
{
|
||||||
public function logout(User $user){
|
public function logout(Request $request)
|
||||||
$user->tokens()->delete();
|
{
|
||||||
|
Auth::logout();
|
||||||
|
|
||||||
|
$request->session()->invalidate();
|
||||||
|
$request->session()->regenerateToken();
|
||||||
|
|
||||||
|
return redirect('/')->with('success', 'Logout efetuado com sucesso!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,7 @@ class UserController extends Controller
|
||||||
public function __construct(UserService $userService) {}
|
public function __construct(UserService $userService) {}
|
||||||
public function dashboard(Request $request): View
|
public function dashboard(Request $request): View
|
||||||
{
|
{
|
||||||
|
|
||||||
$users = User::all();
|
$users = User::all();
|
||||||
$users->tokens()->delete();
|
|
||||||
return view('dashboard', ['users' => $users]);
|
return view('dashboard', ['users' => $users]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ protected function casts(): array
|
||||||
return [
|
return [
|
||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
'password' => 'hashed',
|
'password' => 'hashed',
|
||||||
|
'permissions' => 'array'
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@
|
||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Gate;
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
@ -19,6 +22,8 @@ public function register(): void
|
||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
//
|
Gate::define('createUser', function (User $user) {
|
||||||
|
return $user->permissions;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,14 @@
|
||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Illuminate\Support\Facades\Gate;
|
||||||
|
|
||||||
class UserService
|
class UserService
|
||||||
{
|
{
|
||||||
|
|
||||||
public function __construct(protected User $user) {}
|
public function __construct(protected User $user) {}
|
||||||
|
|
||||||
public function createUser(array $user)
|
public function createUser(array $user)
|
||||||
{
|
{
|
||||||
|
|
||||||
return User::create($user);
|
return User::create($user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue