7 November, 2019
Лже Артемий
RainLab.User со своей моделью User

В Laravel заменить используемый класс пользователя можно отредактировав одну строчку в конфигах. В OctoberCMS это немного сложнее.

Здесь придется либо хакнуть класс RainLab\User\Classes\AuthManager, поменяв свойство 

protected $userModel = 'RainLab\User\Models\User';

на свой класс. Либо отнаследовать класс RainLab\User\Classes\AuthManager.

С первым "некрасивым" методом все ясно - останется лишь выключить обновления плагина RainLab.User при общем обновлении системы. 

Разберемся со вторым подходом: наследуем класс RainLab\User\Classes\AuthManager и уже в нем правим свойство $userModel.

Далее выбираем чего нам хочется: либо сделать свой фасад по типу Auth, но со своим названием, либо подменить внутренность Auth. Чтобы подменить - придется в register() методе в Plugin.php своего плагина удалить фасад от RainLab. Если возникает конфликт плагинов - есть вариант испольтзовать метод boot вместо register.

$alias = AliasLoader::getInstance();
$alias->getAliases() // получаем список алиасов, удаляем из массива auth
$alias->setAliases()  // и задаем полученный массив через setAliases

Следующий шаг - скопировать из Ренйлаб Юзера папку facades в свой плагин и поменять соответсвенно неймспейсы. Потом в Plugin.php своего плагина сделать все то же самое, что сделано в рейнлабовском по регистрации фасада:

public function register()
{
    $alias = AliasLoader::getInstance();
    $alias->alias('Auth', 'MeAuthor\MyUser\Facades\Auth');


    App::singleton('user.auth', function() {
        return \MeAuthor\MyUser\Classes\AuthManager::instance();
    });
...
view_count: 58