Passed
Push — master ( 6e413a...72cb86 )
by Fran
03:35
created

AdminServices   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Test Coverage

Coverage 56%

Importance

Changes 9
Bugs 0 Features 0
Metric Value
eloc 32
c 9
b 0
f 0
dl 0
loc 71
ccs 14
cts 25
cp 0.56
rs 10
wmc 12

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getAdmins() 0 10 4
A setAdminHeaders() 0 7 1
B parseAdmins() 0 19 7
1
<?php
2
3
namespace PSFS\services;
4
5
use PSFS\base\config\Config;
6
use PSFS\base\Security;
7
use PSFS\base\Service;
8
use PSFS\base\types\traits\TestTrait;
9
10
class AdminServices extends Service
11
{
12
    use TestTrait;
13
    /**
14
     * @Injectable
15
     * @var \PSFS\base\config\Config Servicio de configuración
16
     */
17
    protected $config;
18
    /**
19
     * @Injectable
20
     * @var \PSFS\base\Security Servicio de autenticación
21
     */
22
    protected $security;
23
    /**
24
     * @Injectable
25
     * @var \PSFS\base\Template Servicio de gestión de plantillas
26
     */
27
    protected $tpl;
28
29
    /**
30
     * Servicio que devuelve las cabeceras de autenticación
31
     * @return string HTML
32
     */
33
    public function setAdminHeaders()
34
    {
35
        $platform = trim(Config::getInstance()->get('platform.name'));
36
        header('HTTP/1.1 401 Unauthorized');
37
        header('WWW-Authenticate: Basic Realm="' . $platform . '"');
38
        echo t('Zona restringida');
39
        exit();
40
    }
41
42
    /**
43
     * Servicio que devuelve los administradores de la plataforma
44
     * @return array|mixed
45
     */
46 2
    public function getAdmins()
47
    {
48 2
        $admins = $this->security->getAdmins();
49 2
        if (!empty($admins)) {
50 1
            if (!$this->security->checkAdmin() && !self::isTest()) {
51
                $this->setAdminHeaders();
52
            }
53
        }
54 2
        $this->parseAdmins($admins);
55 2
        return $admins;
56
    }
57
58
    /**
59
     * Servicio que parsea los administradores para mostrarlos en la gestión de usuarios
60
     * @param array $admins
61
     */
62 2
    private function parseAdmins(&$admins)
63
    {
64 2
        if (!empty($admins)) {
65 1
            foreach ($admins as &$admin) {
66 1
                if (isset($admin['profile'])) {
67 1
                    switch ($admin['profile']) {
68
                        case Security::MANAGER_ID_TOKEN:
69
                            $admin['class'] = 'warning';
70
                            break;
71
                        case Security::ADMIN_ID_TOKEN:
72 1
                            $admin['class'] = 'info';
73 1
                            break;
74
                        default:
75
                        case Security::USER_ID_TOKEN:
76
                            $admin['class'] = 'primary';
77 1
                            break;
78
                    }
79
                } else {
80
                    $admin['class'] = 'primary';
81
                }
82
            }
83
        }
84 2
    }
85
86
}
87