NIM_E31222518/app/Http/Controllers/Auth/RegisterController.php

87 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rules\Password;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
class RegisterController extends Controller
{
public function __construct()
{
$this->middleware('guest');
}
public function create()
{
return view('auth.register');
}
public function store(Request $request)
{
$request->validate([
'nama' => 'required|string|max:255',
'username' => 'required|string|max:255|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
'nomor_telp' => 'required|string|max:20',
'alamat' => 'required|string|max:191',
]);
try {
$user = User::create([
'nama' => $request->nama,
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
'nomor_telp' => $request->nomor_telp,
'alamat' => $request->alamat,
'role' => 'customer',
'verification_token' => Str::random(64),
'is_verified' => 0
]);
// Log untuk debug
Log::info('User registered successfully', [
'user_id' => $user->id,
'email' => $user->email,
'verification_token' => $user->verification_token
]);
// Kirim email verifikasi
$verificationUrl = route('verification.verify', ['token' => $user->verification_token]);
Log::info('Generated verification URL', [
'url' => $verificationUrl,
'token' => $user->verification_token
]);
Mail::send('emails.verify', ['url' => $verificationUrl], function($message) use ($user) {
$message->to($user->email);
$message->subject('Verifikasi Email');
});
Log::info('Verification email sent', [
'user_id' => $user->id,
'email' => $user->email,
'verification_url' => $verificationUrl
]);
return redirect()->route('login')->with('success', 'Registrasi berhasil! Silakan cek email Anda untuk verifikasi.');
} catch (\Exception $e) {
Log::error('Registration failed', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
return back()->withErrors(['error' => 'Terjadi kesalahan saat registrasi. Silakan coba lagi.']);
}
}
}