first commit

This commit is contained in:
2026-05-14 09:08:09 +08:00
commit 919b86c8ec
111 changed files with 14085 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
public function create()
{
return view('auth.forgot-password');
}
public function store(Request $request)
{
$request->validate(['email' => ['required', 'email']]);
$status = Password::sendResetLink($request->only('email'));
return $status === Password::RESET_LINK_SENT
? back()->with('success', __($status))
: back()->withErrors(['email' => __($status)]);
}
}

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller
{
public function create()
{
return view('auth.login');
}
public function store(Request $request)
{
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
]);
if (Auth::attempt($credentials, $request->boolean('remember'))) {
$request->session()->regenerate();
$request->user()->update(['last_login_at' => now()]);
activity('auth')->causedBy($request->user())->withProperties([
'ip_address' => $request->ip(),
'browser' => $request->userAgent(),
])->log('Login User');
return redirect()->intended(route('dashboard'));
}
return back()->withErrors(['email' => 'Maklumat log masuk tidak sah.'])->onlyInput('email');
}
public function destroy(Request $request)
{
$user = $request->user();
activity('auth')->causedBy($user)->log('Logout User');
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect()->route('login');
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class PasswordController extends Controller
{
public function edit()
{
return view('auth.change-password');
}
public function update(Request $request)
{
$validated = $request->validate([
'current_password' => ['required', 'current_password'],
'password' => ['required', 'confirmed', 'min:8'],
]);
$request->user()->update(['password' => Hash::make($validated['password'])]);
return back()->with('success', 'Kata laluan berjaya dikemaskini.');
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
class ResetPasswordController extends Controller
{
public function create(Request $request, string $token)
{
return view('auth.reset-password', ['token' => $token, 'email' => $request->email]);
}
public function store(Request $request)
{
$request->validate([
'token' => ['required'],
'email' => ['required', 'email'],
'password' => ['required', 'confirmed', 'min:8'],
]);
$status = Password::reset($request->only('email', 'password', 'password_confirmation', 'token'), function ($user, $password) {
$user->forceFill(['password' => Hash::make($password), 'remember_token' => Str::random(60)])->save();
});
return $status === Password::PASSWORD_RESET
? redirect()->route('login')->with('success', __($status))
: back()->withErrors(['email' => __($status)]);
}
}