2015-10-27 14 views
5

मैं Laravel के एक विक्रेता फ़ाइलप्रमाणीकरण कक्षा Laravel (का विस्तार गार्ड श्रेणी)

पर रखा /vendor/laravel/framework/src/Illuminate/Auth/Guard.php

संशोधित किया था करने के लिए कस्टम समारोह जोड़ें

लेकिन यह लैरावेल को अद्यतन करने पर ओवरराइट किया जाएगा।

मैं ओवरराइट को रोकने के लिए कोड को अपने/ऐप में कहीं भी रखने का एक तरीका ढूंढ रहा हूं।

समारोह संशोधित

public function UpdateSession() { 
    $this->session->set('type', $type); //==> Set Client Type 
} 

इसके अलावा वहाँ फ़ाइल पर एक नया कार्य है:

public function type() { 
    return $this->session->get('type'); //==> Get Client Type 
} 

ऊपर कोड अपने आवेदन में कई स्थानों पर कहा जाता है।

कोई विचार?

+0

उपयोग कर सकते हैं आप एक विधि आप एक वर्ग है कि गार्ड वर्ग प्रदान करता है और * तो * विधि ओवरराइड बनाने चाहिए, और उपयोग ओवरराइड करने के लिए चाहते हैं कि अपने ऐप में कक्षा। आपको सीधे लैरवेल स्रोत कोड से गड़बड़ नहीं करनी चाहिए। –

उत्तर

6

कदम::
1- AppServiceProvider में myGuard.php

class myGuard extends Guard 
{ 
    public function login(Authenticatable $user, $remember = false) 
    { 
     $this->updateSession($user->getAuthIdentifier(), $user->type); 
     if ($remember) { 
      $this->createRememberTokenIfDoesntExist($user); 
      $this->queueRecallerCookie($user); 
     } 
     $this->fireLoginEvent($user, $remember); 
     $this->setUser($user); 
    } 

    protected function updateSession($id, $type = null) 
    { 
     $this->session->set($this->getName(), $id); 
     $this->session->set('type', $type); 
     $this->session->migrate(true); 
    } 

    public function type() 
    { 
     return $this->session->get('type'); 
    } 
} 

2- बना सकते हैं या नई सेवा प्रदाता या routes.php

आप सत्र तक पहुँचने अपने आप को कई तरीके है :

public function boot() 
{ 
    Auth::extend(
     'customAuth', 
     function ($app) { 
      $model = $app['config']['auth.model']; 
      $provider = new EloquentUserProvider($app['hash'], $model); 
      return new myGuard($provider, App::make('session.store')); 
     } 
    ); 
} 

3- config/auth में। php

'driver' => 'customAuth', 

अब 4- आप इस

Auth::type(); 
+0

माईगार्ड को कैसे शामिल किया जाना चाहिए? मेरे पास यह एक "एक्सटेंशन" फ़ोल्डर है। लेकिन "/ ऐप \ एक्सटेंशन \ MyGuard का उपयोग करें;" AppServiceProvider में यह नहीं मिला है। माईगार्ड फ़ाइल में, मैंने "इल्यूमिनेट \ एथ \ सत्रगार्ड का उपयोग किया है; रोशनी \ अनुबंध \ Auth \ Guard का उपयोग करें;" लेकिन मुझे भी यकीन नहीं है। – Olivvv

0

ऐसा लगता है कि आपको गार्ड को अपडेट करने की आवश्यकता नहीं है। जहां तक ​​मैं देख सकता हूं कि आप केवल सत्र से डेटा पुनर्प्राप्त करने का प्रयास कर रहे हैं। और यह निश्चित रूप से गार्ड के लिए कोई व्यवसाय नहीं है।

// via Session-Facade 
$type = Session::get('type'); 
Session::put('type', $type); 

// via Laravels helper function 
$type = session('type'); // get 
session()->put('type', $type); // set 
session(['type' => $type']); // alternative 
संबंधित मुद्दे