From fb193224e4d0c26871bff4de6aff18c46cfde520 Mon Sep 17 00:00:00 2001 From: Asim Sarwar Date: Thu, 4 Aug 2022 19:11:12 +0500 Subject: [PATCH 1/2] Fix the clone api issue for lti tool settings. --- .../Controllers/Api/V1/LtiTool/LtiToolSettingsController.php | 5 +++-- app/Repositories/LtiTool/LtiToolSettingRepository.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php b/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php index fa3906e86..7b0c78d44 100644 --- a/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php +++ b/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php @@ -196,7 +196,9 @@ public function destroy(Organization $suborganization, $id) */ public function clone(Request $request, Organization $suborganization, LtiToolSetting $ltiToolSetting) { - $requestData = $request->all(); + $requestData = $request->only([ + 'user_id' + ]); $requestData['tool_name'] = $ltiToolSetting->tool_name; $requestData['tool_url'] = $ltiToolSetting->tool_url; $requestData['lti_version'] = $ltiToolSetting->lti_version; @@ -204,7 +206,6 @@ public function clone(Request $request, Organization $suborganization, LtiToolSe $requestData['tool_consumer_key'] = $ltiToolSetting->tool_consumer_key; $requestData['tool_secret_key'] = $ltiToolSetting->tool_secret_key; $requestData['tool_content_selection_url'] = $ltiToolSetting->tool_content_selection_url; - $requestData['user_id'] = $ltiToolSetting->user_id; $requestData['organization_id'] = $ltiToolSetting->organization_id; $request->merge($requestData); $validated = $request->validate([ diff --git a/app/Repositories/LtiTool/LtiToolSettingRepository.php b/app/Repositories/LtiTool/LtiToolSettingRepository.php index f1a1000d6..26c1171d2 100644 --- a/app/Repositories/LtiTool/LtiToolSettingRepository.php +++ b/app/Repositories/LtiTool/LtiToolSettingRepository.php @@ -129,7 +129,7 @@ public function destroy($id) public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganization, $token) { $ltiToolSettingData = [ - "user_id" => get_user_id_by_token($token), + "user_id" => request('user_id'), "organization_id" => $subOrganization->id, "tool_name" => $ltiToolSetting->tool_name, "tool_url" => $ltiToolSetting->tool_url, From 85f1e6d27f4dc479ee07ada0ac1a44e2fc1df97b Mon Sep 17 00:00:00 2001 From: Asim Sarwar Date: Fri, 5 Aug 2022 14:02:12 +0500 Subject: [PATCH 2/2] Update lti clone api functionality. --- .../V1/LtiTool/LtiToolSettingsController.php | 2 +- app/Jobs/CloneLtiToolSetting.php | 20 +++++++++++++------ .../LtiTool/LtiToolSettingInterface.php | 4 ++-- .../LtiTool/LtiToolSettingRepository.php | 10 +++++----- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php b/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php index 7b0c78d44..8ec9520bc 100644 --- a/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php +++ b/app/Http/Controllers/Api/V1/LtiTool/LtiToolSettingsController.php @@ -219,7 +219,7 @@ public function clone(Request $request, Organization $suborganization, LtiToolSe 'user_id' => 'required|exists:users,id', 'organization_id' => 'required|exists:organizations,id' ]); - CloneLtiToolSetting::dispatch($ltiToolSetting, $suborganization, $request->bearerToken())->delay(now()->addSecond()); + CloneLtiToolSetting::dispatch($ltiToolSetting, $suborganization, $requestData['user_id'], $request->bearerToken())->delay(now()->addSecond()); return response([ "message" => "Your request to clone Lti Tool Setting [$ltiToolSetting->tool_name] has been received and is being processed.
You will be alerted in the notification section in the title bar when complete.", diff --git a/app/Jobs/CloneLtiToolSetting.php b/app/Jobs/CloneLtiToolSetting.php index 6c8627e93..807414ade 100644 --- a/app/Jobs/CloneLtiToolSetting.php +++ b/app/Jobs/CloneLtiToolSetting.php @@ -13,6 +13,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\Log; class CloneLtiToolSetting implements ShouldQueue { @@ -33,18 +34,25 @@ class CloneLtiToolSetting implements ShouldQueue */ protected $token; + /** + * @var userId + */ + protected $userId; + /** * Create a new job instance. * @param LtiToolSetting $ltiToolSetting * @param Organization $suborganization + * @param $userId * @param $token * @return void */ - public function __construct(LtiToolSetting $ltiToolSetting, Organization $suborganization, $token) + public function __construct(LtiToolSetting $ltiToolSetting, Organization $suborganization, $userId, $token) { // $this->ltiToolSetting = $ltiToolSetting; $this->subOrganization = $suborganization; + $this->userId = $userId; $this->token = $token; } @@ -57,12 +65,12 @@ public function __construct(LtiToolSetting $ltiToolSetting, Organization $suborg public function handle(LtiToolSettingInterface $ltiToolSettingRepository, UserRepositoryInterface $userRepository) { try { - $ltiToolSettingRepository->clone($this->ltiToolSetting, $this->subOrganization, $this->token); + $ltiToolSettingRepository->clone($this->ltiToolSetting, $this->subOrganization, $this->userId); $message = "Your request to clone Lti Tool Setting [" . $this->ltiToolSetting->tool_name . "] has been completed and available"; - $user_id = $userRepository->parseToken($this->token); - $user = User::find($user_id); - $userName = rtrim($user->first_name . ' ' . $user->last_name, ' '); - $user->notify(new CloneNotification($message, 'Clone', $userName)); + $loggedUserId = $userRepository->parseToken($this->token); + $loggedUser = User::find($loggedUserId); + $loggedUserName = rtrim($loggedUser->first_name . ' ' . $loggedUser->last_name, ' '); + $loggedUser->notify(new CloneNotification($message, 'Clone', $loggedUserName)); } catch (\Exception $e) { Log::error($e->getMessage()); } diff --git a/app/Repositories/LtiTool/LtiToolSettingInterface.php b/app/Repositories/LtiTool/LtiToolSettingInterface.php index afb9317c5..130eb3204 100644 --- a/app/Repositories/LtiTool/LtiToolSettingInterface.php +++ b/app/Repositories/LtiTool/LtiToolSettingInterface.php @@ -12,9 +12,9 @@ interface LtiToolSettingInterface extends EloquentRepositoryInterface * To clone Lti Tool Setting * @param LtiToolSetting $ltiToolSetting * @param Organization $subOrganization - * @param $token + * @param $userId */ - public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganization, $token); + public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganization, $userId); /** * @param $userId integer, $orgId integer $mediaSourceId int * @return mixed diff --git a/app/Repositories/LtiTool/LtiToolSettingRepository.php b/app/Repositories/LtiTool/LtiToolSettingRepository.php index 26c1171d2..a6dd65273 100644 --- a/app/Repositories/LtiTool/LtiToolSettingRepository.php +++ b/app/Repositories/LtiTool/LtiToolSettingRepository.php @@ -123,13 +123,13 @@ public function destroy($id) * To clone Lti Tool Setting * @param LtiToolSetting $ltiToolSetting * @param Organization $subOrganization - * @param string $token + * @param int $userId * @return int id */ - public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganization, $token) + public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganization, $userId) { $ltiToolSettingData = [ - "user_id" => request('user_id'), + "user_id" => $userId, "organization_id" => $subOrganization->id, "tool_name" => $ltiToolSetting->tool_name, "tool_url" => $ltiToolSetting->tool_url, @@ -142,8 +142,8 @@ public function clone(LtiToolSetting $ltiToolSetting, Organization $subOrganizat "tool_custom_parameter" => $ltiToolSetting->tool_custom_parameter, "tool_content_selection_url" => $ltiToolSetting->tool_content_selection_url ]; - $cloned_setting = $this->create($ltiToolSettingData); - return $cloned_setting['id']; + $clonedSetting = $this->create($ltiToolSettingData); + return $clonedSetting['id']; } /**