login-tabs.phtml 2.13 KB
Newer Older
1
2
3
<?php

use UnicaenAuth\Authentication\Adapter;
4
use UnicaenAuth\Form\LoginForm;
5
use UnicaenAuth\View\Helper\AbstractConnectViewHelper;
Bertrand Gauthier's avatar
Bertrand Gauthier committed
6
use Laminas\Form\Form;
7
8
9
10
11
12

/**
 * Génération des différents types de formulaire de connexion activés.
 *
 * @var array[] $types Types d'authentification activés, ex: ['db' => ['enabled'=>true, 'type'=>'local'], 'shib' => ['enabled'=>true]]
 * @var string $type Type d'authentification dont il faut afficher le formulaire : ex: 'local', {@see Adapter\Shib::TYPE}
13
 * @var LoginForm $form Formulaire de connexion du type spécifié dans la requête
14
 * @var LoginForm[] $forms Formulaires de connexion possibles
15
16
17
18
19
20
21
 * @var string $redirect URL demandée nécessitant authentification
 *
 * @method AbstractConnectViewHelper connect()
 */

$form->prepare();
$form->setAttributes([
Bertrand Gauthier's avatar
Bertrand Gauthier committed
22
    //'class' => 'form-horizontal', // .form-horizontal n'existe plus dans boostrap 4
23
24
25
26
27
28
    'role' => 'form',
]);

/** @var AbstractConnectViewHelper[] $helpers */
$helpers = [];
foreach ($types as $t => $config) {
29
    $helpers[$t] = $this->connect($t, $form); /** @see \UnicaenAuth\View\Helper\ConnectViewHelper */
30
}
31

32
33
34
35
36
37
38
39
40
41
$activeHelper = null;
?>

<ul class="nav nav-tabs nav-justified">
    <?php foreach ($helpers as $key => $helper): ?>
        <?php
        if ($key === $type) {
            $activeHelper = $helper;
            $activeClass = 'active';
        } else {
42
43
44
            if (isset($forms[$key]) && $forms[$key]->isHidden()) {
                continue;
            }
45
46
47
            $activeClass = '';
        }
        ?>
Bertrand Gauthier's avatar
Bertrand Gauthier committed
48
        <li role="presentation" class="nav-item">
49
            <?php $query = $redirect ? ['redirect' => $redirect] : [] ?>
Bertrand Gauthier's avatar
Bertrand Gauthier committed
50
            <a class="nav-link <?php echo $activeClass ?>" href="<?php echo $this->url('zfcuser/login', ['type' => $key], ['query' => $query]) ?>"><?php echo $helper->getTitle() ?></a>
51
52
53
54
55
56
57
58
59
60
61
62
63
        </li>
    <?php endforeach ?>
</ul>

<div class="tab-content">
    <div role="tabpanel" class="tab-pane active">
        <?php
        $title = $activeHelper->getTitle();
        $activeHelper->setTitle(""); // pour éviter que le title soit répété
        ?>
        <?php echo (string)$activeHelper ?>
    </div>
</div>