MIF_E31230266/app/Http/Controllers/AuthController.php

103 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use App\Models\User;
class AuthController extends Controller
{
// ── LOGIN ─────────────────────────────────────────
public function showLogin()
{
return view('login.welcome');
}
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$credentials = $request->only('email', 'password');
$remember = $request->boolean('remember');
if (Auth::attempt($credentials, $remember)) {
$request->session()->regenerate();
return redirect()->intended(route('halaman.prediksi'));
}
return back()
->withInput($request->only('email'))
->with('error', 'Email atau password salah.');
}
// ── REGISTER ──────────────────────────────────────
public function showRegister()
{
return view('login.register');
}
public function register(Request $request)
{
$request->validate([
'email' => 'required|email|unique:users,email',
'password' => 'required|min:8|confirmed', // confirmed = butuh field password_confirmation
], [
'email.unique' => 'Email ini sudah terdaftar.',
'password.min' => 'Password minimal 8 karakter.',
'password.confirmed' => 'Konfirmasi password tidak cocok.',
]);
// Ambil nama dari bagian sebelum @ di email
$name = explode('@', $request->email)[0];
$user = User::create([
'name' => $name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
Auth::login($user);
return redirect()->route('halaman.prediksi');
}
// ── LUPA PASSWORD ─────────────────────────────────
public function showLupaPassword()
{
return view('login.lupa-password');
}
public function resetPassword(Request $request)
{
$request->validate([
'email' => 'required|email|exists:users,email',
'password' => 'required|min:8|confirmed',
], [
'email.exists' => 'Email tidak ditemukan.',
'password.min' => 'Password minimal 8 karakter.',
'password.confirmed' => 'Konfirmasi password tidak cocok.',
]);
User::where('email', $request->email)->update([
'password' => Hash::make($request->password),
]);
return redirect()->route('login')->with('success', 'Password berhasil diubah. Silakan masuk.');
}
// ── LOGOUT ────────────────────────────────────────
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}