* refactor(oauth): extract Cacti\Security\CactiOAuth provider factory
Replace the inline provider switch in oauth2.php and the OAuth
branch of mailer() in lib/functions.php with two helpers:
- CactiOAuth::getProvider($name, $params) returns the configured
provider instance for `google`, `azure`, `yahoo`, or `microsoft`,
or null when the configured provider is unknown.
- CactiOAuth::getDefaultOptions($name) returns the scope set each
provider expects.
Behaviour is preserved; both call sites now branch on a null
return rather than relying on a `$provider` variable that may have
fallen through the switch unset.
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
* chore(phpstan): catch up baseline with 11 upstream-detected entries
Same as PR-A: appends 11 PHPStan ignoreErrors entries that exist on
upstream develop but are not yet baselined, so this branch's CI does
not regress on phpstan analyse --level 6.
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
* refactor: flatten CactiOAuth to global namespace
Rename lib/Security/CactiOAuth.php to lib/CactiOAuth.php and drop the
Cacti\Security namespace. Update the two callers (oauth2.php and
lib/functions.php mailer) to use the unqualified class name. Behavior
is unchanged: only the FQCN was rewritten.
The flat layout matches every other lib/Cacti*.php class on develop and
in the canonical PRs (#7088, #7073, #7077, #7075).
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
* test: add shared unit stubs for OAuth tests
* fix(oauth): load provider factory in runtime paths
* test(oauth): pin provider factory runtime loading
---------
Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
Co-authored-by: TheWitness <thewitness@cacti.net>