Sergey
да
Sergey
jwt + refresh
Ale
да
Ale
вспомнил, что Юра запилил ))
guga
пойду посмотрю на jwt
Sergey
jwt.io
guga
знаю, ни разу его не юзал
Ale
ничего особого)
Sergey
json завернутый в base64 + подпись
guga
password как secret?
Sergey
ээээм в jwt токене должны быть ТОЛЬКО публичные данные
Ale
да
Ale
пасворд только в логине передается на сервер
Ale
и больше нигде не участвует
Sergey
https://www.youtube.com/watch?v=VDfX44fZoMc
Sergey
я уже скидывал?
Ale
возможно мне в личку, крутая преза
Sergey
https://www.destroyallsoftware.com/talks/boundaries
Sergey
вот еще крутая
🐴
Чуваки, если вам не сложно, добавьте, пожалуйста ссылки на эти видео сюда https://oopru.github.io
🐴
то есть сюда https://github.com/oopru/oopru.github.io
Sergey
холивар - как вы относитесь к названиям классов вида RegisterUser?
Sergey
вместо RegisterUserHandler
Sergey
например
Sergey
ну мол verbs vs nouns
Пантелеев
guga
А если это не хендлер? А скажем сервис, или валидатор
Sergey
Sergey
ну и с чего бы ему быть валидатором?)
Sergey
это сервис, чье назначение - менеджить регистрацию пользователя
guga
Ну тут есть некая путаница в именах. Мы сейчас о веб сервисах или о индустрии в целом?
Sergey
но делать 100500 классов с суффиксом тупо потому что "надо что бы классы назывались как существительные" я не особо хочу
Sergey
Sergey
ну или названия типов объектов
guga
А как же SRP?
guga
у тебя один класс и хендлит реквесты и валидирует, может ещё и в базу сейвит?
Sergey
А как же SRP?
все норм, этот класс только менеджит, он ничего не делает сам по себе а только координирует действий других сервисов и описывает общий сценарий. Там нет ифов
Sergey
данные которые в него приходят уже типа должны быть валидными с точки зрения клиента
Sergey
более мелкие сервисы будут уже проверять целостность отдельных кусков данных. На этом этапе если нам пришли невалидные данные мы будем кидать исключения
guga
немного не понял твоей концепции, у тебя в RegisterUserHandler пришли req и resp или прямо готовая моделька юзера, которая была уже отвалидирована?
Sergey
в него пришло DTO с уже отвалидированными данными и задача этого сервиса тупо зарегать юзера. Никаких респонсов.
Sergey
"моделька юзера", то есть сущность юзера, будет создана в процессе и сохранена другими сервисами
Sergey
дополнительные действия вроде "надо пароль захэшировать" или "надо подготовить что-то" пусть делают маленькие сервисы
Sergey
а RegisterUser как и полагает хорошему менеджеру ничего из этого всего делать не умеет, он только знает что в какой последовательности надо делать и все.
Ale
Sergey
с одним публичным методом (__invoke)
guga
Я порой вас не понимаю :) что за invokable?
Sergey
$action = new RegisterUser();
$action($dto);
Sergey
такое
guga
это что-то из разряда di
Sergey
нет, это что-то из разряда волшебных методов в php
guga
Sergey
http://php.net/manual/en/language.oop5.magic.php#object.invoke
Sergey
ну тоесть где-то в контроллере у меня такое:
public function registerUserAction(RegisterUser $handler, RegisterUserRequest $dto)
{
$handler($dto);
}
guga
Прикольная штука.
Sergey
смотрю сейчас видос где Дядя Боб показывает свой проект
Sergey
и гордо говорит "у меня тут ~90-95% покрытие кода тестами"
🐴
Sergey
все в списке awesome-talks
Sergey
https://www.youtube.com/watch?v=TWBDa5dqrl8
Sergey
мотивирует
Ale
насмотришься этих видосов
Ale
а потом страдаешь, когда пишешь :\
Sergey
я вчера ночью написал кусочек проекта "по всяким видосам"
Sergey
это неописуемое чувство когда ты написал поддерживаемый и читабельный код, который удобен просто и т.д. и ты понимаешь что замутить такой глобальный рефакторинг возможности пока нет и тебе завтра придется страдать с тем что есть
Ale
Sergey
последний видос который я скидывал был в основном о интересном баге из-за которого умерли люди
Ale
ну там не юнит-тесты, а верификация нужна
Sergey
ну в целом там алгоритм работал некорректно, но да, такие вещи юнит тестами не покрыть обычно
Sergey
ну и находить их надо эксплорейшен тестингом
Alexander
guga
Вы вот прямо пишете по TDD / bdd как отцы основатели завещали?
Sergey
и то немного
Sergey
но сейчас думаю себя заставлять)
Sergey
у нас в компании процессы и так построены так что ATDD/BDD идеально ложатся
Sergey
просто никто не умеет в геркин или тесты
guga
Т.е. прямо сначала тесты, а потом код?
guga
А потом dummy код, который удовлетворяет тестам?