title: Laravel controllers with roles
body: <p>I have an application which will be a SaaS and is utilizing user roles. Of course, controllers will need to forward different data depending on user roles or permissions, however I think this approach may lead me to huge controllers and I was wondering if there is a smarter way to do this? For example my user create method:</p>
  
  <pre><code>public function create()
  {
      if (Auth::user()-&gt;isAdmin()) {
          $clinics = Clinic::pluck('name', 'id');
          $roles = Role::pluck('display_name', 'id');
      }
      else{
          $clinics = Clinic::where('id', Auth::user()-&gt;clinic_id)-&gt;get()-&gt;pluck('name', 'id');
          $roles = Role::where('name', '!=', 'admin')-&gt;get()-&gt;pluck('display_name', 'id');
      }
  
      $states = State::pluck('name', 'id');
      $cities = City::pluck('name', 'id');
  
      return view('users.create', compact('user', 'clinics', 'states', 'cities', 'roles'));
  }
  </code></pre>
  
  <p>Which is okay now when I only implemented admin and non-admin user, but when roles get complicated, is there a cleaner way to assemble this?</p>