snappymail/plugins/login-external-sso/index.php
2022-11-11 17:04:50 +01:00

56 lines
1.4 KiB
PHP

<?php
class LoginExternalSsoPlugin extends \RainLoop\Plugins\AbstractPlugin
{
const
NAME = 'Login External SSO',
AUTHOR = 'SnappyMail',
URL = 'https://snappymail.eu/',
VERSION = '1.0',
RELEASE = '2022-11-11',
REQUIRED = '2.21.0',
CATEGORY = 'Login',
LICENSE = 'MIT',
DESCRIPTION = 'Login with $_POST "Email", "Password" and "SsoKey". It returns an SSO hash to use with "?Sso&hash="';
public function Init() : void
{
$this->addPartHook('ExternalSso', 'ServiceExternalSso');
}
public function ServiceExternalSso() : string
{
$oActions = \RainLoop\Api::Actions();
$oActions->Http()->ServerNoCache();
$sKey = $this->Config()->Get('plugin', 'key', '');
$sEmail = $_POST['Email'];
$sPassword = $_POST['Password'];
if ($sEmail && $sPassword && $sKey && $_POST['SsoKey'] == $sKey) {
$sResult = \RainLoop\Api::CreateUserSsoHash($sEmail, $sPassword);
if ('json' === \strtolower($_POST['Output'] ?? '')) {
\header('Content-Type: application/json; charset=utf-8');
echo \json_encode(array(
'Action' => 'ExternalSso',
'Result' => $sResult
));
} else {
\header('Content-Type: text/plain');
echo $sResult;
}
}
return true;
}
/**
* @return array
*/
public function configMapping() : array
{
return array(
// Was application.ini external_sso_key
\RainLoop\Plugins\Property::NewInstance('key')->SetLabel('SSO key')
->SetDefaultValue(''),
);
}
}