Принимаем оплату российскими и иностранными картами, системами МИР Pay и Tinkoff Pay.
Смена 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
Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Комментарии (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 и не получится второй раз сделать запрос, только когда токен истечет по времени
Спасибо.
Спасибо за урок! Дмитрий, сегодня заметил, что проверка 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 не выйдет.
Посмотри свой файл конфигурации для psalm и сравни с файлом Дмитрия на GitHub.
Да, спасибо! Я в нем забыл дописать директории src/Auth/Test и src/Http/Test
:)
Годный контент! Спасибо. Дмитрий есть вопрос, будет ли реализация автоматической генерации документации к API, на подобии Swagger?
Спасибо, Дмитрий, за отличный контент!
В одном из тестов ошибка. testNotActive. Там должен быть вызов метода requestEmailChanging вместо requestPasswordReset.
Исправили. Спасибо!
Кейс: отправка подтверждения. Когда мы ищем есть ли уже пользователи с таким email, надо учитывать текущего пользователя, которому мы отправляем подтверждение. Т.е. хендлер команды будет всегда возвращать DomainException. строка 41.
Нет никакого смысла давать менять email на такой же. Так что это учитывать необязательно.
Если пользователь запросил смену email, но опечатался, то получается он не сможет ввести второй раз уже верный email? Ведь тогда токен будет не null и не получится второй раз сделать запрос, только когда токен истечет по времени
Да, только когда токен истечёт по времени.
Или войти через: