2016-08-17 3 views
0

필자는 래버 프로젝트에 대한 인증 코드를 생성하기 위해 스캐 폴딩 도구를 사용했습니다. 나는 위대한 작품을 프로필 페이지를 만들기 위해 UserController을 생성하지만 인증 : 사용자에 사용할 수있는 기능을 만들려고 할 때() 오류가 발생합니다 Call to undefined method Illuminate\Database\Query\Builder::admin()Auth :: user()에서 컨트롤러 기능에 액세스합니다.

왜에없는 관리자 기능에 액세스 할 Auth :: user()? 내 UserController를 확장하지 않습니까? 아니면 내가 모델과 혼합하고 있습니까? 내 모델이 관리자인지 확인하기 좋은 모델입니까?

은 여기 내 사용자 컨트롤러

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Auth; 
use App\Http\Requests; 

class UserController extends Controller 
{ 

    /** 
    * Create a new user controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    /** 
    * @return View with user data 
    */ 
    public function index() { 
     $user = Auth::user(); 

     return view('users.index', compact('user')); 
    } 

    /** 
    * @return bool 
    * Returns bool if the user is an admin. 
    */ 
    public function admin() { 
     $user = Auth::user(); 

     $authorized_users = [ 
      '[email protected]' 
     ]; 

     return array_key_exists($user->email, $authorized_users); 
    } 
} 

내가 다른 경로 제어 기능

public function index() { 
    return Auth::user()->admin(); 
} 

내가 laravel 상당히 새로운 오전 PHP 그래서 어떤 비판은 가치 있고 원입니다 그것을 호출 오전!

답변

0

아니요, Auth::user()Controller을 확장하지 않습니다. 현재 로그인/인증 된 사용자의 인스턴스를 나타냅니다. id, name 등 등의 다른 속성을 검색 할 수 있습니다. 어떤 의미가 없습니다. Auth::user()UserController 또는 다른 컨트롤러와 아무 관련이 없습니다.

+0

오케이. 그것은 실제로 의미가 있습니다. 더럽. 올바른 방법은 어떤 유형의 도우미 함수를 만드는 것입니다. 내보기에 대해 isAdmin 함수에 액세스하려고합니다. – Luca

+0

예 헬퍼를 사용하면 맞춤 함수를 정의하는 올바른 방법입니다. 커스텀 도우미를 만들기위한 좋은 튜토리얼 (http://www.tutorials.kode-blog.com/laravel-5-custom-helper) – jonju

관련 문제