Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix an issue that can cause LTI 1.3 grade passback to fail when calle…
…d from the job queue. The `get_access_token` method calls `$c->url_for` (on line 141 of `WeBWorK::Authen::LTIAdvantage::SubmitGrade`. This is only called if the access token is not saved in the database or if the access token that is saved is expired. When this is called from the minion job queue, `$c` is not a `Mojolicious::Controller`. Instead it is an unblessed hash reference that has the keys `ce`, `db`, and `app` defined. Clearly that unblessed hash reference will not have the `url_for` method. As such, the job will fail if a new access token is needed. So as is done on line 249 in the `submit_grade` method, the `$c` object needs to be switched to the passed in `$c->{app}` object, which does have the `url_for` method. Note that with the current code this method will still succeed if the database has an unexpired access token stored. Also, this method will succeed if called with a `Mojolicious::Controller` object (for instance when called in the case that a student initially logs in via LTI 1.3 authentication or in the case that a student submits an answer to a problem or grades a test). This could be considered for a hotfix.
- Loading branch information