/** * @param \App\Models\User $user * @param string $code * * @return bool */ public function complete(User $user, $code) { $expires = $this->expires(); $activation = UserActivation::where('user_id', $user->id)->where('code', $code)->where('completed', false)->where('created_at', '>', $expires)->first(); if ($activation === null) { return false; } $activation->fill(['completed' => true, 'completed_at' => Carbon::now()]); $activation->save(); return true; }
/** * Activate an account [Web only]. * * @param \Illuminate\Http\Request $request * @param string|null $token * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector * @throws \App\Exceptions\Common\ValidationException */ public function activate(Request $request, $token = null) { $data = !is_null($token) ? ['token' => $token] : $request->all(); $validator = app('validator')->make($data, ['token' => 'required|string']); if ($validator->fails()) { throw new ValidationException($validator); } $activation = UserActivation::whereCode($data['token'])->first(); if (!$activation) { throw new TokenNotValidException(); } /** @var \App\Models\User $user */ $user = User::findOrFail($activation->user_id); $this->complete($user, $data['token']); return $request->expectsJson() ? response()->json(['message' => 'Activated']) : redirect($this->redirectPath())->with('message', 'Activation successful'); }