Commit a3a886de authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Started refactoring for making the code more testable. Added first unit test

parent 9eea552f
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
composer.lock
composer.lock
config.php
config.php
config.json
logs/
logs/
vendor/
vendor/
client-icons/
client-icons/
+1 −1
Original line number Original line Diff line number Diff line
@@ -11,7 +11,7 @@ Requirements:


On Ubuntu:
On Ubuntu:


    sudo apt install apache2 mariadb-server libapache2-mod-php mariadb-server
    sudo apt install apache2 mariadb-server libapache2-mod-php mariadb-server php7.2-xml


### PHP
### PHP


auth/oauth2/index.php

deleted100644 → 0
+0 −53
Original line number Original line Diff line number Diff line
<?php

include '../../include/init.php';
startSession();
global $dao;

if (!isset($_REQUEST['client_id'])) {
    http_response_code(400);
    die("Client id is required");
}

if (!isset($_REQUEST['redirect_uri'])) {
    http_response_code(400);
    die("Redirect URI is required");
}

$clientId = $_REQUEST['client_id'];
$redirectUrl = $_REQUEST['redirect_uri'];

$client = $dao->getOAuth2ClientByClientId($clientId);
if ($client === null) {
    http_response_code(400);
    die("Invalid client id: " . $clientId);
}
if ($client->redirectUrl !== $redirectUrl) {
    http_response_code(400);
    die("Invalid client redirect URI: " . $redirectUrl);
}

$alg;
if (isset($_REQUEST['alg'])) {
    $alg = $_REQUEST['alg'];
} else {
    $alg = "RS256";
}

if (isset($_GET['code'])) {
    
} else {
    if (!isset($_REQUEST['state'])) {
        http_response_code(400);
        die("State is required");
    }
}

$oauth2Data = new \RAP\OAuth2Data();
$oauth2Data->clientName = $client->name;
$oauth2Data->clientIcon = $client->icon;
$oauth2Data->clientId = $client->id;
$oauth2Data->redirectUrl = $client->redirectUrl;

global $session;
$session->setOAuth2Data($oauth2Data);
 No newline at end of file
+63 −0
Original line number Original line Diff line number Diff line
<?php

namespace RAP;

/**
 * Model for the main RAP page (authentication method choice).
 */
class AuthPageModel {

    // boolean flags
    public $eduGAIN;
    public $orcid;
    public $x509;
    public $google;
    public $facebook;
    public $linkedIn;
    public $localIdP;
    //
    public $clientIcon;
    public $clientTitle;
    public $localIdPConfig;

    public function __construct(\RAP\Locator $locator, \RAP\RAPClient $client) {

        $config = $locator->config;

        $this->setupAuthenticationMethodFlags($config, $client);

        if ($this->localIdP) {
            $this->localIdPConfig = $config->authenticationMethods->LocalIdP;
        }

        if (isset($client->icon)) {
            $this->clientIcon = $client->getIconBasePath() . $client->icon;
        }
        $this->clientTitle = $client->title;
    }

    private function setupAuthenticationMethodFlags($config, $client) {

        $this->eduGAIN = isset($config->authenticationMethods->eduGAIN) &&
                in_array(AuthenticationMethods::EDU_GAIN, $client->authMethods);

        $this->orcid = isset($config->authenticationMethods->Orcid) &&
                in_array(AuthenticationMethods::ORCID, $client->authMethods);

        $this->x509 = isset($config->authenticationMethods->X509) &&
                in_array(AuthenticationMethods::X509, $client->authMethods);

        $this->google = isset($config->authenticationMethods->Google) &&
                in_array(AuthenticationMethods::GOOGLE, $client->authMethods);

        $this->facebook = isset($config->authenticationMethods->Facebook) &&
                in_array(AuthenticationMethods::FACEBOOK, $client->authMethods);

        $this->linkedIn = isset($config->authenticationMethods->LinkedIn) &&
                in_array(AuthenticationMethods::LINKED_IN, $client->authMethods);

        $this->localIdP = isset($config->authenticationMethods->LocalIdP) &&
                in_array(AuthenticationMethods::LOCAL_IDP, $client->authMethods);
    }

}
+27 −0
Original line number Original line Diff line number Diff line
<?php

namespace RAP;

abstract class AuthenticationMethods {

    const EDU_GAIN = "eduGAIN";
    const ORCID = "Orcid";
    const X509 = "X.509";
    const GOOGLE = "Google";
    const LINKED_IN = "LinkedIn";
    const FACEBOOK = "Facebook";
    const LOCAL_IDP = "LocalIdP";

    public static function getAllMethods() {
        return [
            AuthenticationMethods::EDU_GAIN,
            AuthenticationMethods::ORCID,
            AuthenticationMethods::X509,
            AuthenticationMethods::GOOGLE,
            AuthenticationMethods::LINKED_IN,
            AuthenticationMethods::FACEBOOK,
            AuthenticationMethods::LOCAL_IDP
        ];
    }

}
Loading