xref: /plugin/oauth/helper.php (revision 11606ec1292f3ea497c3249b6b97d3e825cf6208)
1<?php
2/**
3 * DokuWiki Plugin oauth (Helper Component)
4 *
5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
6 * @author  Andreas Gohr <andi@splitbrain.org>
7 */
8
9// must be run within Dokuwiki
10if(!defined('DOKU_INC')) die();
11
12class helper_plugin_oauth extends DokuWiki_Plugin {
13
14    /**
15     * Load the needed libraries and initialize the named oAuth service
16     *
17     * @param string $servicename
18     * @return null|\OAuth\Plugin\AbstractAuthService
19     */
20    public function loadService(&$servicename) {
21        global $ID;
22
23        $servicename = preg_replace('/[^a-zA-Z_]+/', '', $servicename);
24        if(!$servicename) return null;
25
26        require_once(__DIR__.'/phpoauthlib/src/OAuth/bootstrap.php');
27        require_once(__DIR__.'/classes/AbstractAuthService.php');
28        require_once(__DIR__.'/classes/oAuthHTTPClient.php');
29
30        $file = __DIR__.'/classes/'.$servicename.'AuthService.php';
31        if(!file_exists($file)) return null;
32        require_once($file);
33        $class = '\\OAuth\\Plugin\\'.$servicename.'AuthService';
34
35        /** @var \OAuth\Plugin\AbstractAuthService $service */
36        $service = new $class(wl($ID, array('oa' => $servicename), true, '&'));
37        if(!$service->isInitialized()) {
38            msg("Failed to initialize $service authentication service. Check credentials", -1);
39            return null;
40        }
41
42        return $service;
43    }
44
45    /**
46     * List available Services
47     *
48     * @return array
49     */
50    public function listServices() {
51        $services = array();
52        $files    = glob(__DIR__.'/classes/*AuthService.php');
53
54        foreach($files as $file) {
55            $file = basename($file, 'AuthService.php');
56            if($file == 'Abstract') continue;
57            $services[] = $file;
58        }
59
60        return $services;
61    }
62
63    /**
64     * Return the configured key for the given service
65     *
66     * @param $service
67     * @return string
68     */
69    public function getKey($service) {
70        $service = strtolower($service);
71        return $this->getConf($service.'-key');
72    }
73
74    /**
75     * Return the configured secret for the given service
76     *
77     * @param $service
78     * @return string
79     */
80    public function getSecret($service) {
81        $service = strtolower($service);
82        return $this->getConf($service.'-secret');
83    }
84
85}
86
87// vim:ts=4:sw=4:et:
88