
?
08.05.2017
04:08:38
https://habrahabr.ru/post/328156/

F01134H
08.05.2017
13:09:27
Народ, вот я на ларке делаю регистрацию
и я типо полностью переделать хочу на модульную структуру это дело
но без DDD

Google

F01134H
08.05.2017
13:09:51
в общем вопрос философский

Sergey
08.05.2017
13:09:58
но без DDD
DDD это не про репозитории/сущности/сервисы если что

F01134H
08.05.2017
13:10:09
ну
хорошо хорошо

Sergey
08.05.2017
13:10:20
я если честно не представляяю себе как ты это сделаешь со всякими элоквентами

F01134H
08.05.2017
13:10:41

Sergey
08.05.2017
13:11:00
попробуй про row data gateway почитать
но хз...

F01134H
08.05.2017
13:11:08
ну орм не панацея да, могу и дата маппер взять
актив рекорд в смысле
короче, суть то не в этом

Sergey
08.05.2017
13:11:37
суть в том что active record для этого не предназначена

Google

F01134H
08.05.2017
13:11:49
вот есть у меня сущность User, есть регистрация\авторизация

Sergey
08.05.2017
13:11:49
это когда у тебя простые data-centric приложения и там кроме data model тебе ничего не надо

F01134H
08.05.2017
13:11:54
как мне это дело разбить

Sergey
08.05.2017
13:12:09

F01134H
08.05.2017
13:12:32
типо в контексте сущности Юзер все это делать?
как вообще такой подход называется? Или похожий, почитать

Sergey
08.05.2017
13:12:58
ООП?)

F01134H
08.05.2017
13:13:15
про репозитории

Sergey
08.05.2017
13:13:26
я где-то что-то про репозитории сказал?
тебе они пока не нужны
callable в целом не обязательно
ненавижу телеграм
public function authenticate(string $password, callable $hashPassword) {
if (password_verify($this->password, $password)
}
повторюсь - если ты не хочешь руками DAO делать или доктрину цеплять - читай про row data gateway

F01134H
08.05.2017
13:15:05
Хорошо, спасибо за наводку

Sergey
08.05.2017
13:15:23
но честно - я ни разу не пробовал на практике, хотя по идее проблему твою должно решить

Andrey
08.05.2017
13:26:21

Sergey
08.05.2017
13:26:58
у меня этот метод в сущности Credentials
а password_hash и password_verify и так абстракции

Google

Sergey
08.05.2017
13:27:53
в целом O/C немного нарушен но это не страшно
если юзать дефолтные значения для password api

Andrey
08.05.2017
13:28:30

Sergey
08.05.2017
13:28:44
https://github.com/Ocramius/basic-doctrine-tutorial-2017/blob/feature/registration/basic-tutorial/src/Authentication/Entity/User.php
это тип для ленивых
кто не хочет фабрику выносить в отдельный класс

Andrey
08.05.2017
13:30:15
Я про то, что это не в credentials пихать собираются. А потом у меня появился пользователь с соцсети

Sergey
08.05.2017
13:30:43
ну и опять же
пока у тебя нет пользователей из соц сети
все ок

Andrey
08.05.2017
13:31:42
Я про user писал, если не в нем, то и коммента нет

Sergey
08.05.2017
13:31:55
ну то есть вот у тебя на данный момент нет ничего по поводу того что авторизовывать надо пользователей из соц сетей
более того, там и процесс аутентификации будет несколько иным
ты никаких "секретов" проверять не будешь
ты просто по идентити достанешь пользователя
и все
тут уже спрос с коллекции юзеров

Google

Andrey
08.05.2017
13:32:57
а почему не в юзере?)
Он какое отношение к логину имеет? Потом соц сети появятся, потом логин через sms или ещё че

Sergey
08.05.2017
13:33:10

Andrey
08.05.2017
13:33:26

Sergey
08.05.2017
13:33:42
"As a user I should be able to login in order to secure my data"
user .... login

Andrey
08.05.2017
13:33:49

Sergey
08.05.2017
13:34:00
когда ты логинишься через соц сеть всю верефикацию за тебя сделает внешний сервис. Тебе надо будет только достать юзера

Andrey
08.05.2017
13:34:30
password_verify - это чаю просто попить решили?

Sergey
08.05.2017
13:34:35
это будет другая стратегия ПЕРЕД юзером

Admin
ERROR: S client not available

Sergey
08.05.2017
13:34:52
когда ты логинишься из соц сети, аутентификация происходит не у тебя
http -> login strategy -?> user->authenticate если надо по стратегии
если у тебя соц сети - то остановишься на login strategy
и дальше не пойдешь
что не так?
да и потом, какя еще логика может быть в классе User кроме как не управление своими кредами?)
апдейт профайла разве что
по сути управление кредами это часть управления профилем пользователя

Google

Andrey
08.05.2017
13:37:07
Пользователю плевать как его аутентифицируют, у тебя один и тот же класс может в десятке мест использоваться и в каждом будет своя аутентификация

Sergey
08.05.2017
13:37:16
это уже будет нарушать SRP

Andrey
08.05.2017
13:37:32
Легко

Sergey
08.05.2017
13:37:42
у тебя есть класс User
и есть только одна роль чуваков которые пользуются этим профилем
этот класс должен использоваться строго в одном контексте

Andrey
08.05.2017
13:38:09
Вот как раз не будет, т.к. эта ответственность будет за пределами user находится

Sergey
08.05.2017
13:38:12
если он у тебя по разным контекстам начинает плавать (админы например) - то беда
на глазок?
соблюдает код SRP или нет можно сказать только хорошо зная контекст

Andrey
08.05.2017
13:39:17
Здесь и без него понятно

Sergey
08.05.2017
13:39:25
объясни)

Andrey
08.05.2017
13:39:53
Если только user не занимается только аутентификацией

Sergey
08.05.2017
13:39:57
ну то есть я могу тебе предложить контекст в котором наличие метода authenticate у User будет как соблюдать SRP так и нарушать
или например... changePassword ты куда запихнешь?
в юзера?

Andrey
08.05.2017
13:41:04
По порядку

Sergey
08.05.2017
13:41:11
давай на примере changePassword
public function changePassword(string $oldPassword, string $newPassword);
где это должно лежать?