Есть модуль api, есть модуль user, каким образом из апи можно получить доступ к юзеру, включая его экшены?
Идея в чем: юзер живет отдельно со своей структурой, закрыт извне, когда надо пройти верификацию, зарегаться, получить права - обращаемся к нему, делаем все там (генерируем токены, записываем сессию, вписываем в базу и все остальное), отдаем обратно в другой модуль. Можно как-нибудь через Yii::$app->getModule('user') получить что-то полезнее информации о модуле?
Просто не догоняю как получить экшены из контроллеров иначе, кроме как обратиться по урлу (курлом гонял, но это же дичь).
Ваша проблема в том, что у Вас в контроллере что-то, что там не должно быть. Выносите то что Вам нужно в отдельный объект или компонент и пользуйтесь. Экшен кстати тоже может быть отдельным классом сделан, как раз для повторного использования. Но мне кажется у Вас проблема в не верной архитектуре и толстом контролере.
так, ну у меня по сути просто готовый компонент с юзерами для обычного веб-сайта, для классического варианта он идеально подходит и да, там все в трех экшенах - default, auth для соц сеток и admin. На данный момент я написал Basic HTTP аутентификацию, но на этапе авторизации умираю - т.к. вся логика в юзере. Я думал что просто передам в юзера и он там все сделает, ан нет. Пакет взят с гитхаба, один из популярнейших.
Пойду гуглить дальше, почему-то думал что сервис и модуль суть одно.
так, а проясните мне, пожалста, разницу между модулем, компонентом и сервисом в рамках Yii2. По сути сейчас я представляю все три как сущности, которые являются разной реализацией примерно подобных вещей - независимых, инкапсулированных и отдельных от приложения. Как выяснилось, разница есть и я с ней столкнулся)
slo_nik, дык нечего показывать. Есть модуль rest api с парой методов (register, login, recover) и basic http аутентификацией. Нужно вот авторизоваться и понять, что этот пользователь это этот и далее уже использовать где нужно. Вся логика юзера в пакете anmah (
). Вот через него я и пытался подружить модуль апи и модуль юзера. Как выяснилось, экшены хорошо работают для маршрутов, но не для работы внутри меж модулей - я получаю лоигн:пароль, но не могу использовать конкретный экшен, где есть методы конкатенации строк, хеширования и сверки с базой. Уже накидал примерную структуру компонента юзер, просто переоборудую данный модуль в компонент (или сервис? Кто нибудь объяснит в чем разница-то?).
Максим Тимофеев, в случае аутентификации ничто не мешает, и я написал, что это решено - я получаю связку логин: пароль. И вот через модуль User получить identity и авторизовать я уже не могу, т.к. именно эта логика зашита в user/controllers/defaultController в виде экшенов
ну в данном случае как я это себе представил - отправляем логин:пароль -> получаем юзера -> авторизовываем по токену -> токен возвращается на приложение и там хранится, далее все через него идет. И, соответственно, чтобы иметь возможность получать пользователя, его права и все остальное и использовать это в апи для подписи полей и остального мне нужно достать объект юзера. Может я чего-то недопонял? :)
Вот например накидал для проверки и на этом завис - я не могу сравнить пароль (там через Yii::$app->secure->generateHash()) с приходящим паролем, т.к. там соль (генерируемую при регистрации) + пароль и создает строку из этих двух. И вот это все вшито в экшенах и приватных функциях.