Browse Source

Merge pull request #2075 from visuddhinanda/laravel

允许管理员修改课程信息
visuddhinanda 1 year ago
parent
commit
f1a86b0b6c
2 changed files with 25 additions and 2 deletions
  1. 17 2
      app/Http/Controllers/CourseController.php
  2. 8 0
      app/Http/Resources/CourseResource.php

+ 17 - 2
app/Http/Controllers/CourseController.php

@@ -209,6 +209,19 @@ class CourseController extends Controller
 
     }
 
+    private function userCanManage($courseId,$userUid){
+                    //判断是否是manager
+        $role = CourseMember::where('course_id',$courseId)
+                    ->where('is_current',true)
+                    ->where('user_id',$userUid)
+                    ->value('role');
+        $manager = ['owner','teacher','manager'];
+        if(in_array($role,$manager)){
+            return true;
+        }
+        return false;
+    }
+
     /**
      * Update the specified resource in storage.
      *
@@ -224,9 +237,11 @@ class CourseController extends Controller
             return $this->error(__('auth.failed'));
         }
         //判断当前用户是否有指定的studio的权限
-        if($user['user_uid'] !== $course->studio_id){
-            return $this->error(__('auth.failed'));
+        $canManage = $this->userCanManage($course->id,$user['user_uid']);
+        if(!$canManage){
+            return $this->error(__('auth.failed'),403,403);
         }
+
         //查询标题是否重复
         if(Course::where('title',$request->get('title'))
                 ->where('studio_id',$user['user_uid'])

+ 8 - 0
app/Http/Resources/CourseResource.php

@@ -53,6 +53,14 @@ class CourseResource extends JsonResource
                                         ->where('is_current',true)
                                         ->select(['role','status'])
                                         ->get();
+        $user = AuthApi::current($request);
+        if($user){
+            $data['my_role'] = CourseMember::where('course_id',$this->id)
+                                            ->where('is_current',true)
+                                            ->where('user_id',$user['user_uid'])
+                                            ->value('role');
+        }
+
         if($this->cover){
             $thumb = str_replace('.jpg','_m.jpg',$this->cover);
             if (App::environment('local')) {