87 lines
2.9 KiB
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.']);
|
|
}
|
|
}
|
|
}
|