首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使/ user /8/ to /79在不允许用户访问所有课程的情况下工作?

如何使/ user /8/ to /79在不允许用户访问所有课程的情况下工作?
EN

Stack Overflow用户
提问于 2014-04-25 21:21:45
回答 5查看 50关注 0票数 0

我有两个模型:一个用户模型和一个教训模型。用户到课是一对多的关系。我在用户和课程模型中定义了这个hasMany关系。

本质上,我想把用户限制在他们的课程上;用户8不应该能够访问用户7的课程。

然而,这是行不通的:

代码语言:javascript
复制
return User::find($userId)->lessons()->where('id',$id);

我不想说

代码语言:javascript
复制
return Lessons::find($lessonId)

因为这意味着任何用户都可以对另一个用户的课程做任何事情。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-04-25 21:58:57

代码语言:javascript
复制
public function show($userId, $lessonId)
{
    $lesson = Lesson::find($lessonId);
    if($lesson->user_id == $userId)
    {
        return $lesson;
    } else {
        return "You don't have access!";
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-25 21:40:13

我想你想要的是一个过滤器

代码语言:javascript
复制
Route::filter('userlessons', function($route, $request)
{
    // there's probably a better way to get the values from the request,
    // but I couldn't find it
    //
    $uid = $request->segment(2);
    $lid = $request->segment(4);

    // check user ID & lesson values - not sure how you want to test this;
    // I just made something up here
    //
    if(!User::find($uid)->lessons->contains($lid))
        throw new NotAuthorizedException("You can't do that!");
});



Route::get("user/{uid}/lesson/{lid}", array("before"=>"userlessons", function($uid, $lid){

    return "That user can access that lesson!";

}));
票数 2
EN

Stack Overflow用户

发布于 2014-04-25 21:27:54

要获得与给定用户相关的经验教训,请使用dynamic属性:

代码语言:javascript
复制
$user = User::find($userId);
$lessons = $user->lessons

确保在用户模型中具有hasMany关系

代码语言:javascript
复制
public function lessons(){

    return $this->hasMany('lesson');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23303286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档