Как исправить ошибку в плагине проверки пользователя при создании нового пользователя? - PullRequest
0 голосов
/ 17 сентября 2018

В моем приложении laravel 5.7.3 есть мастер создания пользователя.Это сработало, но я получил ошибку, когда при создании пользователя я подключил плагин https://github.com/jrean/laravel-user-verification/

Моя модель приложения / User.php:

<?php

namespace App;

use DB;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Http\Traits\funcsTrait;
use App\library\ImagePreviewSize;


//class User extends Authenticatable
class User extends Authenticatable
{
    use Notifiable;
    use funcsTrait;
    protected $table = 'users';
    protected $primaryKey = 'id';
    public $timestamps = false;
...

и в приложении control / Http / Controllers / AccountController.php:

public function postConfirm() // create new user with all related data
{
    DB::beginTransaction();
    try {
        $newAccountData = Session::get($this->register_session_key);

        $avatar_filename = ! empty($newAccountData['avatar_filename']) ? $newAccountData['avatar_filename'] : '';
        $avatar_filename_path = ! empty($newAccountData['avatar_filename_path']) ? $newAccountData['avatar_filename_path'] : '';

        $newUser             = new User();
        $newUser->username   = $newAccountData['username'];
        $newUser->email      = $newAccountData['email'];
        $newUser->password   = $newAccountData['password'];
        $newUser->first_name = $newAccountData['first_name'];
        $newUser->last_name  = $newAccountData['last_name'];
        $newUser->phone      = $newAccountData['phone'];
        $newUser->website    = $newAccountData['website'];
        $newUser->status     = 'N';
        if ( ! empty($avatar_filename)) {
            $newUser->avatar = $newAccountData['avatar_filename'];
        }
        $newUser->save();


        $ret1= UserVerification::generate($newUser);

В последней строке я получил ошибку:

The model instance provided is not compliant with this package.   

В документах, указанных выше, я прочитал: Предоставленный экземпляр модели не совместим с этим пакетом.Он должен реализовывать аутентифицируемый интерфейс Illuminate \ Contracts \ Auth \ Authenticatable

Я попытался изменить мой пользовательский modfel с помощью строк:

<?php

namespace App;

use DB;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\Authenticatable;
use App\Http\Traits\funcsTrait;
use App\library\ImagePreviewSize;


class User extends Authenticatable
{
    ...

Но я получил ошибку:

Class App\User cannot extend from interface Illuminate\Contracts\Auth\Authenticatable

Почему ошибка и как ее исправить?

Спасибо!

1 Ответ

0 голосов
/ 17 сентября 2018

Ваша User модель должна расширяться Illuminate\Foundation\Auth\User с laravel по умолчанию, псевдонимом которого является Authenticatable

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{

}

В вашем коде вы расширяете Authenticatable Контракт, который является интерфейсом PHP, а не классом PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...