Смена Email с подтверждением

Написание команды двухшаговой смены email-адреса в кабинете пользователя с подтверждением по ссылке с токеном в письме.

  • 00:00:24 Сценарий изменения Email
  • 00:01:31 Запрос смены с токеном
  • 00:02:42 Требования к методу смены
  • 00:04:01 Написание юнит-тестов
  • 00:08:03 Исходный код метода
  • 00:09:40 Подтверждение почты по токену
  • 00:13:42 Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (13)
Arunas
2020-02-11 17:04

Спасибо.

Ответить
KonTuzh
2020-02-11 20:27

Спасибо за урок! Дмитрий, сегодня заметил, что проверка psalm на файлах юнит тестов вываливается с ошибками. Всего 38 ошибок по каждому юнит тесту. (после 9 урока psalm не запускал, только тесты). И их природа мне не особо понятна:

ERROR: PropertyNotSetInConstructor - src/Auth/Test/Unit/Entity/User/EmailTest.php:14:7 - Property PHPUnit\Framework\TestCase::$backupGlobals is not defined in constructor of App\Auth\Test\Unit\Entity\User\EmailTest and in any methods called in the constructor class EmailTest extends TestCase

ERROR: InternalMethod - src/Auth/Test/Unit/Entity/User/EmailTest.php:14:25 - The method PHPUnit\Framework\TestCase::__construct has been marked as internal class EmailTest extends TestCase

Вероятно, данные ошибки связаны с самим классом TestCase и избавиться от них без смены версии psalm или phpunit не выйдет.

Ответить
Дмитрий Ориховский
2020-02-11 20:53

Посмотри свой файл конфигурации для psalm и сравни с файлом Дмитрия на GitHub.

Ответить
KonTuzh
2020-02-11 20:58

Да, спасибо! Я в нем забыл дописать директории src/Auth/Test и src/Http/Test

Ответить
Дмитрий Ориховский
2020-02-11 21:00

:)

Ответить
Дмитрий Ориховский
2020-02-11 20:58

Годный контент! Спасибо. Дмитрий есть вопрос, будет ли реализация автоматической генерации документации к API, на подобии Swagger?

Ответить
Сергей Латышков
2020-02-13 12:05

Спасибо, Дмитрий, за отличный контент!

Ответить
А
2020-05-17 20:39

В одном из тестов ошибка. testNotActive. Там должен быть вызов метода requestEmailChanging вместо requestPasswordReset.

Ответить
Дмитрий Елисеев
2020-05-19 16:09

Исправили. Спасибо!

Ответить
Дмитрий
2021-05-19 12:50

Кейс: отправка подтверждения. Когда мы ищем есть ли уже пользователи с таким email, надо учитывать текущего пользователя, которому мы отправляем подтверждение. Т.е. хендлер команды будет всегда возвращать DomainException. строка 41.

Ответить
Дмитрий Елисеев
2021-06-02 12:50

Нет никакого смысла давать менять email на такой же. Так что это учитывать необязательно.

Ответить
Олег Максимов
2022-01-02 14:31

Если пользователь запросил смену email, но опечатался, то получается он не сможет ввести второй раз уже верный email? Ведь тогда токен будет не null и не получится второй раз сделать запрос, только когда токен истечет по времени

Ответить
Дмитрий Елисеев
2022-01-15 11:23

Да, только когда токен истечёт по времени.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google