|
@@ -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());
|
|
|
}
|
|
|
|