Security improvements backported from v1.1:
API Changes
- The URL generator (
URL::to()
andurl()
) will now always return a slash after the hostname and properly URL-encode values with the dot segments processed out. - Added
getRealUser()
toWinter\Storm\Auth\Manager
to get the real user for the current request, taking into account user impersonation - Added
canBeImpersonated($impersonator = false)
toWinter\Storm\Auth\Models\User
and models extending it (i.e.Backend\Models\User
); used to determine if the provided impersonator can impersonate the selected user. - Changed
model.user.beforeImpersonate
to 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
Bug Fixes
- Fixed issue where the user impersonation system would sometimes fail to restore the original user correctly.
Security Improvements
- URLs generated by
Url::to()
andurl()
now return properly URL-encoded values - Fixed issue where
post()
could return values when the request was not a validPOST
request - 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.