فهرست منبع

支持管理员查看全部

visuddhinanda 2 سال پیش
والد
کامیت
648f1a7414
1فایلهای تغییر یافته به همراه30 افزوده شده و 13 حذف شده
  1. 30 13
      app/Http/Controllers/InviteController.php

+ 30 - 13
app/Http/Controllers/InviteController.php

@@ -6,6 +6,7 @@ use App\Models\Invite;
 use App\Models\UserInfo;
 use Illuminate\Http\Request;
 use App\Http\Api\AuthApi;
+use App\Http\Api\UserApi;
 use App\Http\Api\StudioApi;
 use App\Http\Resources\InviteResource;
 use Illuminate\Support\Str;
@@ -22,12 +23,15 @@ class InviteController extends Controller
     public function index(Request $request)
     {
         //
+        $user = AuthApi::current($request);
+        if(!$user){
+            return $this->error(__('auth.failed'));
+        }
         $table = Invite::select(['id','user_uid','email',
                                  'status','created_at','updated_at']);
         switch ($request->get('view')) {
             case 'studio':
-                $user = AuthApi::current($request);
-                if(!$user){
+                if(empty($request->get('studio'))){
                     return $this->error(__('auth.failed'));
                 }
                 //判断当前用户是否有指定的studio的权限
@@ -36,6 +40,12 @@ class InviteController extends Controller
                 }
                 $table = $table->where('user_uid', $user["user_uid"]);
                 break;
+            case 'all':
+                $user = UserApi::getByUuid($user['user_uid']);
+                if(!$user || !isset($user['roles']) || !in_array('administrator',$user['roles']) ){
+                    return $this->error(__('auth.failed'));
+                }
+                break;
         }
         if($request->has('search')){
             $table = $table->where('email', 'like', '%'.$request->get('search')."%");
@@ -60,31 +70,38 @@ class InviteController extends Controller
     public function store(Request $request)
     {
         //
-        $user = AuthApi::current($request);
-        if(!$user){
-            return $this->error(__('auth.failed'));
-        }
-        //判断当前用户是否有指定的studio的权限
-        $studio_id = StudioApi::getIdByName($request->get('studio'));
-        if($user['user_uid'] !== $studio_id){
-            return $this->error(__('auth.failed'));
+        $sender = '';
+        if(!empty($request->get('studio'))){
+            $user = AuthApi::current($request);
+            if(!$user){
+                return $this->error(__('auth.failed'),401,401);
+            }
+            //判断当前用户是否有指定的studio的权限
+            $studio_id = StudioApi::getIdByName($request->get('studio'));
+            if($user['user_uid'] !== $studio_id){
+                return $this->error(__('auth.failed'));
+            }
+            $sender = $studio_id;
+        }else{
+            $sender = config("mint.admin.root_uuid");
         }
+
         //查询是否重复
         if(Invite::where('email',$request->get('email'))->exists() ||
             UserInfo::where('email',$request->get('email'))->exists()){
-            return $this->error(__('validation.exists',['email']),[],200);
+            return $this->error('email.exists',__('validation.exists',['email']),200);
         }
 
         $uuid = Str::uuid();
         Mail::to($request->get('email'))
             ->send(new InviteMail($uuid,$request->get('lang'),$request->get('dashboard')));
         if(Mail::failures()){
-            return $this->error('send email fail',[],200);
+            return $this->error('send email fail', '',200);
         }else{
             $invite = new Invite;
             $invite->id = $uuid;
             $invite->email = $request->get('email');
-            $invite->user_uid = $user['user_uid'];
+            $invite->user_uid = $sender;
             $invite->status = 'invited';
             $invite->save();
         }