404labfr / laravel-impersonate

Laravel Impersonate is a plugin that allows you to authenticate as your users.
https://marceau.casals.fr
1.95k stars 203 forks source link

Laravel Octane support #164

Open nie7321 opened 1 year ago

nie7321 commented 1 year ago

Laravel Impersonate does not work with Laravel Octane. This manifests as several different errors concerning the $app container missing expected values when impersonating and leaving impersonation, from both the ImpersonateManager and ImpersonateController.

I'm seeing two points where this is an issue:

  1. The singleton in the ImpersonateServiceProvider has the app container passed to the constructor. This doesn't work in the Octane paradigm -- the container is adjusted for every request, so a fresh copy is needed.
    • I'm not sure if the singleton is strictly needed? I've worked around this by extending the service provider and reimplementing register() without that.
  2. The constructor in ImpersonateController sets the manager property. It seems like the constructors for controllers are only called once when Octane boots, which is leading to the app container inside that manager instance being stale.
    • Injecting it into the take/leave methods individually instead of setting it in the constructor should avoid the issue.

If you are open to a PR, I would be happy to send one.

Ostojic-96 commented 1 year ago

I can confirm this, too. When I try to leave impersonalization I am still logged with the same user.

khalidmaquilang commented 8 months ago

any update on this?

OstojicI commented 8 months ago

any update on this?

@khalidmaquilang for me logout was working with these changes

khalidmaquilang commented 8 months ago

any update on this?

@khalidmaquilang for me logout was working with these changes

this is good.. i hope they will merge this