* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Flarum\Core\Command; use Flarum\User\EmailToken; use Flarum\User\UserRepository; use Flarum\Foundation\DispatchEventsTrait; use Illuminate\Contracts\Events\Dispatcher; class ConfirmEmailHandler { use Flarum\Foundation\DispatchEventsTrait; /** * @var \Flarum\User\UserRepository */ protected $users; /** * @param \Flarum\User\UserRepository $users */ public function __construct(Dispatcher $events, UserRepository $users) { $this->events = $events; $this->users = $users; } /** * @param ConfirmEmail $command * @return \Flarum\User\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; } }