* Version: 1.0
* Author: Ryan <https://friendica.verya.pe/profile/ryan>
*/
+
+use Friendica\App;
use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Renderer;
-use Friendica\Core\Session;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\User;
use Friendica\Util\Strings;
+use OneLogin\Saml2\Utils;
require_once(__DIR__ . '/vendor/autoload.php');
define('PW_LEN', 32); // number of characters to use for random passwords
-function saml_module($a)
-{
-}
+function saml_module() {}
-function saml_init($a)
+function saml_init()
{
- if ($a->argc < 2) {
+ if (DI::args()->getArgc() < 2) {
return;
}
return;
}
- switch ($a->argv[1]) {
+ switch (DI::args()->get(1)) {
case 'metadata.xml':
saml_metadata();
break;
case 'sso':
- saml_sso_reply($a);
+ saml_sso_reply();
break;
case 'slo':
saml_slo_reply();
Hook::register('footer', __FILE__, 'saml_footer');
}
-function saml_head(&$a, &$b)
+function saml_head(string &$body)
{
DI::page()->registerStylesheet(__DIR__ . '/saml.css');
}
-function saml_footer(&$a, &$b)
+function saml_footer(string &$body)
{
$fragment = addslashes(BBCode::convert(DI::config()->get('saml', 'settings_statement')));
- $b .= <<<EOL
+ $body .= <<<EOL
<script>
var target=$("#settings-nickname-desc");
if (target.length) { target.append("<p>$fragment</p>"); }
DI::config()->get('saml', 'idp_cert');
}
-function saml_sso_initiate(&$a, &$b)
+function saml_sso_initiate(string &$body)
{
if (!saml_is_configured()) {
Logger::warning('SAML SSO tried to trigger, but the SAML addon is not configured yet!');
$auth = new \OneLogin\Saml2\Auth(saml_settings());
$ssoBuiltUrl = $auth->login(null, [], false, false, true);
- $_SESSION['AuthNRequestID'] = $auth->getLastRequestID();
+ DI::session()->set('AuthNRequestID', $auth->getLastRequestID());
header('Pragma: no-cache');
header('Cache-Control: no-cache, must-revalidate');
header('Location: ' . $ssoBuiltUrl);
exit();
}
-function saml_sso_reply($a)
+function saml_sso_reply()
{
$auth = new \OneLogin\Saml2\Auth(saml_settings());
$requestID = null;
- if (isset($_SESSION) && isset($_SESSION['AuthNRequestID'])) {
- $requestID = $_SESSION['AuthNRequestID'];
+ if (DI::session()->exists('AuthNRequestID')) {
+ $requestID = DI::session()->get('AuthNRequestID');
}
$auth->processResponse($requestID);
- unset($_SESSION['AuthNRequestID']);
+ DI::session()->remove('AuthNRequestID');
$errors = $auth->getErrors();
}
if (!empty($user['uid'])) {
- DI::auth()->setForUser($a, $user);
+ DI::auth()->setForUser($user);
}
- if (isset($_POST['RelayState'])
- && \OneLogin\Saml2\Utils::getSelfURL() != $_POST['RelayState']) {
+ if (isset($_POST['RelayState']) && Utils::getSelfURL() != $_POST['RelayState']) {
$auth->redirectTo($_POST['RelayState']);
}
}
-function saml_slo_initiate(&$a, &$b)
+function saml_slo_initiate()
{
if (!saml_is_configured()) {
Logger::warning('SAML SLO tried to trigger, but the SAML addon is not configured yet!');
$auth = new \OneLogin\Saml2\Auth(saml_settings());
$sloBuiltUrl = $auth->logout();
- $_SESSION['LogoutRequestID'] = $auth->getLastRequestID();
+ DI::session()->set('LogoutRequestID', $auth->getLastRequestID());
header('Pragma: no-cache');
header('Cache-Control: no-cache, must-revalidate');
header('Location: ' . $sloBuiltUrl);
{
$auth = new \OneLogin\Saml2\Auth(saml_settings());
- if (isset($_SESSION) && isset($_SESSION['LogoutRequestID'])) {
- $requestID = $_SESSION['LogoutRequestID'];
+ if (DI::session()->exists('LogoutRequestID')) {
+ $requestID = DI::session()->get('LogoutRequestID');
} else {
$requestID = null;
}
];
}
-function saml_addon_admin(&$a, &$o)
+function saml_addon_admin(string &$o)
{
$form =
saml_input(
$o = Renderer::replaceMacros($t, $form);
}
-function saml_addon_admin_post(&$a)
+function saml_addon_admin_post()
{
$set = function ($key) {
$val = (!empty($_POST[$key]) ? trim($_POST[$key]) : '');