Разрабатываю свой первый сайт. Появился нубский вопрос.
Прикручиваю авторизацию через соц.сети (Facebook, ВКонтакте) посредством Laravel\SocialiteProviders.
Его модель возвращает в ответном массиве поле 'name', содержащее имя+фамилия. Мне нужны имя (first_name) и фамилия (last_name) раздельно. Поизучал исходники. Сама модель предоставляет возможность изменить запрос внутри себя и получает от провайдера данные поля в JSON-формате, но потом, не понимаю зачем (видимо, чтобы исключить ошибки из ответа), в другом методе пересоздает вручную («ремапит») массив по полям, игнорируя поля, запрашиваемые пользователем:
Примерно такая цепочка для Facebook:
getUserByToken->$user($fields['first_name'])->JSON-decode->mapUserToObject->$user['name']->null
ВКонтакте:
getUserByToken->$user($fields['first_name', 'last_name'])->JSON-decode->mapUserToObject->$user['name']=$user['first_name'] . $user['last_name']
Собственно суть вопроса.
Как более правильно (грамотно) допилить функционал?
1. Переписать исходники?
2. Наследовать класс и переписать метод mapUserToObject?
3. Добавить в существующий контроллер метод по разделению name на имя и фамилию.
Пошел по 1-ому. Но ведь, после обновления, заново придется переписывать. Второй - костыль. Третий - маразм. Особенно с ВКонтакте, который не предоставляет поле 'name'. Сначало склеить поля, потом снова разделить.
Подскажите, пожалуйста, знатоки. По какому пути технически грамотно нужно идти?