private function collectGarbage() { if ($this->hitsLottery()) { AccessToken::whereRaw('last_activity <= ? - lifetime', [time()])->delete(); $earliestToKeep = date('Y-m-d H:i:s', time() - 24 * 60 * 60); EmailToken::where('created_at', '<=', $earliestToKeep)->delete(); PasswordToken::where('created_at', '<=', $earliestToKeep)->delete(); AuthToken::where('created_at', '<=', $earliestToKeep)->delete(); } }
/** * @param ConfirmEmail $command * @return \Flarum\Core\User */ public function handle(ConfirmEmail $command) { /** @var EmailToken $token */ $token = EmailToken::validOrFail($command->token); $user = $token->user; $user->changeEmail($token->email); if (!$user->is_activated) { $user->activate(); } $user->save(); $this->dispatchEventsFor($user); $token->delete(); return $user; }
/** * {@inheritdoc} */ public function handle(ServerRequestInterface $request) { $id = array_get($request->getQueryParams(), 'id'); $actor = $request->getAttribute('actor'); $this->assertRegistered($actor); if ($actor->id != $id || $actor->is_activated) { throw new PermissionDeniedException(); } $token = EmailToken::generate($actor->email, $actor->id); $token->save(); $data = ['{username}' => $actor->username, '{url}' => $this->url->toRoute('confirmEmail', ['token' => $token->id]), '{forum}' => $this->settings->get('forum_title')]; $body = $this->translator->trans('core.email.activate_account.body', $data); $this->mailer->raw($body, function (Message $message) use($actor, $data) { $message->to($actor->email); $message->subject('[' . $data['{forum}'] . '] ' . $this->translator->trans('core.email.activate_account.subject')); }); return new EmptyResponse(); }
/** * @param User $user * @param string $email * @return EmailToken */ protected function generateToken(User $user, $email) { $token = EmailToken::generate($email, $user->id); $token->save(); return $token; }