CasService.php 1.74 KB
Newer Older
Bertrand Gauthier's avatar
Bertrand Gauthier committed
1
<?php
Bertrand Gauthier's avatar
Bertrand Gauthier committed
2
namespace UnicaenOauth\Cas;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
3
4
5

use phpCAS;

6
class CasService
Bertrand Gauthier's avatar
Bertrand Gauthier committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
    private $config;

    public function __construct(array $config)
    {
        $this->config = $config;
    }

    public function login()
    {
        $this->initCasClient();

        // force CAS authentication
        phpCAS::forceAuthentication();

        // at this step, the user has been authenticated by the CAS server
        // and the user's login name can be read with phpCAS::getUser().

        $username = phpCas::getUser();
//        $payload = createPayload($username);
//        $token = JWT::encode($payload, getPrivateKey(), 'HS256');

        return $username;
    }

    public function checkAuthentication()
    {
        $this->initCasClient();

        return phpCAS::checkAuthentication();
    }

    public function logout()
    {
        $this->initCasClient();

        phpCAS::logout();
        exit;
    }

    private function initCasClient()
    {
        // Enable debugging
        phpCAS::setDebug($this->config['debug']);
        // Enable verbose error messages. Disable in production!
        //phpCAS::setVerbose(true);
        // Initialize phpCAS
        phpCAS::client($this->config['version'], $this->config['host'], $this->config['port'], $this->config['uri']);
        // For production use set the CA certificate that is the issuer of the cert
        // on the CAS server and uncomment the line below
        // phpCAS::setCasServerCACert($cas_server_ca_cert_path);
        // For quick testing you can disable SSL validation of the CAS server.
        // THIS SETTING IS NOT RECOMMENDED FOR PRODUCTION.
        // VALIDATING THE CAS SERVER IS CRUCIAL TO THE SECURITY OF THE CAS PROTOCOL!
        phpCAS::setNoCasServerValidation();

        return $this;
    }

}