Test Failed
Push — master ( 1cd2da...3b4d09 )
by Fran
02:52
created

AdminServices::setAdminHeaders()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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