【发布时间】:2019-09-12 05:13:47
【问题描述】:
我正在使用 Laravel Spatie 为我的 api 提供用户权限。版本是 Laravel-5.8。
订单控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Order;
use App\User;
use App\Student;
use App\Guardian;
class OrderController extends Controller
{
public function index(Request $request)
{
if(!Auth::user()->hasPermissionTo('View Order'))
return response()->json([ "message" => 'User do not have permission'], 401);
return response()->json(::with('order_detail')->get(), 200);
}
public function store(Request $request)
{
if(!Auth::user()->hasPermissionTo('Add Order'))
return response()->json([ "message" => 'User do not have permission'], 401);
$request->validate([
'week_day' => 'required|integer',
'start' => 'required',
'end' => 'required',
'amount' => 'required',
'full_name' => 'required'
]);
$orders = Order::create($request->all());
return json_encode($orders);
}
public function show($id)
{
if(!Auth::user()->hasPermissionTo('View Order'))
return response()->json([ "message" => 'User do not have permission'], 401);
return json_encode(Order::findOrFail($id));
}
}
api.php
Route::group([
'middleware' => 'auth:api'
], function () {
Route::get('order/mobile', 'OrderController@mobile');
Route::resource('order', 'OrderController', ['only' => ['index', 'show', 'store', 'update', 'destroy']]);
});
我希望访问该站点的任何人都能够创建、存储和发送订单,而无需登录。但是,索引、更新和删除需要权限。不应该有这样的许可。如何调整我的控制器和 api.php 以实现创建和存储订单的预期结果?
【问题讨论】: