2016-04-12 17 views
0

Şu anda laravel ile bir web-up yapıyoruz. Yerleşik laravel kimlik doğrulama sistemini kullanıyorum ve kendimi ekledi. Ancak, giriş yaptığınızda kayıt sayfasına ulaşamazsınız. Buradaki şey, sadece yeni kullanıcılar oluşturabilmek için yöneticilerin olmasını istiyorum. Ben çevrimiçi bulunan birçok dersler denedimLaravel 5.2 Auth Kayıt sayfası engellendi

<?php 

namespace App\Http\Controllers\Auth; 

use App\Models\User; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 
use Illuminate\Support\Facades\Auth; 

class AuthController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Registration & Login Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users, as well as the 
    | authentication of existing users. By default, this controller uses 
    | a simple trait to add these behaviors. Why don't you explore it? 
    | 
    */ 

    use AuthenticatesAndRegistersUsers; 

    protected $redirectTo = '/admin'; 

    /** 
    * Create a new authentication controller instance. 
    * 
    * @param \Illuminate\Contracts\Auth\Guard $auth 
    * @param \Illuminate\Contracts\Auth\Registrar $registrar 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

    public function getRegister() 
    { 
     return redirect('/'); 
    } 

    public function postRegister() 
    { 
     return redirect('/'); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|confirmed|min:6', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 
     return User::create([ 
      'name' => $data['name'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 

    /** 
    * Returns either ADMIN or USER based on user's rank 
    * Returns false if user is not logged in 
    */ 
    public static function getType() 
    { 
     if (Auth::check()) { 
      return Auth::user()->type; 
     } 
     else { 
      return false; 
     } 
    } 
} 

Route::group(['middleware' => ['web']], function() { 
    Route::get('login', ['as' => 'auth.login', 'uses' => 'Auth\[email protected]']); 
    Route::post('login', ['as' => 'auth.login', 'uses' => 'Auth\[email protected]']); 
    Route::get('logout', ['as' => 'auth.logout', 'uses' => 'Auth\[email protected]']); 

// Password Reset Routes... 
    Route::get('password/reset/{token?}', ['as' => 'auth.password.reset', 'uses' => 'Auth\[email protected]']); 
    Route::post('password/email', ['as' => 'auth.password.email', 'uses' => 'Auth\[email protected]']); 
    Route::post('password/reset', ['as' => 'auth.password.reset', 'uses' => 'Auth\[email protected]']); 

    Route::get('/home', '[email protected]'); 
}); 

Route::group(['middleware' => ['CheckAdmin']], function() { 
    // Registration Routes... 
    Route::get('/register', 'Auth\[email protected]'); 
    Route::post('/register', 'Auth\[email protected]'); 
}); 

Benim AuthController, ama benim için bu işin ne biri:

My yolları. Benim için bir çözüm var mı? Şimdiden teşekkürler!

+0

var sen 'middleware' yöneticisi oluşturun:

Route::group(['middleware' => 'web'], function() { //here }); 

sahip her kontrolöre bu eklensin mi? –

+0

Evet, CheckAdmin denir. Cevap için –

cevap

1

eklemek için bu birkaç şey deneyin:

public function handle($request, Closure $next) 
    { 
    if (Auth::check() && Auth::user()->isAdmin()) 
    { 
     return $next($request); 
    } 
    return redirect('/home'); 
} 

Sonra $ routeMiddleware altında Kernel.php için bu satırı ekleyin:

'admin' => \App\Http\Middleware\Admin::class, 

koyun Yönetici yolları

ile Yönetici ortakatmanını oluştur içinde:

Route::group(['middleware' => ['auth', 'admin']], function() { 
    //here 
}); 

Bu

Diğer yolları burada katman => Web grup içinde gider:

public function __construct() { $this->middleware('auth'); } 
+0

teşekkürler, Ancak bildiği gibi bu ekleme, bildiğim kadarıyla iyi çalışır: 'kamu fonksiyonu __construct() {$ this-> ortakatmanını ('auth'); } ' , web sitesini ziyaretçilere kilitler veya çıkış yapar kapatmaz. Şimdi üye olarak kayıt sayfasına ulaşabildim –

+0

Yolları karıştırmayı deneyin. Sen benim kahramanımsın –

+0

yönetici grup yolları da dahil olmak üzere her yol, ara katman web grubunda olmalı! Bu beni doğru yolda yakaladı! AuthController.php ben sadece bu kadar yapıcı değiştirmek zorunda: 'kamu fonksiyonu __construct() { $ this-> ortakatmanını ('CheckAdmin' [ 'hariç' => 'çıkış']); } ' –