404labfr / 404labfr/laravel-impersonate

Laravel Octane support

未关闭
#164 4 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
PHP
星标
2.3k
派生
235
PR 合并指标
30 天内没有已合并 PR

描述

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](https://laravel.com/docs/9.x/octane#container-injection) -- 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.
1. 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.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。