From 3f5c0f6dabc92cbce752544245cc671dad7c7f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=86=E3=82=AF=E3=83=8B=E3=82=AB=E3=83=AB=E8=AB=8F?= =?UTF-8?q?=E8=A8=AA=E5=AD=90?= Date: Tue, 16 Nov 2021 20:24:19 +0900 Subject: [PATCH 1/2] param --- backend/app/Http/Controllers/Api/MeetingsController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/app/Http/Controllers/Api/MeetingsController.php b/backend/app/Http/Controllers/Api/MeetingsController.php index adf9383a..56578979 100644 --- a/backend/app/Http/Controllers/Api/MeetingsController.php +++ b/backend/app/Http/Controllers/Api/MeetingsController.php @@ -58,14 +58,15 @@ class MeetingsController extends Controller { Storage::disk('public')->put($filename, $pdf); } - Meeting::create($insert); + $id = Meeting::create($insert); + $params = ['meeting_id' => $id]; } catch (\Throwable $e) { // 失敗 Log::critical($e->getMessage()); return ['status_code' => 400, 'error_messages' => ['ミーティングの登録に失敗しました。']]; } - return ['status_code' => 200, 'success_messages' => ['ミーティングの登録に成功しました。']]; + return ['status_code' => 200, 'success_messages' => ['ミーティングの登録に成功しました。'], 'params' => $params]; } public function registerFavorite (Request $r) { From c78754f44f54ba7471bb904310513f3cc8638bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=86=E3=82=AF=E3=83=8B=E3=82=AB=E3=83=AB=E8=AB=8F?= =?UTF-8?q?=E8=A8=AA=E5=AD=90?= Date: Tue, 16 Nov 2021 21:31:26 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E7=94=BB=E5=83=8F=EF=BC=8BPDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/MeetingsController.php | 73 +++++++++++++++++-- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/backend/app/Http/Controllers/Api/MeetingsController.php b/backend/app/Http/Controllers/Api/MeetingsController.php index 56578979..aebf0012 100644 --- a/backend/app/Http/Controllers/Api/MeetingsController.php +++ b/backend/app/Http/Controllers/Api/MeetingsController.php @@ -21,6 +21,45 @@ class MeetingsController extends Controller { return ['status_code' => 400, 'error_messages' => ['ミーティングの登録に失敗しました。']]; } + // tmp + ///////////////////////// + // ファイルサイズは10MiB以内 + Validator::extend('image_size', function ($attribute, $value, $params, $validator) { + try { + $ok = true; + foreach ($value as $v) { + if (strlen(base64_decode($v)) > 1048576) { + $ok = false; + } + } + return $ok; + } catch (\Throwable $e) { + Log::critical($e->getMessage()); + return false; + } + }); + + // ミームタイプ + Validator::extend('image_meme', function ($attribute, $value, $params, $validator) { + try { + $ok = true; + foreach ($value as $v) { + if ( + mime_content_type($v) == 'image/jpeg' || // jpg + mime_content_type($v) == 'image/png' || // png + mime_content_type($v) == 'image/gif' // gif + ) { + $ok = false; + } + } + return $ok; + } catch (\Throwable $e) { + Log::critical($e->getMessage()); + return false; + } + }); + ///////////////////////// + // ミームタイプ Validator::extend('pdf_meme', function ($attribute, $value, $params, $validator) { try { @@ -35,7 +74,8 @@ class MeetingsController extends Controller { 'title' => 'required|max:100', 'text' => 'required|max:2000', 'memo' => 'max:2000', - 'pdf' => 'pdf_meme' + 'pdf' => 'pdf_meme', + 'image' => 'image_size|image_meme', // tmp ]); if ($validate->fails()) { @@ -59,6 +99,24 @@ class MeetingsController extends Controller { } $id = Meeting::create($insert); + + // tmp + ///////////////////////// + foreach ($r->image as $img) { + $ext = explode('/', mime_content_type($img))[1]; + $filename = uniqid() . '.'.$ext; + $image = base64_decode(substr($img, strpos($img, ',') + 1)); + Storage::disk('public')->put($filename, $image); + + $insert_image = [ + 'meeting_id' => (int)$id, + 'image' => '/storage/'.$filename, + ]; + + MeetingImage::create($insert_image); + } + ///////////////////////// + $params = ['meeting_id' => $id]; } catch (\Throwable $e) { // 失敗 @@ -580,12 +638,6 @@ class MeetingsController extends Controller { return ['status_code' => 400, 'error_messages' => ['ミーティングの登録に失敗しました。']]; } - $validate = Validator::make($r->all(), [ - 'title' => 'required|max:100', - 'text' => 'required|max:2000', - 'memo' => 'nullable|max:2000', - ]); - // ミームタイプ Validator::extend('pdf_meme', function ($attribute, $value, $params, $validator) { try { @@ -596,6 +648,13 @@ class MeetingsController extends Controller { } }); + $validate = Validator::make($r->all(), [ + 'title' => 'required|max:100', + 'text' => 'required|max:2000', + 'memo' => 'nullable|max:2000', + 'pdf' => 'pdf_meme', + ]); + if ($validate->fails()) { return ['status_code' => 422, 'error_messages' => $validate->errors()]; }