【问题标题】:Middleware For actions into Controller, Laravel 5.1中间件用于控制器中的操作,Laravel 5.1
【发布时间】:2015-07-09 04:32:27
【问题描述】:

我有一个具有索引方法的控制器,但也有多个级别的用户可以访问此方法,但是单个管理员可以查看数据库的所有记录如何添加中间件以选择相应的操作给用户?我有下一个代码

<?php

namespace SET\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Redirect;
use SET\Http\Requests;
use SET\Http\Requests\LabRequest;
use SET\Http\Controllers\Controller;
use Illuminate\Routing\Route;
use SET\Lab;
use Validator;
use Auth;
use DB;

class LaboratorioController extends Controller
{
public function __construct(){
    $this->beforeFilter('@find', ['only' => ['show','edit','update','destroy']]);
}

public function find(Route $route){
    $this->laboratorio = Lab::findOrFail($route->getParameter('laboratorio'));
}
/**
 * Display a listing of the resource.
 *
 * @return Response
 */

public function index()
{
    $labs = Lab::all();
    return view('comp.lab.index',['labs' => $labs]);
}

/**
 * Show the form for creating a new resource.
 *
 * @return Response
 */
public function create()
{
    return view('comp.lab.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @return Response
 */
public function store(LabRequest $request)
{       Lab::create($request->all());
        Session::flash('message','Laboratorio creado correctamente');
        return Redirect::to('/laboratorio');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return Response
 */
public function show()
{
     $teams = $this->laboratorio;
    return view('comp.lab.show',['lab'=>$this->laboratorio]);
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return Response
 */
public function edit()
{
    return view('comp.lab.edit',['lab'=>$this->laboratorio]);
}

/**
 * Update the specified resource in storage.
 *
 * @param  int  $id
 * @return Response
 */
public function update(LabRequest $request)
{
    $this->laboratorio->update($request->all());
    Session::flash('message','El laboratorio se actualizo correctamente');
    return Redirect::to('/laboratorio');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return Response
 */
public function destroy()
{
    $this->laboratorio->delete();
    Session::flash('message','El laboratorio fue eliminado correctamente');
    return Redirect::to('/laboratorio');
}

谢谢:D

【问题讨论】:

  • 我假设您正在使用具有您权限的某种组系统?为什么不使用它?>
  • 但是如何实现呢?还是将条件单独添加到方法中?想知道用户的等级是多少?

标签: php laravel-5.1 laravel-middleware


【解决方案1】:

这是一个总体思路:

$user_group = $user::get_user_group($user_id)
if($user_group->group_id === 'something'){
    \\method to return data for group 'something'
}

按组获取数据

$user_data = $user::get_data_by_group_id($group_id)

【讨论】:

  • 好的,对于所有级别的用户,我必须将验证纳入索引方法,不存在其他形式,更干净?我认为使用中间件我可以修复它 =(
  • 或者只是从模型中的一种方法获取您需要的组数据...查看编辑
猜你喜欢
  • 2023-03-27
  • 1970-01-01
  • 2015-11-12
  • 2015-11-26
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2016-04-14
  • 2015-11-07
相关资源
最近更新 更多