error(__('auth.failed')); } $table = Invite::select(['id','user_uid','email', 'status','created_at','updated_at']); switch ($request->get('view')) { case 'studio': if(empty($request->get('studio'))){ return $this->error(__('auth.failed')); } //判断当前用户是否有指定的studio的权限 if($user['user_uid'] !== StudioApi::getIdByName($request->get('studio'))){ return $this->error(__('auth.failed')); } $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')."%"); } $count = $table->count(); $table = $table->orderBy($request->get('order','updated_at'), $request->get('dir','desc')); $table = $table->skip($request->get('offset',0)) ->take($request->get('limit',1000)); $result = $table->get(); return $this->ok(["rows"=>InviteResource::collection($result),"count"=>$count]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // $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('email.exists',__('validation.exists',['email']),200); } $uuid = Str::uuid(); Mail::to($request->get('email')) ->send(new InviteMail($uuid, $request->get('subject','sign up wikipali'), $request->get('lang'), $request->get('dashboard'))); if(Mail::failures()){ return $this->error('send email fail', '',200); }else{ $invite = new Invite; $invite->id = $uuid; $invite->email = $request->get('email'); $invite->user_uid = $sender; $invite->status = 'invited'; $invite->save(); } return $this->ok(new InviteResource($invite)); } /** * Display the specified resource. * * @param \App\Models\Invite $invite * @return \Illuminate\Http\Response */ public function show(Invite $invite) { // return $this->ok(new InviteResource($invite)); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Invite $invite * @return \Illuminate\Http\Response */ public function update(Request $request, Invite $invite) { // } /** * Remove the specified resource from storage. * * @param \App\Models\Invite $invite * @return \Illuminate\Http\Response */ public function destroy(Invite $invite) { // } }