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',
|
||||
]);
|
||||
|
||||
$user = $this->userService->createUser($validated);
|
||||
return redirect()->route('users.view', ['user' => $user]);
|
||||
try {
|
||||
$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 Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class LogoutController extends Controller
|
||||
{
|
||||
public function logout(User $user){
|
||||
$user->tokens()->delete();
|
||||
public function logout(Request $request)
|
||||
{
|
||||
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 dashboard(Request $request): View
|
||||
{
|
||||
|
||||
$users = User::all();
|
||||
$users->tokens()->delete();
|
||||
return view('dashboard', ['users' => $users]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ protected function casts(): array
|
|||
return [
|
||||
'email_verified_at' => 'datetime',
|
||||
'password' => 'hashed',
|
||||
'permissions' => 'array'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@
|
|||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
|
|
@ -19,6 +22,8 @@ public function register(): void
|
|||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
Gate::define('createUser', function (User $user) {
|
||||
return $user->permissions;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,15 +3,14 @@
|
|||
namespace App\Services;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class UserService
|
||||
{
|
||||
|
||||
public function __construct(protected User $user) {}
|
||||
|
||||
public function createUser(array $user)
|
||||
{
|
||||
|
||||
return User::create($user);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue