File tree Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -780,6 +780,13 @@ $authen{admin_module} = ['WeBWorK::Authen::Basic_TheLastOption'];
780780 modify_tags => " admin" ,
781781 edit_restricted_files => " admin" ,
782782
783+ # Permission to render problems using the WebworkWebservice.
784+ # Users with only webservice_render_problem can render problems with a provided filename.
785+ # Users with both permissions can also render problems with providing the problem source.
786+ # Note the Problem Editor requires having both permissions.
787+ webservice_render_problem => " login_proctor" ,
788+ webservice_render_source => " login_proctor" ,
789+
783790 # #### Behavior of the interactive problem processor #####
784791 show_correct_answers_before_answer_date => " ta" ,
785792 show_solutions_before_answer_date => " ta" ,
Original file line number Diff line number Diff line change @@ -257,7 +257,7 @@ sub command_permission {
257257 convertCodeToPGML => ' access_instructor_tools' ,
258258
259259 # WebworkWebservice::RenderProblem
260- renderProblem => ' proctor_quiz_login ' ,
260+ renderProblem => ' webservice_render_problem ' ,
261261
262262 # WebworkWebservice::SetActions
263263 listGlobalSets => ' access_instructor_tools' ,
Original file line number Diff line number Diff line change @@ -26,6 +26,14 @@ async sub renderProblem {
2626 # is enabled. That is an expensive method to always call here.
2727 debug(pretty_print_rh($rh )) if $WeBWorK::Debug::Enabled ;
2828
29+ # If the problem source is provided, check user is allow to render problem source.
30+ if (!$ws -> authz-> hasPermissions($rh -> {user }, ' webservice_render_source' )
31+ && ($rh -> {problemSource } || $rh -> {rawProblemSource } || $rh -> {uriEncodedProblemSource }))
32+ {
33+ $ws -> error_string(__PACKAGE__ . " : User $rh ->{user} does not have permission to render problem source." );
34+ return {};
35+ }
36+
2937 my $problemSeed = $rh -> {problemSeed } // ' 1234' ;
3038
3139 my $beginTime = Benchmark-> new;
You can’t perform that action at this time.
0 commit comments