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