Files
lelong/app/Http/Controllers/UserController.php
T
ismailmasseran e29a5891c8 Bugfix/list clickup issue (#5)
Reviewed-on: #5
Co-authored-by: ISMAIL MASSERAN <ismail@koppkb.com>
Co-committed-by: ISMAIL MASSERAN <ismail@koppkb.com>
2026-10-19 13:30:36 +08:00

173 lines
4.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Mail\ResetPassword;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
class UserController extends Controller
{
/**
* Register user
*
* @param request
* @return response
*/
public function register(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'password' => 'required|min:6',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
}
/**
* Login page
*
* @param NA
* @return view
*/
public function login()
{
return view('auth.login');
}
/**
* User Login
*
* @param request
* @return response
*/
public function loginValidate(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6',
]);
$user = User::where('email', $request->email)->first();
if ($user) {
if (Hash::check($request->password, $user->password)) {
return back()->with('success', 'Success! You are logged in');
}
return back()->with('failed', 'Failed! Invalid password');
}
return back()->with('failed', 'Failed! Invalid email');
}
/**
* Forgot password
*
* @param NA
* @return view
*/
public function forgotPassword()
{
return view('auth.forgot-password');
}
/**
* Validate token for forgot password
*
* @param token
* @return view
*/
public function forgotPasswordValidate($token)
{
$user = User::where('token', $token)->where('is_verified', 0)->first();
// dd($user);
if ($user) {
$email = $user->email;
return view('auth.change-password', compact('email'));
}
return redirect()->route('forgot-password')->with('failed', 'Password reset link is expired');
}
/**
* Reset password
*
* @param request
* @return response
*/
public function resetPassword(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
]);
$user = User::where('email', $request->email)->first();
// dd($user);
if (! $user) {
return back()->with('failed', 'Gagal! Alamat Ini Belum Didaftarkan.');
}
$token = Str::random(60);
$user['token'] = $token;
$user['is_verified'] = 0;
$user->save();
$resetUrl = url('/forgot-password/'.$token);
Mail::to($request->email)->send(new ResetPassword($user->name, $resetUrl));
if (Mail::failures() != 0) {
return back()->with('success', 'Berjaya DiHantar! Pautan Lupa Katalaluan Telah Dihantarkan Kepada Alamat Emel Anda.');
}
return back()->with('failed', 'Failed! there is some issue with email provider');
}
/**
* Change password
*
* @param request
* @return response
*/
public function updatePassword(Request $request)
{
$this->validate($request, [
'email' => 'required',
'password' => 'required|min:6',
'confirm_password' => 'required|same:password',
]);
$user = User::where('email', $request->email)->first();
if ($user) {
$user['is_verified'] = 0;
$user['token'] = '';
$user['password'] = Hash::make($request->password);
$user->save();
// dd($user->user_type);
if ($user->user_type == 2) {
return redirect()->to(config('app.app_pembida'));
}
return redirect()->route('login')->with('success', 'Berjaya! Katalaluan Anda Telah Didaftarkan.');
}
return redirect()->route('forgot-password')->with('failed', 'Gadal! Sila Cuba Lagi...');
}
public function termasyarat()
{
return view('auth.termasyarat');
}
}