diff --git a/lib/WeBWorK/Authen/LTIAdvanced.pm b/lib/WeBWorK/Authen/LTIAdvanced.pm index 03258355bb..6757904bc1 100644 --- a/lib/WeBWorK/Authen/LTIAdvanced.pm +++ b/lib/WeBWorK/Authen/LTIAdvanced.pm @@ -501,13 +501,17 @@ sub create_user { } my $nr = scalar(@LTIroles); - if (! defined($ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}})) { - croak("Cannot find a WeBWorK role that corresponds to the LMS role of " - . $LTIroles[0] ."."); + + my $LTI_webwork_permissionLevel; + if ( ! defined( $ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]} ) || + ! defined( $ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}} ) ) { + warn("Cannot find a WeBWorK role that corresponds to the LMS role of " + . $LTIroles[0] ." so will create a student level account."); + $LTI_webwork_permissionLevel = $ce->{userRoles}->{student}; + } else { + $LTI_webwork_permissionLevel = $ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}}; } - - my $LTI_webwork_permissionLevel - = $ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}}; + if ($nr > 1) { for (my $j =1; $j < $nr; $j++) { my $wwRole = $ce->{LMSrolesToWeBWorKroles}->{$LTIroles[$j]}; diff --git a/lib/WeBWorK/Authen/LTIBasic.pm b/lib/WeBWorK/Authen/LTIBasic.pm index 5c680e8b1f..4d867a1caf 100644 --- a/lib/WeBWorK/Authen/LTIBasic.pm +++ b/lib/WeBWorK/Authen/LTIBasic.pm @@ -517,12 +517,17 @@ sub authenticate } my $nr = scalar(@LTIroles); - if (! defined($ce -> {userRoles} -> {$ce -> {LMSrolesToWeBWorKroles} -> {$LTIroles[0]}})) { - croak("Cannot find a WeBWorK role that corresponds to the LMS role of " - . $LTIroles[0] ."."); + + my $LTI_webwork_permissionLevel; + if ( ! defined( $ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]} ) || + ! defined( $ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}} ) ) { + warn("Cannot find a WeBWorK role that corresponds to the LMS role of " + . $LTIroles[0] ." so will create a student level account."); + $LTI_webwork_permissionLevel = $ce->{userRoles}->{student}; + } else { + $LTI_webwork_permissionLevel = $ce->{userRoles}->{$ce->{LMSrolesToWeBWorKroles}->{$LTIroles[0]}}; } - my $LTI_webwork_permissionLevel - = $ce -> {userRoles} -> {$ce -> {LMSrolesToWeBWorKroles} -> {$LTIroles[0]}}; + if ($nr > 1) { for (my $j =1; $j < $nr; $j++) { my $wwRole = $ce -> {LMSrolesToWeBWorKroles} -> {$LTIroles[$j]};