Skip to content

Commit

Permalink
CUR 4688 SSO duplicate entries after changing curriki user solution
Browse files Browse the repository at this point in the history
  • Loading branch information
AqibYounasAtTkxel committed Mar 21, 2023
1 parent 93a265e commit c7c25a1
Showing 1 changed file with 26 additions and 29 deletions.
55 changes: 26 additions & 29 deletions app/Http/Controllers/Auth/AuthController.php
Original file line number Diff line number Diff line change
Expand Up @@ -764,8 +764,17 @@ public function ltiSsoLogin(SsoLoginRequest $request)
$data = $request->validated();
parse_str(base64_decode($data['sso_info']), $result);

$user = User::with(['lmssettingViaEmail' => function($query) use ($result) {
$query->where('lti_client_id', $result['lti_client_id'])->latest('created_at')->take(1);
$default_lms_setting = $this->defaultSsoSettingsRepository->findByField('lti_client_id', $result['lti_client_id']);
//if default LMS setting not exist!
if (!$default_lms_setting) {
return response([
'errors' => ['LMS is not configured for SSO with CurrikiStudio. Please contact your Admin'],
], 404);
}

$user = User::with(['lmssettingViaEmail' => function($query) use ($result, $default_lms_setting) {
$query->where('lti_client_id', $result['lti_client_id'])
->where('organization_id', $default_lms_setting['organization_id'])->first();
}])->where('email', 'ilike', $result['email'])->first();

if (!$user) {
Expand All @@ -779,13 +788,6 @@ public function ltiSsoLogin(SsoLoginRequest $request)
'email_verified_at' => now(),
]);
if ($user) {
$default_lms_setting = $this->defaultSsoSettingsRepository->findByField('lti_client_id', $result['lti_client_id']);
//if default LMS setting not exist!
if (!$default_lms_setting) {
return response([
'errors' => ['Unable to find default LMS setting with your client id.'],
], 404);
}
$default_lms_setting = $default_lms_setting->toArray();
$default_lms_setting['lms_login_id'] = $user['email'];
$user->lmssetting()->create($default_lms_setting);
Expand All @@ -811,16 +813,9 @@ public function ltiSsoLogin(SsoLoginRequest $request)
}
}
} else {
if (sizeof($user->lmssetting) > 0) {
$user['user_organization'] = $user->lmssetting[0]->organization;
if ($user && $user->lmssettingViaEmail && count($user->lmssettingViaEmail) > 0) {
$user['user_organization'] = $user->lmssettingViaEmail[0]->organization;
} else {
$default_lms_setting = $this->defaultSsoSettingsRepository->findByField('lti_client_id', $result['lti_client_id']);
//if default LMS setting not exist!
if (!$default_lms_setting) {
return response([
'errors' => ['Unable to find default LMS setting with your client id.'],
], 404);
}
$default_lms_setting = $default_lms_setting->toArray();
$default_lms_setting['lms_login_id'] = $user['email'];
$newly_created_setting = $user->lmssetting()->create($default_lms_setting);
Expand Down Expand Up @@ -889,8 +884,17 @@ public function ltiSsoLogin1p0(SsoLoginRequest $request) {
$data = $request->validated();
parse_str(base64_decode($data['sso_info']), $result);

$user = User::with(['lmssettingViaEmail' => function($query) use ($result) {
$query->where('lms_access_key', $result['oauth_consumer_key'])->latest('created_at')->take(1);
$default_lms_setting = $this->defaultSsoSettingsRepository->findByField('lms_access_key', $result['oauth_consumer_key']);
//if default LMS setting not exist!
if (!$default_lms_setting) {
return response([
'errors' => ['LMS is not configured for SSO with CurrikiStudio. Please contact your Admin'],
], 404);
}

$user = User::with(['lmssettingViaEmail' => function($query) use ($result, $default_lms_setting) {
$query->where('lms_access_key', $result['oauth_consumer_key'])
->where('organization_id', $default_lms_setting['organization_id'])->first();
}])->where('email', 'ilike', $result['user_email'])->first();

if (!$user) {
Expand Down Expand Up @@ -938,16 +942,9 @@ public function ltiSsoLogin1p0(SsoLoginRequest $request) {
}
}
} else {
if (sizeof($user->lmssetting) > 0) {
$user['user_organization'] = $user->lmssetting[0]->organization;
if ($user && $user->lmssettingViaEmail && count($user->lmssettingViaEmail) > 0) {
$user['user_organization'] = $user->lmssettingViaEmail[0]->organization;
} else {
$default_lms_setting = $this->defaultSsoSettingsRepository->findByField('lms_access_key', $result['oauth_consumer_key']);
//if default LMS setting not exist!
if (!$default_lms_setting) {
return response([
'errors' => ['Unable to find default LMS setting with your client id.'],
], 404);
}
$default_lms_setting = $default_lms_setting->toArray();
$default_lms_setting['lms_login_id'] = strtolower($user['user_email']);
$newly_created_setting = $user->lmssetting()->create($default_lms_setting);
Expand Down

0 comments on commit c7c25a1

Please sign in to comment.