ispt4.0_laravel/app/Http/Controllers/userController.php

221 lines
6.6 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers;
use App\Models\TypeUser;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Validation\ValidationException;
use Illuminate\Http\Request;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
use Laravel\Fortify\Contracts\LogoutResponse as LogoutResponseContract;
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 EditProfile(Request $request)
{
// dd($request);
$messages = [
'user_logo.max' => 'O tamanho da imagem não deve ser maior que 70KB.',
];
$request->validate([
'user_logo' => 'image|mimes:jpeg,png,jpg,gif,svg|max:70',
'fullName' => 'required',
'email' => 'required|email|unique:users,email,' . $request->userID . ',user_id',
'phone' => 'required',
'nif' => 'required',
], $messages);
$user = User::find($request->userID);
if ($request->hasFile('user_logo')) {
$imageName = time() . '.' . $request->user_logo->extension();
// Verifica se o usuário já tem uma imagem e se é diferente da nova imagem
if ($user->user_logo && $user->user_logo != $imageName) {
// Constrói o caminho completo para o arquivo de imagem existente
$existingImagePath = public_path('user_logos/' . $user->user_logo);
// Verifica se o arquivo de imagem existente realmente existe no sistema de arquivos
if (File::exists($existingImagePath)) {
// Exclui o arquivo de imagem existente
File::delete($existingImagePath);
}
}
// Move o novo arquivo de imagem para o diretório
$request->user_logo->move(public_path('user_logos'), $imageName);
// Atualiza o campo user_logo do usuário com o nome do novo arquivo de imagem
$user->user_logo = $imageName;
}
$user->user_name = $request->fullName;
$user->email = $request->email;
$user->user_phone = $request->phone;
$user->user_nif = $request->nif;
$user->save();
return back()->with('success', "Perfil actualizado com sucesso!");
}
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)
{
$request->validate([
Fortify::username() => 'required|string',
'password' => 'required|string',
]);
$user = User::where('email', $request->email)->first();
if ($user && Hash::check($request->password, $user->password)) {
return $user;
}
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 listCompanies()
{
$users = User::with('userType')->where('type_users', '=', 3)->get();
return view('Admin.CrudUsers.listCompany', compact('users'));
}
//Busca Todos os Utilizador Exeto as 'Empresas'
public function listUsers()
{
$users = User::with('userType')->where('type_users', '<>', 3)->get();
return view('Admin.CrudUsers.listUsers', compact('users'));
}
public function show($id)
{
$user = User::findOrFail($id);
return view('Admin.CrudUsers.showUsers', compact('user'));
}
public function edit($id)
{
$user = User::findOrFail($id);
return view('Admin.CrudUsers.editUsers', compact('user'));
}
public function update(Request $request, User $user)
{
// dump($request);
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id',
'password' => 'nullable|min:8|confirmed',
'user_type' => 'required',
'user_phone' => 'required',
'user_nif' => 'required',
]);
$user->update([
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
'user_type' => $request->get('user_type'),
'user_phone' => $request->get('user_phone'),
'user_nif' => $request->get('user_nif'),
]);
$user->save();
return redirect('/users/listUsers')->with('success', 'Utilizador atualizado com Sucesso!!');
}
public function create()
{
return view('users.create');
}
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'user_type' => 'required',
'user_phone' => 'required',
'user_nif' => 'required',
]);
$user = new User([
'name' => $request->get('name'),
'email' => $request->get('email'),
'password' => Hash::make($request->get('password')),
'user_type' => $request->get('user_type'),
'user_phone' => $request->get('user_phone'),
'user_nif' => $request->get('user_nif'),
]);
$user->save();
return redirect('/users')->with('success', 'User created successfully!');
}
public function destroy(User $user)
{
$user->delete();
return redirect('/users/listUsers')->with('success', 'User deleted successfully!');
}
}