gpt4 book ai didi

php - How do you say Laravel如果线程属于这个用户,让他

转载 作者:行者123 更新时间:2023-12-03 12:59:53 26 4
gpt4 key购买 nike

我正在使用Laravel Framework做博客,并且已经准备好登录/注册和线程部分。如果您已登录,那么在我的Blog中您只能编辑一个线程。现在,我遇到的问题是,如果我已登录,则可以编辑和删除每个线程。不管是我的线程还是来自其他用户。好吧,现在我需要说些我的Laravel代码,我才可以编辑/创建自己的线程。

我发现了这个:https://laravel.com/docs/5.2/authorization#defining-abilities

但是我真的不明白如何将其实现到我的代码中。我的数据库中是否需要任何引用?像这个用户属于这个线程?

好吧,我是laravel的新人。我希望有人能帮助我

PS:对不起,我的英语不好,我来自德国。

编辑/更新/删除功能:

public function edit($id)
{
$thread = Thread::query()->findOrFail($id);
return view('test.edit', [
'thread' => $thread
]);
}

public function update($id, StoreRequest $request)
{
$thread = Thread::query()->findOrFail($id);
$thread->fill($request->all());
$thread->save();
return redirect(action('Test\\TestController@show', [$thread->id]));
}

public function destroy($id)
{
$thread = Thread::query()->findOrFail($id);
$thread->delete();
return redirect(action("Test\\TestController@index"));
}

我的线程模型:
public function user() {
return $this->belongsTo(User::class, "name");
}

我如何添加新线程:

如果按“添加线程”,我将直接进入我的 Controller 中的添加功能:

增加功能:
public function add()
{
return view('test.add', [
'entries' => Thread::query()->get()
]);
}

在我的add.blade中,有我的公式器,该公式器将我定向到 Controller 中的“存储函数”:

存储功能:
public function store(StoreRequest $request)
{
Thread::create($request->all());
return redirect(action('Test\\TestController@index'));
}

最佳答案

您可以将user_id附加到线程上,因此无论何时要更新或删除,都请检查当前登录的用户是否具有该user_id,然后进行相应的操作。

user_id 添加到线程表中

然后在您的save function()中执行此操作。

public function save(Request $request){
$thread = new Thread;
$thread->user_id = Auth::user()->id;
// rest of fields goes here
$thread->save();
}

然后在您的编辑,更新或删除功能中
public function edit($id)
{
$thread = Thread::query()->findOrFail($id);

// You can use laravel authorization/policies to achieve this too
if($thread->user_id != Auth::user()->id){
// Return to view with your custom error message telling
// the user he is not authorized to edit this thread
}

return view('test.edit', [
'thread' => $thread
]);
}

public function update($id, StoreRequest $request)
{
$thread = Thread::query()->findOrFail($id);

// You can use laravel authorization/policies to achieve this too
if($thread->user_id != Auth::user()->id){
// Return to view with your custom error message telling
// the user he is not authorized to edit this thread
}

$thread->fill($request->all());
$thread->save();
return redirect(action('Test\\TestController@show', [$thread->id]));
}

public function destroy($id)
{
$thread = Thread::query()->findOrFail($id);

// You can use laravel authorization/policies to achieve this too
if($thread->user_id != Auth::user()->id){
// Return to view with your custom error message telling
// the user he is not authorized to delete this thread
}

$thread->delete();
return redirect(action("Test\\TestController@index"));
}

关于php - How do you say Laravel如果线程属于这个用户,让他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com