ソースを参照

项目编辑校验团队用户是否被限制

kely 8 ヶ月 前
コミット
81756ea158
2 ファイル変更8 行追加3 行削除
  1. 2 1
      app/Http/Controllers/API/ProjectController.php
  2. 6 2
      app/Models/Project.php

+ 2 - 1
app/Http/Controllers/API/ProjectController.php

@@ -169,7 +169,8 @@ class ProjectController extends Controller
      */
     public function update(CreateOrUpdateRequest $request, string $id)
     {
-        $project = Project::allowed($id)->findOrFail($id);
+        $isAction=true;
+        $project = Project::allowed($id,$isAction)->findOrFail($id);
 
         $project->fill([
             ...$request->all(),

+ 6 - 2
app/Models/Project.php

@@ -4,6 +4,7 @@ namespace App\Models;
 
 use App\Models\Enums\ProjectACL;
 use App\Models\Scopes\CompanyScope;
+use function DragonCode\Support\Instances\when;
 use EloquentFilter\Filterable;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -31,11 +32,15 @@ class Project extends Model
      * @param string $id 单个操作时使用,限制范围
      * @return void
      */
-    public function scopeAllowed(Builder $query, string $id = null): void
+    public function scopeAllowed(Builder $query, string $id = null,bool $isAction=false): void
     {
         $projectIds = Project::query()->leftJoin("team_members", "projects.id", "=", "team_members.project_id")
             ->when($id == null, fn($query) => $query->filter(request()->query()))
+            ->when($isAction===false,fn($query)=>$query->filter(request()->query()))
             ->when($id, fn($query) => $query->where("projects.id", $id))
+            ->when($isAction,fn($query)=>$query->where(function ($query){
+                 $query->where("team_members.user_id", Auth::id())->where('team_members.limited',1);
+            }))
             ->where(function ($query) {
                 $query->where("team_members.user_id", Auth::id())
                     ->orWhere(fn($query) => $query->where("projects.acl", ProjectACL::CUSTOM->value)->where("whitelist", "like", "%,".Auth::id().",%"));
@@ -43,7 +48,6 @@ class Project extends Model
             ->pluck("projects.id")
             ->unique();
 
-
         $query->whereIn("id", $projectIds->toArray());
     }