Security improvements backported from v1.1:
- The URL generator (
url()) will now always return a slash after the hostname and properly URL-encode values with the dot segments processed out.
Winter\Storm\Auth\Managerto get the real user for the current request, taking into account user impersonation
canBeImpersonated($impersonator = false)to
Winter\Storm\Auth\Models\Userand models extending it (i.e.
Backend\Models\User); used to determine if the provided impersonator can impersonate the selected user.
model.user.beforeImpersonateto a halting event so that third party plugins are able to override the default return values from canBeImpersonated() to implement more or less strict impersonation protection policies as desired on a per project basis by returning a boolean flag indicating if the user can be impersonated or not
- Fixed issue where the user impersonation system would sometimes fail to restore the original user correctly.
- URLs generated by
url()now return properly URL-encoded values
- Fixed issue where
post()could return values when the request was not a valid
- Triggering user impersonation while already impersonating a user will now record the original impersonator as the impersonator for the second impersonation action as well, previously the impersonated user would have been recorded as the impersonator in those cases.
- Impersonated users will now have their access filtered to only include permissions that the impersonator would have also had access to.
- CMS Theme logs now reflect the real user behind a request; taking into account user impersonation.