Как изменить таблицу аутентификации в laravel 8 с помощью функций входа и регистрации

#php #laravel

Вопрос:

Я пытаюсь создать панель управления с помощью laravel 8 для игры с открытым исходным кодом, в которой уже есть база данных с другим именем таблицы аутентификации и столбцами. Моя цель-создать эту панель для регистрации,входа в систему (показать некоторые данные), восстановления электронной почты с паролем и изменения электронной почты с паролем. Таблица пользователей теперь является таблицей учетных записей, и я видел сотни сообщений как в stackoverflow, так и на других форумах, которые, как они говорят, следуют тем же шагам. Новый файл миграции, новый файл модели, измените config/auth.php настройки

Дело в том, что когда я меняю таблицу пользователей на таблицу учетных записей, кажется, что все работает. Пользователь может зарегистрироваться и войти в систему, но когда я пытаюсь получить информацию о пользователях в своем blade.php с помощью {{Auth::user()}} Он показывает число 0, и если я хочу показать {{Auth::user->любой столбец}}, он выбирает первую строку в таблице. Я ищу ответ в Интернете уже 3 дня безрезультатно и перепробовал множество различных методов, чтобы это сработало. Где-то я видел, что это ядро laravels, касающееся аутентификации, и вам нужно переименовать каждый класс, в котором есть пользователи. Я застрял. Вот мой код.

Контроллер входа в систему (я использовал другой метод хэширования, а не bcrypt, так как игровой сервер поддерживает это)

 <?php

namespace AppHttpControllersAuth;

use AppHttpControllersController;
use IlluminateHttpRequest;
use Auth;
use AppModelsUser;

class LoginController extends Controller
{
public function login()
{

  return view('auth.login');
}

public function authenticate(Request $request)
{
    $request->validate([
        'email' => 'required|string',
        'password' => 'required|string',
    ]);

    $user = User::where([ 
      'email'  => $request->email,
      'password'  => base64_encode(hash("sha1", $request->password, true))
  ])->first(); 
  
  

  if ($user) { 
      Auth::login($user); 

      return redirect()->intended('home')->with('success', 'Your Account has been registered.');
  }

    return redirect('login')->with('error', 'Oppes! You have entered invalid credentials');
}

public function logout() {
  Auth::logout();

  return redirect('login');
}

}
 

My User Class

  <?php

 namespace AppModels;

 use IlluminateContractsAuthMustVerifyEmail;
 use IlluminateDatabaseEloquentFactoriesHasFactory;
 use IlluminateFoundationAuthUser as Authenticatable;
 use IlluminateNotificationsNotifiable;
 use LaravelSanctumHasApiTokens;
 use Auth;

 class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var string[]
 */
protected $fillable = [
    'users',
    'email',
    'password',
];

protected $primaryKey = 'login';
protected $table = 'accounts';
public $timestamps = false;
protected $rememberTokenName = false;


/**
 * The attributes that should be hidden for serialization.
 *
 * @var array
 */
protected $hidden = [
    'password',
    'remember_token',
];

/**
 * The attributes that should be cast.
 *
 * @var array
 */
protected $casts = [
    'email_verified_at' => 'datetime',
];


}
 

My auth.php

  <?php

 return [


*/

'defaults' => [
    'guard' => 'web',
    'passwords' => 'accounts',
],



'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'accounts',
    ],
],



'providers' => [
    'accounts' => [
        'driver' => 'eloquent',
        'model' => AppModelsUser::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],



'passwords' => [
    'accounts' => [
        'provider' => 'accounts',
        'table' => 'password_resets',
        'expire' => 60,
        'throttle' => 60,
    ],
],



'password_timeout' => 10800,

 ];