xref: /dokuwiki/lib/plugins/usermanager/_test/AuthPlugin.php (revision cad27e80a983b270a13cd79a42d90d4e82d90c83)
1*cad27e80SAndreas Gohr<?php
2*cad27e80SAndreas Gohr
3*cad27e80SAndreas Gohrnamespace dokuwiki\plugin\usermanager\test;
4*cad27e80SAndreas Gohr
5*cad27e80SAndreas Gohr/**
6*cad27e80SAndreas Gohr * Simple Auth Plugin for testing
7*cad27e80SAndreas Gohr *
8*cad27e80SAndreas Gohr * All users are stored in a simple array
9*cad27e80SAndreas Gohr * @todo This might be useful for other tests and could replace the remaining mock auth plugins
10*cad27e80SAndreas Gohr */
11*cad27e80SAndreas Gohrclass AuthPlugin extends \dokuwiki\Extension\AuthPlugin {
12*cad27e80SAndreas Gohr
13*cad27e80SAndreas Gohr    public $loggedOff = false;
14*cad27e80SAndreas Gohr
15*cad27e80SAndreas Gohr    /** @var array user storage */
16*cad27e80SAndreas Gohr    public $users = [];
17*cad27e80SAndreas Gohr
18*cad27e80SAndreas Gohr    /** @inheritdoc */
19*cad27e80SAndreas Gohr    public function __construct($cando = []) {
20*cad27e80SAndreas Gohr        parent::__construct(); // for compatibility
21*cad27e80SAndreas Gohr
22*cad27e80SAndreas Gohr        // our own default capabilities
23*cad27e80SAndreas Gohr        $this->cando['addUser'] = true;
24*cad27e80SAndreas Gohr        $this->cando['delUser'] = true;
25*cad27e80SAndreas Gohr
26*cad27e80SAndreas Gohr        // merge in given capabilities for testing
27*cad27e80SAndreas Gohr        $this->cando = array_merge($this->cando, $cando);
28*cad27e80SAndreas Gohr    }
29*cad27e80SAndreas Gohr
30*cad27e80SAndreas Gohr    /** @inheritdoc */
31*cad27e80SAndreas Gohr    public function createUser($user, $pwd, $name, $mail, $grps = null) {
32*cad27e80SAndreas Gohr        if (isset($this->users[$user])) {
33*cad27e80SAndreas Gohr            return false;
34*cad27e80SAndreas Gohr        }
35*cad27e80SAndreas Gohr        $pass = md5($pwd);
36*cad27e80SAndreas Gohr        $grps = (array) $grps;
37*cad27e80SAndreas Gohr        $this->users[$user] = compact('pass', 'name', 'mail', 'grps');
38*cad27e80SAndreas Gohr        return true;
39*cad27e80SAndreas Gohr    }
40*cad27e80SAndreas Gohr
41*cad27e80SAndreas Gohr    /** @inheritdoc */
42*cad27e80SAndreas Gohr    public function deleteUsers($users)
43*cad27e80SAndreas Gohr    {
44*cad27e80SAndreas Gohr        $deleted = 0;
45*cad27e80SAndreas Gohr        foreach ($users as $user) {
46*cad27e80SAndreas Gohr            if (isset($this->users[$user])) {
47*cad27e80SAndreas Gohr                unset($this->users[$user]);
48*cad27e80SAndreas Gohr                $deleted++;
49*cad27e80SAndreas Gohr            }
50*cad27e80SAndreas Gohr
51*cad27e80SAndreas Gohr        }
52*cad27e80SAndreas Gohr        return $deleted;
53*cad27e80SAndreas Gohr    }
54*cad27e80SAndreas Gohr}
55