From 44e0a3f3732cfea98c085b8f9bb2a22bf859abaa Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Sun, 14 May 2023 19:09:36 +0100 Subject: [PATCH] changing fortify routes to work better with email and adding excel template for future implementation of equipment in DB. --- .../CustomRegistrationController.php | 62 ++++++++ .../Controllers/Pending_UserController.php | 14 +- app/Http/Controllers/userController.php | 38 ++++- app/Http/Middleware/CheckSuperAdmin.php | 2 +- app/Mail/NewUserNotification.php | 59 +++++++ app/Models/TypeUser.php | 16 ++ app/Models/User.php | 12 +- app/Providers/FortifyServiceProvider.php | 7 + config/fortify.php | 2 +- public/templateExcel/FinalTemplate .xlsx | Bin 0 -> 58308 bytes .../views/Admin/CrudUsers/editUsers.blade.php | 2 +- .../views/Admin/CrudUsers/showUsers.blade.php | 8 + resources/views/Admin/profile.blade.php | 149 ++++++++++-------- .../views/Templates/templateAdmin.blade.php | 13 +- resources/views/auth/login.blade.php | 2 + resources/views/email/email.blade.php | 2 +- .../email/new_user_notification.blade.php | 12 ++ resources/views/email/pendingUsers.blade.php | 18 ++- routes/web.php | 89 ++++++----- 19 files changed, 375 insertions(+), 132 deletions(-) create mode 100644 app/Http/Controllers/CustomRegistrationController.php create mode 100644 app/Mail/NewUserNotification.php create mode 100644 app/Models/TypeUser.php create mode 100644 public/templateExcel/FinalTemplate .xlsx create mode 100644 resources/views/email/new_user_notification.blade.php diff --git a/app/Http/Controllers/CustomRegistrationController.php b/app/Http/Controllers/CustomRegistrationController.php new file mode 100644 index 00000000..b4a5c4f0 --- /dev/null +++ b/app/Http/Controllers/CustomRegistrationController.php @@ -0,0 +1,62 @@ +create($request->all()); + + event(new Registered($user)); + // Chame sendEmailVerificationNotification para enviar o e-mail de verificação + $user->sendEmailVerificationNotification(); + + // // Auth::login($user); + + $pendingUser = pending_user::where('pending_email', $user->email)->first(); + if ($pendingUser) { + $pendingUser->delete(); + } + + return $request->wantsJson() + ? new JsonResponse([], 201) + : Redirect::to('/CreateUsers')->with('success', 'Usuário criado com sucesso, aguarda confirmacao por Email!!'); + } + + + public function yourVerificationMethod(Request $request, $id, $hash) + { + $user = User::findOrFail($id); + + if (!hash_equals((string) $hash, sha1($user->getEmailForVerification()))) { + abort(403, 'Unauthorized action.'); + } + + if ($user->markEmailAsVerified()) { + event(new Verified($user)); + } + + // Redirecione para a rota desejada após a verificação bem-sucedida + return redirect()->route('CreateUsers')->with('message', 'E-mail verificado com sucesso!'); + } +} diff --git a/app/Http/Controllers/Pending_UserController.php b/app/Http/Controllers/Pending_UserController.php index a9f80d9e..5366d2cf 100644 --- a/app/Http/Controllers/Pending_UserController.php +++ b/app/Http/Controllers/Pending_UserController.php @@ -6,7 +6,11 @@ use Illuminate\Support\Facades\Hash; +use App\Mail\NewUserNotification; +use Illuminate\Support\Facades\Mail; + use App\Models\pending_user; +use App\Models\User; class Pending_UserController extends Controller { @@ -28,7 +32,7 @@ public function store(Request $request) $request->validate([ 'name' => 'required', 'lastName' => 'required', - 'pending_email' => 'required|email|unique:pending_users,pending_email', + 'pending_email' => 'required|email|unique:pending_users,pending_email|unique:users,email', 'pending_phone' => 'required', 'pending_nif' => 'required', 'pending_password' => 'required|min:8|confirmed', @@ -46,6 +50,14 @@ public function store(Request $request) $pendingUser->save(); + // Enviar email de notificação para todos os Super_Administrador + $superAdmins = User::where('user_type', 'Super_Administrador')->get(); + $newUserNotification = new NewUserNotification(); + + foreach ($superAdmins as $superAdmin) { + Mail::to($superAdmin->email)->send($newUserNotification); + } + return redirect('/formulario')->with('success', 'O seu registro foi enviado e aguarda aprovação.'); } diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php index 33ee45e6..55e5c3fd 100644 --- a/app/Http/Controllers/userController.php +++ b/app/Http/Controllers/userController.php @@ -3,6 +3,9 @@ namespace App\Http\Controllers; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Auth; + +use Illuminate\Validation\ValidationException; use Illuminate\Http\Request; @@ -11,17 +14,33 @@ use Laravel\Fortify\Fortify; use Laravel\Fortify\Http\Controllers\AuthenticatedSessionController as FortifyAuthenticatedSessionController; - +use Illuminate\Auth\Events\Verified; use App\Models\User; class userController extends Controller { - public function UserProfile (){ - return view('Admin.profile'); + public function UserProfile($id) + { + $user = User::find($id); + return view('Admin.profile', compact('user')); } + public function yourVerificationMethod(Request $request, $id, $hash) + { + $user = User::findOrFail($id); + if (!hash_equals((string) $hash, sha1($user->getEmailForVerification()))) { + abort(403, 'Unauthorized action.'); + } + + if ($user->markEmailAsVerified()) { + event(new Verified($user)); + } + + // Redirecione para a rota desejada após a verificação bem-sucedida + return redirect()->route('CreateUsers')->with('message', 'E-mail verificado com sucesso!'); + } public function authenticate(Request $request) @@ -40,6 +59,19 @@ public function authenticate(Request $request) return null; } + public static function authenticateAndRedirect(Request $request) + { + $user = User::where('email', $request->email)->first(); + + if ($user && Hash::check($request->password, $user->password)) { + Auth::login($user); + + return redirect()->route('CreateUsers'); + } + + return null; + } + public function ListUsers() { diff --git a/app/Http/Middleware/CheckSuperAdmin.php b/app/Http/Middleware/CheckSuperAdmin.php index f4ca6c6f..6ec668cd 100644 --- a/app/Http/Middleware/CheckSuperAdmin.php +++ b/app/Http/Middleware/CheckSuperAdmin.php @@ -15,7 +15,7 @@ class CheckSuperAdmin */ public function handle(Request $request, Closure $next): Response { - if (auth()->user() && auth()->user()->user_type == 'Super_Administrador') { + if (auth()->user() && auth()->user()->userType->type == 'Super_Administrador') { return $next($request); } diff --git a/app/Mail/NewUserNotification.php b/app/Mail/NewUserNotification.php new file mode 100644 index 00000000..359407eb --- /dev/null +++ b/app/Mail/NewUserNotification.php @@ -0,0 +1,59 @@ +subject('Um novo usuário para criar') + ->view('emails.new_user_notification'); + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'New User Notification', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'email.new_user_notification', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Models/TypeUser.php b/app/Models/TypeUser.php new file mode 100644 index 00000000..2e84a017 --- /dev/null +++ b/app/Models/TypeUser.php @@ -0,0 +1,16 @@ +hasMany(User::class, 'user_type', 'id'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 841f278f..d1f7cec1 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -9,10 +9,11 @@ use Laravel\Sanctum\HasApiTokens; -use Illuminate\Contracts\Auth\MustVerifyEmail; +// use Illuminate\Contracts\Auth\MustVerifyEmail; -class User extends Authenticatable implements MustVerifyEmail +class User extends Authenticatable +// implements MustVerifyEmail { use HasApiTokens, HasFactory, Notifiable; @@ -28,7 +29,7 @@ class User extends Authenticatable implements MustVerifyEmail 'user_type', 'user_phone', 'user_nif' - + ]; /** @@ -49,4 +50,9 @@ class User extends Authenticatable implements MustVerifyEmail protected $casts = [ 'email_verified_at' => 'datetime', ]; + + public function userType() + { + return $this->belongsTo(TypeUser::class, 'user_type', 'id'); + } } diff --git a/app/Providers/FortifyServiceProvider.php b/app/Providers/FortifyServiceProvider.php index 33ebf55d..3593a280 100644 --- a/app/Providers/FortifyServiceProvider.php +++ b/app/Providers/FortifyServiceProvider.php @@ -16,6 +16,8 @@ use App\Http\Controllers\Auth\ResetPasswordController; use App\Http\Controllers\Auth\PasswordResetLinkController; +// use App\http\Controllers\userController; + use Laravel\Fortify\Fortify; @@ -49,7 +51,12 @@ public function boot(): void return view('auth.verify-email'); }); + // Fortify::authenticateUsing(function (Request $request) { + // return UserController::authenticateAndRedirect($request); + // }); + + Fortify::createUsersUsing(CreateNewUser::class); Fortify::updateUserProfileInformationUsing(UpdateUserProfileInformation::class); diff --git a/config/fortify.php b/config/fortify.php index 39f0153c..ab302869 100644 --- a/config/fortify.php +++ b/config/fortify.php @@ -135,7 +135,7 @@ 'features' => [ Features::registration(), Features::resetPasswords(), - Features::emailVerification(), + // Features::emailVerification(), // Features::updateProfileInformation(), // Features::updatePasswords(), diff --git a/public/templateExcel/FinalTemplate .xlsx b/public/templateExcel/FinalTemplate .xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3c98c11129662f5370e44de0db07705adf65fe53 GIT binary patch literal 58308 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 literal 0 HcmV?d00001 diff --git a/resources/views/Admin/CrudUsers/editUsers.blade.php b/resources/views/Admin/CrudUsers/editUsers.blade.php index 3f3610c8..6ae61e4b 100644 --- a/resources/views/Admin/CrudUsers/editUsers.blade.php +++ b/resources/views/Admin/CrudUsers/editUsers.blade.php @@ -32,7 +32,7 @@ --}} - +

diff --git a/resources/views/Admin/CrudUsers/showUsers.blade.php b/resources/views/Admin/CrudUsers/showUsers.blade.php index de6d2e6e..8cfb32f6 100644 --- a/resources/views/Admin/CrudUsers/showUsers.blade.php +++ b/resources/views/Admin/CrudUsers/showUsers.blade.php @@ -28,6 +28,14 @@ Tipo de usuário {{ $user->user_type }} + + Telemovel + {{ $user->user_phone }} + + + NIF + {{ $user->user_nif }} + Criado em : {{ $user->created_at }} diff --git a/resources/views/Admin/profile.blade.php b/resources/views/Admin/profile.blade.php index 8d6ff1f7..70680c31 100644 --- a/resources/views/Admin/profile.blade.php +++ b/resources/views/Admin/profile.blade.php @@ -1,28 +1,28 @@ @extends('Templates/templateAdmin') @section('Main-content') - -
+
-
-
-
- -
+
+
+
+ +

+
-
-
-
-
+
+
+
+
-
+
-
-
- {{--

{{ $tipo_usuario }}

--}} +
+
{{$user->userType->type }} :: {{$user->name}}
+
-
-
-
-

Nome:

-
- -
-

Email:

-
-
- -
-
-

Telemovel:

-
- -
-

NIF:

-
-
- -
-
- {{--

Nova Senha:

--}} -
- - -
- +
+ {{--

{{ $tipo_usuario }}

--}}
-
- +
+
+
+

Nome:

+
+ +
+

Email:

+
+
+ +
+
+

Telemovel:

+
+ +
+

NIF:

+
+
+ + {{--
+
+

Senha :

+
+ +
+

Confirmar Senha :

+
+
--}} + +
+
+ {{--

Nova Senha:

--}} +
+
-
- + +
+ + +
- - -
- {{-- ./container-fluid" --}} -
- {{-- ./content --}} + + + +
+ {{-- ./container-fluid" --}} + + {{-- ./content --}}
{{-- ./content-wrapper --}} @endsection diff --git a/resources/views/Templates/templateAdmin.blade.php b/resources/views/Templates/templateAdmin.blade.php index 32e67cb7..5402ca85 100644 --- a/resources/views/Templates/templateAdmin.blade.php +++ b/resources/views/Templates/templateAdmin.blade.php @@ -86,8 +86,10 @@ class="fas fa-bars">
@@ -125,12 +127,7 @@ class="fas fa-bars"> - {{-- --}} + diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 7bd6741d..30ba4281 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -38,6 +38,7 @@
+ {{-- --}}
@@ -52,6 +53,7 @@
+
diff --git a/resources/views/email/email.blade.php b/resources/views/email/email.blade.php index aec1feec..f25bb027 100644 --- a/resources/views/email/email.blade.php +++ b/resources/views/email/email.blade.php @@ -8,7 +8,7 @@

Olá!

Segue abaixo o link para acessar o formulário:

- Acessar Formulário + Acessar Formulário

Se você não solicitou este e-mail, por favor, desconsidere.

diff --git a/resources/views/email/new_user_notification.blade.php b/resources/views/email/new_user_notification.blade.php new file mode 100644 index 00000000..51077bde --- /dev/null +++ b/resources/views/email/new_user_notification.blade.php @@ -0,0 +1,12 @@ + + + + + + Um novo usuário para criar + + +

Olá,

+

Um novo usuário foi registrado e está aguardando aprovação.

+ + \ No newline at end of file diff --git a/resources/views/email/pendingUsers.blade.php b/resources/views/email/pendingUsers.blade.php index 265d1aa8..53335edf 100644 --- a/resources/views/email/pendingUsers.blade.php +++ b/resources/views/email/pendingUsers.blade.php @@ -2,6 +2,12 @@ @section('Main-content')

+ @if (session('status')) + + @endif +

Enviar Formulário:

@@ -13,13 +19,13 @@
- - +

Email + +

-
- - +
+
@@ -37,7 +43,7 @@ - + diff --git a/routes/web.php b/routes/web.php index 6d27c807..859ccd57 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,10 +19,31 @@ use App\Http\Controllers\userController; use App\Http\Controllers\Pending_UserController; - - use App\Http\Controllers\Auth\RegisteredUserController; +use App\Http\Controllers\CustomRegistrationController; + + + +Route::get('/download-template', function () { + $filePath = public_path('templateExcel/FinalTemplate .xlsx'); + $fileName = 'FinalTemplate .xlsx'; + + return response()->download($filePath, $fileName); +}); + + + +Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register'); + +Route::get('/your-verification-route/{id}/{hash}', [UserController::class, 'yourVerificationMethod']) + ->middleware(['auth', 'signed', 'throttle:6,1']) + ->name('verification.verify'); + + +Route::get('/receiveThisShit', function () { + return redirect()->route('test'); +})->name('verification.notice'); /* @@ -45,17 +66,7 @@ return view('Admin/index'); })->name('home'); - // Route::get('/', function () { - // return view('Admin/index'); - // })->name('home'); - // Route::get('formulario', function () { - // return view('email/formAdmin'); - // })->name('formulario'); - - - - /* |-------------------------------------------------------------------------- | Create Users with Super Admin @@ -66,19 +77,8 @@ | be assigned to the "web" middleware group. Make something great! | */ - }); -// Route::get('formulario', function () { -// return view('email/FormAdmin'); -// })->name('formulario'); - - -// Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser'); - - - - /* |-------------------------------------------------------------------------- | User_Type (Super_Administrador) @@ -88,16 +88,7 @@ | */ Route::middleware(['auth', 'verified', 'checksuperadmin'])->group(function () { - - - - // Rotas protegidas que exigem verificação de e-mail e user_type Super_Admin - // Route::get('/register', [RegisteredUserController::class, 'create']) - // ->name('register'); - // Route::post('/register', [RegisteredUserController::class, 'store']); - - - Route::get('usersProfiles', [userController::class, 'UserProfile'])->name('usersProfiles'); + Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles'); Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario'); /* @@ -127,21 +118,21 @@ */ Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers'); - Route::get('/CreateUsers/{id}',[Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser'); + Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser'); Route::get('formulario', function () { return view('email/FormAdmin'); })->name('formulario'); Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser'); - - - }); - + // Rotas protegidas que exigem verificação de e-mail e user_type Super_Admin + // Route::get('/register', [RegisteredUserController::class, 'create']) + // ->name('register'); + // Route::post('/register', [RegisteredUserController::class, 'store']) // Route::get('/test-email', function () { @@ -157,4 +148,24 @@ // } else { // return 'Failed to send email'; // } -// }); \ No newline at end of file +// }); + +// Route::get('formulario', function () { +// return view('email/FormAdmin'); +// })->name('formulario'); + + +// Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser'); + + + // Route::get('/', function () { + // return view('Admin/index'); + // })->name('home'); + + // Route::get('formulario', function () { + // return view('email/formAdmin'); + // })->name('formulario'); + + // Route::get('/email/notice', function (EmailVerificationRequest $request) { +// return view('auth.verify-email'); +// })->middleware(['auth'])->name('verification.notice');
NumeroId Nome Email Verificar