2017-09-03 11 views
0

사용자가 인증 된 후에 전역 변수를 설정하고 싶습니다. 전화 번호는 permissions입니다. 변수는 컨트롤러와 뷰에서 사용할 수 있어야합니다.Laravel에서 사용자 권한 부여 후 전역 권한 변수 만들기

달성하기 가장 좋은 방법은 무엇입니까? 이제는 각 방법에서 데이터베이스 쿼리를 수행하고 최적이 아닌 사용자 역할을 확인해야합니다.

appserviceprovider에서 view::share 메서드를 사용하여 뷰에 변수를 전달할 수 있다고 선언 할 수 있지만 사용자가 인증 된 후에는 부팅 방법이 수행됩니다.

업데이트

내가 컨트롤러에서 확장 BaseController을 만들었습니다.

BaseController :

class BaseController extends Controller { 

    public $permissions; 

    public function __construct() { 
     $this->permissions = GroupRoles::where('id', Auth::user()->id)->first(); 
    } 

} 

가 그럼 난 BaseController에서 확장 UserController에서 권한 변수에 액세스하려고 해요. 비 객체 접근을 얻는 방법. BaseController 생성자가 미들웨어보다 먼저 생성 되었기 때문이라고 생각합니다.

class UserController extends BaseController { 

    public function showPermissions() { 
    return var_dump($this->permissions); 
    } 

} 

최종 솔루션은

초석은 BaseController에 $this->middleware(function ($request, $next)을 사용하는 것이 었습니다.

답변

0

그런 다음이 $this->permissions

+0

처럼 모든 컨트롤러에서 액세스 할 수있는 컨트롤러 내에서 그것을 시도하거나 자신의 BaseController는 다음에서 컨트롤러를 확장 만들고 BaseController에서이

public $permissions; public function __construct() { $permissions = Permissions::all() //For example $this->permissions = $permissions } 

처럼 할 수 BaseController와 생성자를 생성했습니다. 하지만 여전히 UserController에서 사용 권한 변수에 액세스 할 수 없습니다. 나는 그 이상으로 뭔가를해야한다고 생각합니다. 왜냐하면'객체가 아닌 객체의 속성을 얻으려고 시도 중 '오류가 발생하기 때문입니다. 따라서 문제는 여전히 인증에 연결되어 있습니다. –

+0

하지만 패키지에서 permission을 설정하려고합니까? 사용자 컨트롤러는 BaseController를 확장해야 얻을 수 있습니다. 또는 먼저 생성자에서 var를 덤프하여 원하는 데이터가 있는지 확인할 수 있습니다. –

+0

UserController는 BaseController를 확장합니다. BaseController는 컨트롤러를 확장합니다. Auth 메서드가로드되기 전에 생성 메서드가 호출되었거나 호출하는 방법을 모르기 때문에이 오류가 발생합니다. BaseController는 생성자에 다음 코드를 가지고 있습니다 :'$ this-> permissions = GroupRoles :: where ('id', Auth :: user() -> id) -> first(); ' –