Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Problema creazione permessi con spatie/laravel-permission

    ciao!

    come suggerito, sto cercando di intergrare la libreria spatie/laravele-permission.
    la sto testando su lumen.
    l'ho installata come da guida, e mi sono bloccato alla creazione dei permessi.
    in sostanza lanciando questo codice:
    Codice PHP:
    use Spatie\Permission\Models\Role;
    use 
    Spatie\Permission\Models\Permission;

    $role Role::create(['name' => 'writer']);
    $permission Permission::create(['name' => 'edit']); 
    il ruolo è stato creato, il permesso no.
    facendo un pò di debug "grezzo" sono entrato nella funzione Permission::create:
    Codice PHP:
        public static function create(array $attributes = []) {
            
    $attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class);

            echo 
    'OK<br>';
            
    $permission = static::getPermissions()->filter(function ($permission) use ($attributes) {
                        return 
    $permission->name === $attributes['name'] && $permission->guard_name === $attributes['guard_name'];
                    })->
    first();
            echo 
    'KO<br>';

            if (
    $permission) {
                throw 
    PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name']);
            }

            if (
    isNotLumen() && app()::VERSION '5.4') {
                return 
    parent::create($attributes);
            }

            return static::
    query()->create($attributes);
        } 
    in pratica stampa OK, ma no KO.
    quindi probabilmente si blocca la in mezzo.
    qualcuno ha avuto lo stesso problema??

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Nei log non c'è nulla?

  3. #3
    queste sono le ultime righe del log, che non sono variate ad una ulteriore richiesta:
    codice:
    #34 /var/www/html/justy/vendor/illuminate/console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
    #35 /var/www/html/justy/vendor/symfony/console/Application.php(946): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #36 /var/www/html/justy/vendor/symfony/console/Application.php(248): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Seeds\SeedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #37 /var/www/html/justy/vendor/symfony/console/Application.php(148): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #38 /var/www/html/justy/vendor/illuminate/console/Application.php(88): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #39 /var/www/html/justy/vendor/laravel/lumen-framework/src/Console/Kernel.php(84): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #40 /var/www/html/justy/artisan(35): Laravel\Lumen\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #41 {main}
    ad occhio ti direi che nei log non c'è nulla!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Dovresti postare le prima righe dell'errore, per capirsi dove c'è #1

    Questo è l'inizio dello stack, quindi non ci sono informazioni molto utili.

  5. #5
    ok sorry:
    codice:
    $ cat storage/logs/lumen.log 
    [2018-11-06 10:26:30] lumen.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Class 'Model' not found in /var/www/html/justy/database/seeds/DatabaseSeeder.php:15
    Stack trace:
    #0 [internal function]: DatabaseSeeder->run()
    #1 /var/www/html/justy/vendor/illuminate/container/BoundMethod.php(29): call_user_func_array(Array, Array)
    #2 /var/www/html/justy/vendor/illuminate/container/BoundMethod.php(87): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
    #3 /var/www/html/justy/vendor/illuminate/container/BoundMethod.php(31): Illuminate\Container\BoundMethod::callBoundMethod(Object(Laravel\Lumen\Application), Array, Object(Closure))
    #4 /var/www/html/justy/vendor/illuminate/container/Container.php(549): Illuminate\Container\BoundMethod::call(Object(Laravel\Lumen\Application), Array, Array, NULL)
    #5 /var/www/html/justy/vendor/illuminate/database/Seeder.php(122): Illuminate\Container\Container->call(Array)
    #6 /var/www/html/justy/vendor/illuminate/database/Console/Seeds/SeedCommand.php(63): Illuminate\Database\Seeder->__invoke()
    #7 /var/www/html/justy/vendor/illuminate/database/Eloquent/Concerns/GuardsAttributes.php(122): Illuminate\Database\Console\Seeds\SeedCommand->Illuminate\Database\Console\Seeds\{closure}()
    #8 /var/www/html/justy/vendor/illuminate/database/Console/Seeds/SeedCommand.php(64): Illuminate\Database\Eloquent\Model::unguarded(Object(Closure))
    #9 [internal function]: Illuminate\Database\Console\Seeds\SeedCommand->handle()
    però ad occhio non vedo nulla neanche qua, considerando che la prima riga è di ieri, ed io ho installato la libreria oggi!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Qui invece l'errore c'è:

    Class 'Model' not found in /var/www/html/justy/database/seeds/DatabaseSeeder.php:15

    Probabilmente in quel seeder usi Model ma non lo importi.

  7. #7
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Qui invece l'errore c'è:

    Class 'Model' not found in /var/www/html/justy/database/seeds/DatabaseSeeder.php:15

    Probabilmente in quel seeder usi Model ma non lo importi.
    ma penso che quell'errore è relativo ad un'altra cosa del giorno prima.
    poi ho sistemato, stavo seguendo la guida per JWT, che mi faceva caricare dei dati fasulli.

    cmq, a scanso di equivoci, dopo svuoto il log facendone una copia, e provo a rilanciare la creazione dei permessi.

  8. #8
    allora, ho fatto una copia del log e ricreato vuoto:
    codice:
    $ ls -l
    totale 16
    -rw-r--r-- 1 matte-server matte-server     0 nov  8 09:19 lumen.log
    -rw-r--r-- 1 matte-server matte-server 15100 nov  6 11:28 lumen.log.bak
    poi ho cancellato il ruolo che avevo creato, e provato a creare sia permesso che ruolo:
    Codice PHP:
        $permission Permission::create(['name' => 'edit']);
        
    $role Role::create(['name' => 'writer']); 
    non è stato creato nulla.
    così invece è stato creato solo il ruolo:
    Codice PHP:
        $role Role::create(['name' => 'writer']);
        
    $permission Permission::create(['name' => 'edit']); 
    nel log non c'è nulla:
    codice:
     $ ls -l
    totale 16
    -rw-r--r-- 1 matte-server matte-server     0 nov  8 09:19 lumen.log
    -rw-r--r-- 1 matte-server matte-server 15100 nov  6 11:28 lumen.log.bak

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Strano, dove li crei questi ruoli/permessi?
    Controlla anche il log del server web, tanto per avere tutte le info.

  10. #10
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Strano, dove li crei questi ruoli/permessi?
    Controlla anche il log del server web, tanto per avere tutte le info.
    ecco, la tua domanda mi ha fatto venire in mente che lo stavo facendo nel modo sbagliato (mi devo un attimo abituare ancora a sto framework).

    adesso ho messo tutto qui dentro:
    Codice PHP:
    use Illuminate\Database\Eloquent\Model;
    use 
    Illuminate\Database\Seeder;
    use 
    Spatie\Permission\Models\Role;
    use 
    Spatie\Permission\Models\Permission;

    class 
    DatabaseSeeder extends Seeder {

        
    /**
         * Run the database seeds.
         *
         * @return void
         */
        
    public function run() {
            
    // $this->call('UsersTableSeeder');
            
    Model::unguard();
            
    // Register the user seeder
            
    $role Role::create(['name' => 'writer']);
            
    $permission Permission::create(['name' => 'edit']);
            
    Model::reguard();
        }


    e poi lanciato il seed:
    codice:
    php artisan db:seed
    adesso ha creato tutto in maniera corretta.

    è giusta come modalità??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.