Unified DI and changed session initialization
What does this MR do?
On the way to implementing !543 (merged) I found the work was actually split into two parts:
- make it so that we only set session cookie when logging in
- make the session cookie persistent
To solve 1 I had to do a bunch of work to ensure we only have one DI container available. To solve 2 there is still outstanding UI work to do to work out how to get consent.
However, the work from 1 stands alone and I'd like to get that merged first as it should be ready now. It has quite a lot of changes across the codebase so could easily get out of step, and the UI part for !543 (merged) still needs more thought for a while.
Previously, due to how
fSession works (it initializes the session if you try and access anything), we didn't necessarily run our own session initialization logic (
$session->init()) which could mean it wouldn't have the correct settings. I added a lot more checks now so we don't let
fSession initialize the session other than via our
This MR removes the
Foodsharing\DI class (and so the
DI::$shared container) in favour of initializing a
global $container variable (using our now unified
FoodsharingKernel). Ideally I would also remove this use of a global by injected more things. There are about 7 uses of it. But I would wait for the next iteration of change.
I also changed the
Mem class to use instance access (was static before) and inject it via DI, it now connects on first use rather than explicit call to
How confident are you it won't break things if deployed?
I wouldn't be surprised if something breaks due to the session initialization changes, but everything I tried works ok. Potentially there could also be some places where the
global $container has not be initialized (e.g. if an API path access something) but I did a rough check and it looks like only non-API-type things use it.
Links to related issues
- added a test, or explain why one is not needed/possible... (existing tests should be ok)
- no unrelated changes
- asked someone for a code review
- joined #foodsharing-beta channel at https://slackin.yunity.org
- added an entry to CHANGELOG.md (description, merge request link, username(s))