Разрешения в контроллере только на определенные функции - PullRequest
0 голосов
/ 18 марта 2019

Можете ли вы сказать мне, как скрыть определенные столбцы, когда пользователь имеет разные разрешения

в представлении

<table id="student_table" class="table table-bordered" style="width:100%">
  <thead>
    <tr>
      <th>Дата/час</th>
      <th>Отвес блок 1</th>
      <th>Отвес блок 2</th>
      <th>Отвес блок 3</th>
      <th>Отвес блок 4</th>
      <th>Филтрация блок 1</th>
      <th>Филтрация блок 2</th>
      <th>КВН<br>граница: над 814<br> [m]</th>
      <th>Кота дренажен кладенец 1</th>
      <th>Ниво дренажен кладенец 2</th>
      @can('role-1')
      <th>created_at</th>
      <th>updated_at</th>
      <th>author</th>
      <th width="15%">Action</th>
      <th width="2.5%">
          <button type="button" name="bulk_delete" id="bulk_delete" class="btn btn-danger btn-xs">
            <i class="glyphicon glyphicon-remove"></i>
          </button>
        </th>
      @endcan
      </tr>
    </thead>
  </table>

в контроллере

class AjaxdataController extends Controller
{

  function __construct()
  {
   $this->middleware('permission:role-1', ['only' => ['getdata']]);
  }

  function getdata(Request $request)
  {
    $start_date = date('d-m-Y 00:00:00');
    $end_date = date('d-m-Y 23:59:59');
    if($request->start_date != '' && $request->end_date != '')
    {
      // if user fill dates
      $dateScope = array($request->start_date ." 00:00:00", $request->end_date ." 23:59:59");
    } else {
      // default load page - today
      $dateScope = array($start_date, $end_date);
    };
    $students = otv_fil::whereBetween('timestamp', $dateScope)
    ->selectRaw('timestamp,blok9osx,blok9osy,blok11osx,blok11osy,filblok10,filblok11,cvn,ndk,ndk - ? as ndk2,created_at,updated_at,author,id',[743.38])
    ->orderBy('timestamp', 'ASC')
    ->get();
    return Datatables::of($students)
    ->addColumn('action', function($student){
      return '<a href="#" class="btn btn-xs btn-primary edit" id="'.$student->id.'"><i class="glyphicon glyphicon-edit"></i> Edit</a><a href="#" class="btn btn-xs btn-danger delete" id="'.$student->id.'"><i class="glyphicon glyphicon-remove"></i> Delete</a>';
    })
    ->addColumn('checkbox', '<input type="checkbox" name="student_checkbox[]" class="student_checkbox" value="{{$id}}" />')
    ->rawColumns(['checkbox','action'])
    ->make(true);
  }
}

Проблемаявляется то, что я не знаю, как сказать в конструкторе, что разрешение только для столбцов в getdata.Есть ли способ разделить функцию или аналогичный способ?

В этот момент, когда пользователь не имеет разрешения на странице, страница загружается с ошибкой jquery Uncaught TypeError: Cannot read property 'style' of undefined В примере я копирую только одну функцию, естьболее одной функции в полном коде

...