@oop_ru

Страница 213 из 785
?
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
public function authenticate(string $password, callable $hashPassword) { if (password_verify($this->password, $password) }
А как же принцип единственной ответственности?

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 или ещё че

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
password_verify - это чаю просто попить решили?
это часть процесса аутентификации

когда ты логинишься из соц сети, аутентификация происходит не у тебя

http -> login strategy -?> user->authenticate если надо по стратегии

если у тебя соц сети - то остановишься на login strategy

и дальше не пойдешь

что не так?

да и потом, какя еще логика может быть в классе User кроме как не управление своими кредами?)

апдейт профайла разве что

по сути управление кредами это часть управления профилем пользователя

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

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
если он у тебя по разным контекстам начинает плавать (админы например) - то беда

Вот как раз не будет, т.к. эта ответственность будет за пределами user находится
как ты определяешь зону ответственности без контекста?

на глазок?

соблюдает код 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 так и нарушать

Если только user не занимается только аутентификацией
так он и не занимается. Самую важную штуку - проверку того что пароль введет корректно, берет на себя password_verify

или например... changePassword ты куда запихнешь?

в юзера?

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

Sergey
08.05.2017
13:41:11
давай на примере changePassword

public function changePassword(string $oldPassword, string $newPassword);

где это должно лежать?

Страница 213 из 785