Реализовал так, поправьте если можно проще или правильнее...
Сервис провайдер
class DriverLoginServiceProvider extends ServiceProvider
{
// protected $defer = true;
public function register()
{
$this->app->singleton(DriverLogin::class, function ($app) {
return DriverLogin::where('phone', Request::input('phone', 'none'))->first();
});
}
public function provides()
{
return [DriverLogin::class];
}
}
Контроллер
public function loginCheckPhone(CheckDriver $request, DriverLogin $driver)
{
// Проверяем можно ли делать повторную отправку.
if ( ($checkSend = Sms::checkSend($driver->verify_code)) !== true ) {
return response()->json( $checkSend, 403);
}
$driver->verify_code = Sms::send($driver->phone, 'Ваш код авторизации в личном кабинете: %code');
$driver->save();
}
Самое правило валидации
public function passes($attribute, $value)
{
return (app()->get(DriverLogin::class)) ? true : false;
}
Наследовение оригинальной модели. У меня 2 сервис провайдера, один при входе, другой уже когда человек авторизовался. Вот для этого наследование.
<?php
namespace App\Models;
class DriverLogin extends \Backend\Driver\Models\Driver
{
}
?>
В итоге эта схема чуть сложна для данной ситуации, в реале сделал просто так вот
<?php
namespace App\Services;
use Backend\Driver\Models\Driver;
use Request;
class DriverLogin
{
private static $model = null;
public static function get()
{
if (DriverLogin::$model === null ) {
$phone = Request::input('phone', '');
DriverLogin::$model = (iconv_strlen($phone) != 12)
? false
: Driver::where('phone', $phone)->first();
}
return DriverLogin::$model;
}
}
?>
И из нужных мест получаю резултат запроса...