mirror of
https://gitlab.linphone.org/BC/public/flexisip-account-manager.git
synced 2026-01-17 18:08:06 +00:00
65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Account;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Str;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Mail\ChangingEmail;
|
|
use App\Mail\ChangedEmail;
|
|
use App\EmailChanged;
|
|
|
|
class EmailController extends Controller
|
|
{
|
|
public function show(Request $request)
|
|
{
|
|
return view('account.email', [
|
|
'account' => $request->user()
|
|
]);
|
|
}
|
|
|
|
public function requestUpdate(Request $request)
|
|
{
|
|
$request->validate([
|
|
'email' => 'required|different:email_current|confirmed|email',
|
|
]);
|
|
|
|
// Remove all the old requests
|
|
EmailChanged::where('account_id', $request->user()->id)->delete();
|
|
|
|
// Create a new one
|
|
$emailChanged = new EmailChanged;
|
|
$emailChanged->new_email = $request->get('email');
|
|
$emailChanged->hash = Str::random(16);
|
|
$emailChanged->account_id = $request->user()->id;
|
|
$emailChanged->save();
|
|
|
|
$request->user()->refresh();
|
|
|
|
Mail::to($request->user())->send(new ChangingEmail($request->user()));
|
|
|
|
$request->session()->flash('success', 'An email was sent with a confirmation link. Please click it to update your email address.');
|
|
return redirect()->route('account.panel');
|
|
}
|
|
|
|
public function update(Request $request, string $hash)
|
|
{
|
|
$account = $request->user();
|
|
|
|
if ($account->emailChanged && $account->emailChanged->hash == $hash) {
|
|
$account->email = $account->emailChanged->new_email;
|
|
$account->save();
|
|
|
|
Mail::to($account)->send(new ChangedEmail());
|
|
|
|
$account->emailChanged->delete();
|
|
|
|
$request->session()->flash('success', 'Email successfully updated');
|
|
return redirect()->route('account.panel');
|
|
}
|
|
|
|
abort(404);
|
|
}
|
|
}
|