public function complete(UserInterface $user, $code, $password)
    {
        $reminder = $this->findIncomplete($user, $code);

        if ($reminder === null)
        {
            return false;
        }

        $credentials = ['password' => $password];

        if (! $this->users->validForUpdate($user, $credentials))
        {
            return false;
        }

        $entityManager = $this->getEntityManager();
        $entityManager->beginTransaction();

        try
        {
            $this->users->update($user, $credentials);

            $reminder->complete();
            $this->save($reminder);

            $entityManager->commit();
            return true;
        }
        catch (\Exception $e)
        {
            $entityManager->rollback();

            return false;
        }
    }