मैं अपने सिस्टम में मॉडल परिवर्तनों को ट्रैक करने के लिए लारवेल ऑडिटिंग का उपयोग करता हूं। मुझे व्यवस्थापक प्रकार ट्रैक उपयोगकर्ता प्रकार और Id दिखाई देता है लेकिन स्टाफ उपयोगकर्ताओं के लिए, user_type और user_id NULL है और मेरा कोड यह है:

config/audit.php

<?php

return [

    'enabled' => env('AUDITING_ENABLED', true),

    /*
    |--------------------------------------------------------------------------
    | Audit Implementation
    |--------------------------------------------------------------------------
    |
    | Define which Audit model implementation should be used.
    |
    */

    'implementation' => OwenIt\Auditing\Models\Audit::class,

    /*
    |--------------------------------------------------------------------------
    | User Morph prefix & Guards
    |--------------------------------------------------------------------------
    |
    | Define the morph prefix and authentication guards for the User resolver.
    |
    */

    'user' => [
        'morph_prefix' => 'user',
        'guards'       => [
            'admin',
            'api',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Audit Resolvers
    |--------------------------------------------------------------------------
    |
    | Define the User, IP Address, User Agent and URL resolver implementations.
    |
    */
    'resolver' => [
        'user'       => OwenIt\Auditing\Resolvers\UserResolver::class,
        'ip_address' => OwenIt\Auditing\Resolvers\IpAddressResolver::class,
        'user_agent' => OwenIt\Auditing\Resolvers\UserAgentResolver::class,
        'url'        => OwenIt\Auditing\Resolvers\UrlResolver::class,
    ],

    /*
    |--------------------------------------------------------------------------
    | Audit Events
    |--------------------------------------------------------------------------
    |
    | The Eloquent events that trigger an Audit.
    |
    */

    'events' => [
        'created',
        'updated',
        'deleted',
        'restored',
    ],

    /*
    |--------------------------------------------------------------------------
    | Strict Mode
    |--------------------------------------------------------------------------
    |
    | Enable the strict mode when auditing?
    |
    */

    'strict' => false,

    /*
    |--------------------------------------------------------------------------
    | Audit Timestamps
    |--------------------------------------------------------------------------
    |
    | Should the created_at, updated_at and deleted_at timestamps be audited?
    |
    */

    'timestamps' => false,

    /*
    |--------------------------------------------------------------------------
    | Audit Threshold
    |--------------------------------------------------------------------------
    |
    | Specify a threshold for the amount of Audit records a model can have.
    | Zero means no limit.
    |
    */

    'threshold' => 0,

    /*
    |--------------------------------------------------------------------------
    | Audit Driver
    |--------------------------------------------------------------------------
    |
    | The default audit driver used to keep track of changes.
    |
    */

    'driver' => 'database',

    /*
    |--------------------------------------------------------------------------
    | Audit Driver Configurations
    |--------------------------------------------------------------------------
    |
    | Available audit drivers and respective configurations.
    |
    */

    'drivers' => [
        'database' => [
            'table'      => 'audits',
            'connection' => null,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Audit Console
    |--------------------------------------------------------------------------
    |
    | Whether console events should be audited (eg. php artisan db:seed).
    |
    */

    'console' => false,
];

स्टाफ मॉडल

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Notifications\StaffsResetPasswordNotification;
use OwenIt\Auditing\Contracts\Auditable;

class Staff extends Authenticatable implements Auditable
{
    use Notifiable;
    use \OwenIt\Auditing\Auditable;
    protected $guard = 'staff';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password','type'
    ];

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

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

    public function sendPasswordResetNotification($token)
    {
        $this->notify(new StaffsResetPasswordNotification($token));
    }
}

यहाँ मैं डेटाबेस तालिका में देख रहा हूँ:

i

मुझे पता है कि इस मुद्दे को संभालने का कोई आसान तरीका होना चाहिए लेकिन यह सुनिश्चित नहीं है कि कैसे। धन्यवाद

0
Khalil DaNish 8 पद 2019, 08:53

1 उत्तर

सबसे बढ़िया उत्तर

मुझे इसे संभालने का एक आसान तरीका मिला, वास्तव में, मुझे जो जवाब मिला वह GitHub इस समस्या के लिए एक नया कस्टम रिज़ॉल्वर बनाना और config/audit.php से रिज़ॉल्वर वर्ग को बदलना था। वह काम कर रहा था लेकिन आसान तरीका बस उन सभी गार्ड/उपयोगकर्ता प्रकारों को पास करना है जिन्हें आप में config/audit.php में गार्ड के सरणी में ऑडिट करना चाहते हैं। उपयोगकर्ता रूप उपसर्ग और गार्ड अनुभाग। इस तरह:

'user' => [
        'morph_prefix' => 'user',
        'guards'       => [
            'admin',
            'staff',
            'student',
            'api',
        ],
    ],

दूसरा तरीका इस तरह रिज़ॉल्वर को कस्टमाइज़ करना था:

UserResolver वर्ग को "ओवरराइड" करें।

Config/audit.php में:

...
    'resolver' = [
        // ...
        'user' => App\Resolvers\UserResolver::class,
        // ...
    ],
...

ऐप/रिज़ॉल्वर/UserResolver.php में:

  /**
     * {@inheritdoc}
     */
    public static function resolve()
    {
        $guards = config('audit.user.guards'); // I only removed the default array value
        foreach ($guards as $guard) {
            if (Auth::guard($guard)->check()) {
                return Auth::guard($guard)->user();
            }
        }
    }
0
Khalil DaNish 9 पद 2019, 09:24