settings = $settings; $this->mailer = $mailer; $this->url = $url; $this->translator = $translator; } /** * {@inheritdoc} */ public function handle(ServerRequestInterface $request): ResponseInterface { $id = Arr::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->to('forum')->route('confirmEmail', ['token' => $token->token]), '{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) { $message->to($actor->email); $message->subject($this->translator->trans('core.email.activate_account.subject')); }); return new EmptyResponse; } }