How to fix the error: Argument 2 passed to App \ Providers \ AuthServiceProvider

0

I wanted to put two policies, one for if the user already registered did not appear the anchor participate and the other if the user created the event appear the edit and delete buttons, but only works the second, as I do so Does politics participate-event work?

This is the Auth Service Provider:

public function boot(GateContract $gate)
{
    $this->registerPolicies($gate);

/* Caso seja chamado e o usuario que criou o evento esteja logado poderá entrar no @can */
    $gate->define('update-evento', function(User $user, Evento $evento){
        return $user->id == $evento->user_id;
    });
/* Caso seja chamado e o usuario já clickou em participar não entra no @can */
    $gate->define('participa-evento', function(User $user, ParticiparEvento $participar){
        return $user->id == $participar->user_id;
    });
}

Model ParticipateEvent:

namespace App;
use App\User;
use App\Evento;
use Illuminate\Database\Eloquent\Model; 
class ParticiparEvento extends Model{
  /*nome da tabela*/
protected $table    =   "participar_eventos";

/*nome dos atributos que poderão ser não alterados*/
protected $guarded  = ['id','user_id','evento_id'];

/*nome dos atributos que poderão ser alterados*/
protected $fillable = ['checking'];

/*nome dos atributos que representam as horas*/
protected $date     = ['created_at','update_at'];
}

Model Event:

use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class Evento extends Model {
/*nome da tabela*/
protected $table    =   "eventos";

/*nome dos atributos que poderão ser alterados*/
protected $fillable = ['nome', 'descricao', 'email', 'telefone', 'vagas','imagem'];

/*nome dos atributos que representam as horas*/
protected $date     = ['created_at','update_at','inicio_evento','fim_evento'];

/*nome dos atributos que poderão ser não alterados*/
protected $guarded  = ['id','user_id'];

/*Função que representa o relacionamento de muitos para muitos*/
 public function users(){
    return $this->belongsToMany(User::class);
}   
/*Função que representa o relacionamento de um para muitos*/
 public function user(){
    return $this->belongsTo(User::class);
 }

Model User:

use App\Evento;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;

class User extends Authenticatable
{
use Notifiable;
/*nome da tabela*/
protected $table    =   "users";
/*nome dos atributos que poderão ser alterados*/
protected $fillable = ['id','name', 'email', 'password','role'];

/*nome dos atributos que não poderão ser vistos*/
protected $hidden   = ['password', 'remember_token'];

/*Função que representa o relacionamento de muitos para muitos*/
 public function eventos(){
    return $this->belongsToMany(Evento::class);
}   
/*Função que representa o relacionamento de um para muitos*/
 public function evento(){
    return $this->hasMany(Evento::class);
}
}

Here is the index:

<!--  Botão que cadastra o usuario na tabela participar -->
        @can('participa-evento', $evento)
            <a href="{{url("/evento/{$evento->id}/upando")}}">participar</a><br>
        @endcan

        <!-- Pega a função de app\Providers\AuthServiceProvider.php
             Caso esteja de acordo com o provider ele vai fazer aparecer o que está dentro-->   
            @can('update-evento', $evento)
            <a href="{{url("/evento/{$evento->id}/update")}}">editar</a><br>
        <form method="POST" action="{{route('evento.destroy', $evento->id)}}">
                <input type="hidden" name="_method" value="DELETE">
                <input type="hidden" name="_token" value="{{ csrf_token() }}">
                <input type="submit" value="Delete">
            </form>
            @endcan
    
asked by anonymous 09.11.2018 / 13:24

0 answers