Impersonating users
It is possible to impersonate users when viewing a H5P object. This means that you can display another user's user state instead of your own. This is useful, if you want to implement a feature in which teachers can review the work of students.
You do this by setting options.asUserId
of the H5PPlayer.render
method. Make sure that you authorize users as required in the permission system.
Read-only states
In most cases in which your users impersonate another user, you'll want to disable saving the user state for the impersonator. You can do this by setting options.readOnlyState
to true when calling H5PPlayer.render
. This will do the following:
set the save interval to the longest possible value
adds the query parameter
ignorePost=yes
to the Ajax route responsible for handling user states
The query parameter is necessary, as the H5P core client doesn't support user states that are read only. We work around this by ignoring a post calls when the query parameter is set in h5p-express. If the query parameter is set, we simply return a success, so the H5P core client doesn't realize we didn't save the state. If you don't use this package, you must do this yourself.
Obviously you also have to make sure malicious users won't change the user state of others, by rejecting these operations in the authorization/permission system!
Trying it out in the examples
The server-side-rendering example supports impersonation and read-only state. You can use them by passing in query parameter in the URL, e.g. http://localhost:8080/h5p/play/<CONTENTID>?asUserId=<USERID>&readOnlyState=yes
.
The REST example also supports impersonation and read-only states. You can enable these features in the web interface.
Acknowledgement
The development of this feature was kindly funded by PHYWE Systeme GmbH und Co. KG (https://www.phywe.de/).
Last updated