소스 검색

文件审批

lsm12139 1 개월 전
부모
커밋
879c02a9ef

+ 0 - 3
app/Http/Requests/API/Approval/CreateOrUpdateRequest.php

@@ -42,7 +42,6 @@ class CreateOrUpdateRequest extends FormRequest
                     function ($attribute, $value, $fail) {
                         $exist = ApprovalObjectType::from($this->get("object_type"))
                             ->modelBuilderAllowed($value)
-                            ->where("company_id", Auth::user()->company_id)
                             ->where('id', $value)
                             ->count();
                         if (! $exist) {
@@ -54,7 +53,6 @@ class CreateOrUpdateRequest extends FormRequest
                     'array',
                     function ($attribute, $value, $fail) {
                         $count = File::query()
-                            ->where("company_id", Auth::user()->company_id)
                             ->whereIn('id', $value)
                             ->where("object_type", FileObjectType::CONTAINER)
                             ->where("object_id", $this->get("object_id"))
@@ -69,7 +67,6 @@ class CreateOrUpdateRequest extends FormRequest
                     'required',
                     function ($attribute, $value, $fail) {
                         $exist = ApprovalFlow::query()
-                            ->where("company_id", Auth::user()->company_id)
                             ->where('id', $value)
                             ->where('status', 1)
                             ->count();

+ 1 - 1
app/Models/Enums/ObjectApprovalStatus.php

@@ -4,7 +4,7 @@ namespace App\Models\Enums;
 
 enum ObjectApprovalStatus: string
 {
-    case WAIT = 'wait'; //未开始
+    case WAIT = 'pending'; //未开始
 
     case DOING = 'doing'; //进行中
 

+ 12 - 1
app/Models/Scopes/CompanyScope.php

@@ -2,6 +2,7 @@
 
 namespace App\Models\Scopes;
 
+use App\Models\Company;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Scope;
@@ -13,7 +14,17 @@ class CompanyScope implements Scope
     public function apply(Builder $builder, Model $model): void
     {
         if (Auth::user()) {
-            $builder->where($model->getTable() . '.company_id', '=', Auth::user()->company_id);
+//            $builder->where($model->getTable() . '.company_id', '=', Auth::user()->company_id);
+            if (Auth::user()->super_admin || Auth::user()->company_admin) {
+                $company = Company::query()
+                    ->where('id',Auth::user()->company_id)
+                    ->orWhere("parent_id", Auth::user()->company_id)
+                    ->pluck("id");
+                $builder->whereIn($model->getTable() . '.company_id', $company->toArray());
+            }else{
+                $builder->where($model->getTable() . '.company_id', '=', Auth::user()->company_id);
+            }
         }
+
     }
 }

+ 16 - 1
app/Models/User.php

@@ -88,11 +88,26 @@ class User extends Authenticatable
             get: fn() => $this->role_id == config("auth.super_admin_role_id"),
         );
     }
+    protected function companyAdmin(): Attribute
+    {
+        return Attribute::make(
+            get: fn() => $this->role_id == config("auth.company_admin_role_id"),
+        );
+    }
 
     public function scopeAllowed(Builder $query)
     {
         if (!Auth::user()->super_admin) {
-            $query->where("company_id", Auth::user()->company_id);
+            if (Auth::user()->company_admin){
+                $company = Company::query()
+                    ->where('id',Auth::user()->company_id)
+                    ->orWhere("parent_id", Auth::user()->company_id)
+                    ->pluck("id");
+                $query->whereIn("company_id", $company->toArray());
+            }else{
+                $query->where("company_id", Auth::user()->company_id);
+            }
+
         }
     }
 

+ 2 - 0
config/auth.php

@@ -118,4 +118,6 @@ return [
 
     'super_admin_role_id' => env( 'SUPER_ADMIN_ROLE_ID', 1 ),
 
+    'company_admin_role_id' => env( 'COMPANY_ADMIN_ROLE_ID', 1 ),
+
 ];