Implemented e-mail confirmations

This commit is contained in:
2018-07-31 22:42:08 +02:00
parent df0e06045f
commit 904e29955d
13 changed files with 270 additions and 27 deletions
+9 -13
View File
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\EmailConfirmation;
use App\Models\User;
use Hash;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
@@ -22,34 +23,29 @@ class AccountController extends Controller
public function storeAccount(Request $request)
{
/** @var User $user */
$user = user();
$input = $this->validate($request, [
'name' => [
'required',
VALI_NAME,
Rule::unique('users')->ignoreModel(\user()),
Rule::unique('users')->ignoreModel($user),
],
'email' => [
'required',
VALI_EMAIL,
Rule::unique('users')->ignoreModel(\user()),
Rule::unique('users')->ignoreModel($user),
],
'new_password' => ['nullable', 'confirmed', VALI_PASSWORD],
]);
$user = user();
if ($input->email != $user->email) {
$confirmation = EmailConfirmation::create([
'user_id' => $user->id,
'email' => $input->email,
'token' => Str::random(60),
]);
$user->sendEmailConfirmationLink($input->email);
flash()->warning("New e-mail confirmation sent to $input->email.")->important();
flash()->warning("E-mail confirmation sent to $input->email.")->important();
// TODO send the e-mail
unset($input->email);
unset($input->email); // prevent updating the field in the model via fill
}
$user->fill($input->all());