Я пытаюсь установить систему аутентификации, используя пакет суши https://github.com/calebporzio/sushi, но не могу заставить его работать.
Модель суши.
class User_sushi extends Model
{
use \Sushi\Sushi;
protected $rows = [
[ 'id' => '1',
'name' => 'admin',
'password' => 'adminnetcamara',
'role_id' => '1',
],
[
'id' => '2',
'name' => 'operador',
'password' => 'operador',
'role_id' => '2',
],
[
'id' => '3',
'name' => 'visualizador',
'password' => 'visualizador',
'role_id' => '2',
],
];
public function role()
{
return $this->belongsTo(Role::class);
}
}
guard
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'user_sushi' => [
'driver' => 'eloquent',
'model' => App\User_sushi::class,
]
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'user_sushi' => [
'driver' => 'session',
'provider' => 'user_sushi',
],
],
Промежуточное ПО выглядит так.
class UserSushiRedirect
{
public function handle($request, Closure $next, $guard = 'user_sushi')
{
if (!Auth::guard($guard)->check()) {
return redirect('login');
}
return $next($request);
}
}
И контроллер входа.
public function login(Request $request){
$name_req = $request->name;
$pass_req = $request->password;
$usuarios = User_sushi::select('name')->get();
foreach ($usuarios as $usu) {
if($usu->name === $name_req){
$pass = User_sushi::where('name', $usu->name)->value('password');
if($pass === $pass_req){
$id = User_sushi::where('name', $usu->name)->value('id');
Auth::loginUsingId($id);
return redirect('cz');
}
}
}
Проблема в том, что я не могу получить метод аутентификации для работа, и это при условии, что все, что я сделал до сих пор, в порядке. Я думаю, это потому, что моя модель суши не имеет первичного ключа (я думаю, это также сделало бы промежуточное ПО неработающим), но я могу ошибаться. Я пока абсолютно ничего не нашел. Любое понимание, независимо от того, насколько оно маленькое, будет действительно оценено.
ОБНОВЛЕНИЕ: использование защиты Auth :: guard ('user_sushi') -> loginUsingId ($ id); выбросы и исключение Вызов неопределенного метода App \ User_sushi :: getAuthIdentifierName ()
protected static function throwBadMethodCallException($method)
{
throw new BadMethodCallException(sprintf(
'Call to undefined method %s::%s()', static::class, $method
));
}