Compare commits
No commits in common. "31ff82b3aff26ee755336daac9dc181f4f0107d1" and "6835fdfddd5a7b81e0a945dfc4a890fa2e575203" have entirely different histories.
31ff82b3af
...
6835fdfddd
|
|
@ -1,10 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class AddClientController extends Controller
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
@ -20,11 +20,7 @@ public function createUsers(Request $request): RedirectResponse
|
||||||
'password' => 'required|string|min:8',
|
'password' => 'required|string|min:8',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
try {
|
|
||||||
$user = $this->userService->createUser($validated);
|
$user = $this->userService->createUser($validated);
|
||||||
return redirect()->route('users.view', ['user' => $user], 200)->with('message', 'Usuário cadastrado com sucesso!');
|
return redirect()->route('users.view', ['user' => $user]);
|
||||||
} catch (\Exception $e) {
|
|
||||||
return redirect()->route('users.create', status: 403)->with('error', $e->getMessage());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,9 @@
|
||||||
|
|
||||||
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(Request $request)
|
public function logout(User $user){
|
||||||
{
|
$user->tokens()->delete();
|
||||||
Auth::logout();
|
|
||||||
|
|
||||||
$request->session()->invalidate();
|
|
||||||
$request->session()->regenerateToken();
|
|
||||||
|
|
||||||
return redirect('/')->with('success', 'Logout efetuado com sucesso!');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ 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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Middleware;
|
|
||||||
|
|
||||||
use Closure;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Gate;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
|
|
||||||
class Authorization
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Handle an incoming request.
|
|
||||||
*
|
|
||||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
|
||||||
*/
|
|
||||||
public function handle(Request $request, Closure $next): Response
|
|
||||||
{
|
|
||||||
if (Gate::denies('createUser')) {
|
|
||||||
return redirect()->route('users.create')->with('error', 'Você não possui permissão para executar essa ação.');
|
|
||||||
}
|
|
||||||
return $next($request);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -44,7 +44,6 @@ protected function casts(): array
|
||||||
return [
|
return [
|
||||||
'email_verified_at' => 'datetime',
|
'email_verified_at' => 'datetime',
|
||||||
'password' => 'hashed',
|
'password' => 'hashed',
|
||||||
'permissions' => 'array'
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,8 @@
|
||||||
|
|
||||||
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
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
@ -22,8 +19,6 @@ public function register(): void
|
||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
Gate::define('createUser', function (User $user) {
|
//
|
||||||
return $user->permissions;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,15 @@
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ public function up(): void
|
||||||
Schema::create('users', function (Blueprint $table) {
|
Schema::create('users', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->json('permissions')->nullable();
|
|
||||||
$table->string('email')->unique();
|
$table->string('email')->unique();
|
||||||
$table->timestamp('email_verified_at')->nullable();
|
$table->timestamp('email_verified_at')->nullable();
|
||||||
$table->string('password');
|
$table->string('password');
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,10 @@ class DatabaseSeeder extends Seeder
|
||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
|
// User::factory(10)->create();
|
||||||
|
|
||||||
User::factory()->create([
|
User::factory()->create([
|
||||||
'name' => 'admin',
|
'name' => 'admin',
|
||||||
'permissions' => ['admin'],
|
|
||||||
'email' => 'inglinesystemsadmin@inglinesystems.com.br',
|
'email' => 'inglinesystemsadmin@inglinesystems.com.br',
|
||||||
'password' => Hash::make('*Ingline.Sys#9420%SECURITY#')
|
'password' => Hash::make('*Ingline.Sys#9420%SECURITY#')
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -32,13 +32,15 @@ @layer components {
|
||||||
@apply border-b border-white shadow-md shadow-blue-400;
|
@apply border-b border-white shadow-md shadow-blue-400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar a:hover,
|
|
||||||
.nav-bar a {
|
.nav-bar a {
|
||||||
@apply transition-all duration-300 transform hover:scale-105;
|
|
||||||
@apply mr-7;
|
@apply mr-7;
|
||||||
@apply hover:border hover:shadow-md shadow-blue-400 border-blue-300 rounded-md p-1 transition-all duration-250 transform hover:scale-105;
|
@apply hover:border hover:shadow-md shadow-blue-400 border-blue-300 rounded-md p-1 transition-all duration-250 transform hover:scale-105;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-bar a:hover {
|
||||||
|
@apply text-blue-400 transition-all duration-300 transform hover:scale-105;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-bar-logo {
|
.nav-bar-logo {
|
||||||
@apply absolute left-0;
|
@apply absolute left-0;
|
||||||
/* Garantir que o container da logo seja posicionado corretamente */
|
/* Garantir que o container da logo seja posicionado corretamente */
|
||||||
|
|
@ -55,16 +57,11 @@ @layer components {
|
||||||
/* Mantém a proporção original da imagem */
|
/* Mantém a proporção original da imagem */
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-bar>form>button {
|
|
||||||
@apply mr-7;
|
|
||||||
@apply hover:border hover:shadow-md hover:scale-105 hover:cursor-pointer shadow-blue-400 border-blue-300 rounded-md p-1 transition-all duration-250 transform;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*End Header - Navbar */
|
/*End Header - Navbar */
|
||||||
|
|
||||||
/* Container */
|
/* Container */
|
||||||
.container-title {
|
.container-title {
|
||||||
@apply text-2xl absolute top-20;
|
@apply text-2xl absolute top-20 ;
|
||||||
@apply text-black font-semibold;
|
@apply text-black font-semibold;
|
||||||
@apply border-b border-blue-500 rounded-md shadow-md shadow-blue-400;
|
@apply border-b border-blue-500 rounded-md shadow-md shadow-blue-400;
|
||||||
@apply p-4 transition-all duration-300 transform hover:scale-105;
|
@apply p-4 transition-all duration-300 transform hover:scale-105;
|
||||||
|
|
@ -74,16 +71,16 @@ @layer components {
|
||||||
@apply flex flex-col justify-center items-center w-full h-full mx-auto px-4 sm:px-6 lg:px-8;
|
@apply flex flex-col justify-center items-center w-full h-full mx-auto px-4 sm:px-6 lg:px-8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-class {
|
form {
|
||||||
@apply flex flex-col gap-4;
|
@apply flex flex-col gap-4;
|
||||||
@apply mb-10;
|
@apply mb-10;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-input-class {
|
form input {
|
||||||
@apply border border-gray-300 rounded-md p-2 outline-none;
|
@apply border border-gray-300 rounded-md p-2 outline-none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-button-class {
|
form button {
|
||||||
@apply bg-blue-500 text-white rounded-md p-2 cursor-pointer hover:bg-blue-800;
|
@apply bg-blue-500 text-white rounded-md p-2 cursor-pointer hover:bg-blue-800;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,20 +21,13 @@
|
||||||
|
|
||||||
@auth
|
@auth
|
||||||
<a href="{{ route('dashboard') }}">Início</a>
|
<a href="{{ route('dashboard') }}">Início</a>
|
||||||
<form action="{{ route('logout') }}" method="post">
|
<a href="{{ route('login') }}">Login</a>
|
||||||
@csrf
|
|
||||||
<button type="submit">
|
|
||||||
Logout
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
@endauth
|
@endauth
|
||||||
|
|
||||||
@guest
|
@guest
|
||||||
<a href="{{ route('users.create') }}">Início</a>
|
<a href="{{ route('users.create') }}">Início</a>
|
||||||
<a href="{{ route('login') }}">Contato</a>
|
<a href="{{ route('login') }}">Contato</a>
|
||||||
<a href="{{ route('users.create') }}">Sobre</a>
|
<a href="{{ route('users.create') }}">Sobre</a>
|
||||||
@endguest
|
@endguest
|
||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,18 @@
|
||||||
@extends('layouts.app')
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', 'Create Users')
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>Bem vindo a página de criação dos usuários, <span style="background-color:rgb(89, 255, 255); border-radius: 0.3em; padding: 0.2em">{{Auth::user()->name}}!</span></h1>
|
<h1>Create Users</h1>
|
||||||
|
<form action="{{ route('users.create') }}" method="POST">
|
||||||
<form action="{{ route('users.create') }}" method="POST" class="form-class">
|
|
||||||
@csrf
|
@csrf
|
||||||
<input type="text" name="name" placeholder="Nome do usuário" class="form-input-class">
|
<input type="text" name="name" placeholder="Name">
|
||||||
<input type="email" name="email" placeholder="Email do usuário" class="form-input-class">
|
<input type="email" name="email" placeholder="Email">
|
||||||
<input type="password" name="password" placeholder="8 a 20 caracteres" class="form-input-class">
|
<input type="password" name="password" placeholder="Password">
|
||||||
<button type="submit" class="form-button-class">Criar usuário</button>
|
<button type="submit">Create User</button>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -10,29 +10,17 @@
|
||||||
|
|
||||||
|
|
||||||
Route::middleware(['auth:sanctum'])->group(function () {
|
Route::middleware(['auth:sanctum'])->group(function () {
|
||||||
//Rotas LinePBX.
|
Route::get('/dashboard', [UserController::class, 'dashboard'])->name('dashboard');
|
||||||
});
|
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function () {
|
|
||||||
|
|
||||||
Route::controller(UserController::class)->group(function () {
|
|
||||||
Route::get('/dashboard', 'dashboard')->name('dashboard');
|
|
||||||
Route::post('/create-users', 'createUsers')->name('users.create')->middleware('authorization');
|
|
||||||
});
|
|
||||||
|
|
||||||
Route::controller(LogoutController::class)->group(function () {
|
|
||||||
Route::post('/logout', [LogoutController::class, 'logout'])->name('logout');
|
|
||||||
});
|
|
||||||
|
|
||||||
Route::get('/create-users', function () {
|
Route::get('/create-users', function () {
|
||||||
return view('users.create-users');
|
return view('users.create-users');
|
||||||
})->name('users.create')->middleware('authorization');
|
})->name('users.create');
|
||||||
|
|
||||||
|
Route::post('/create-users', [CreateUserController::class, 'createUsers'])->name('users.create');
|
||||||
|
Route::post('/logout', [LogoutController::class, 'logout'])->name('logout');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::get('/login', function () {
|
||||||
Route::controller(LoginController::class)->group(function () {
|
|
||||||
Route::get('/login', function () {
|
|
||||||
return view('login');
|
return view('login');
|
||||||
})->name('login');
|
})->name('login');
|
||||||
Route::post('/login', [LoginController::class, 'login'])->name('login-post');
|
|
||||||
});
|
Route::post('/login', [LoginController::class, 'login'])->name('login-post');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue