101 lines
3.2 KiB
PHP
101 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\Facades\Redirect;
|
|
use Illuminate\Support\Str;
|
|
|
|
class VerificationController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
|
}
|
|
|
|
public function show()
|
|
{
|
|
return View::make('auth.verify-email');
|
|
}
|
|
|
|
public function verify(Request $request, $token)
|
|
{
|
|
Log::info('Verification attempt started', [
|
|
'token' => $token,
|
|
'request_url' => $request->fullUrl(),
|
|
'request_method' => $request->method(),
|
|
'request_headers' => $request->headers->all()
|
|
]);
|
|
|
|
try {
|
|
// Cari user berdasarkan token
|
|
$user = User::where('verification_token', $token)->first();
|
|
|
|
if (!$user) {
|
|
Log::error('Invalid verification token', [
|
|
'token' => $token,
|
|
'request_url' => $request->fullUrl()
|
|
]);
|
|
return Redirect::to('/')->with('error', 'Token verifikasi tidak valid.');
|
|
}
|
|
|
|
Log::info('User found for verification', [
|
|
'user_id' => $user->id,
|
|
'email' => $user->email,
|
|
'is_verified' => $user->is_verified
|
|
]);
|
|
|
|
// Update status verifikasi
|
|
$user->is_verified = 1;
|
|
$user->verification_token = null; // Hapus token setelah digunakan
|
|
$user->save();
|
|
|
|
Log::info('Email verified successfully', [
|
|
'user_id' => $user->id,
|
|
'email' => $user->email,
|
|
'is_verified' => $user->is_verified
|
|
]);
|
|
|
|
// Login user
|
|
Auth::login($user);
|
|
|
|
return Redirect::to('/')->with('status', 'Email berhasil diverifikasi!');
|
|
} catch (\Exception $e) {
|
|
Log::error('Error during email verification', [
|
|
'token' => $token,
|
|
'error' => $e->getMessage(),
|
|
'trace' => $e->getTraceAsString()
|
|
]);
|
|
return Redirect::to('/')->with('error', 'Terjadi kesalahan saat verifikasi email.');
|
|
}
|
|
}
|
|
|
|
public function resend(Request $request)
|
|
{
|
|
if ($request->user()->is_verified) {
|
|
return Redirect::to('/');
|
|
}
|
|
|
|
// Generate token baru
|
|
$token = Str::random(64);
|
|
$request->user()->verification_token = $token;
|
|
$request->user()->save();
|
|
|
|
// Kirim email dengan token baru
|
|
$verificationUrl = url("/email/verify/{$token}");
|
|
|
|
// Kirim email (gunakan sistem email yang sudah ada)
|
|
\Mail::send('emails.verify', ['url' => $verificationUrl], function($message) use ($request) {
|
|
$message->to($request->user()->email);
|
|
$message->subject('Verifikasi Email');
|
|
});
|
|
|
|
return Redirect::back()->with('status', 'Link verifikasi baru telah dikirim ke email Anda.');
|
|
}
|
|
}
|