Completed
Push — 2.x ( 8eef4c...af537a )
by Jindřich
02:23
created

ConnectionController::disconnectAction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 21
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 21
rs 9.3142
cc 2
eloc 12
nc 2
nop 0
1
<?php
2
3
namespace SkautisBundle\Controller;
4
5
use SkautisBundle\EventDispatcher\Event\SkautisAfterConnectEvent;
6
use SkautisBundle\EventDispatcher\Event\SkautisAfterDisconnectEvent;
7
use SkautisBundle\EventDispatcher\Event\SkautisPreConnectEvent;
8
use SkautisBundle\EventDispatcher\Event\SkautisPreDisconnectEvent;
9
use SkautisBundle\Security\Authentication\Connector\UserConnectorInterface;
10
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
11
use Symfony\Component\Security\Core\User\UserInterface;
12
13
/**
14
 * Controller pro propojeni skautis uzivatele se symfony uzivatelem
15
 */
16
class ConnectionController extends Controller
17
{
18
    /**
19
     * Propoji uzivatele
20
     */
21
    public function connectAction()
22
    {
23
24
        $event = new SkautisPreConnectEvent();
25
        $this->get("event_dispatcher")->dispatch(SkautisPreConnectEvent::EVENT_NAME, $event);
26
27
        $userDetail = $this->get("skautis")->user->UserDetail();
28
        $personId = $userDetail->ID_Person;
29
30
        $user = $this->getUser();
31
        if (!$user instanceof UserInterface) {
32
            $this->addFlash("error", "Nelze propojit ucty! Nikdo neni prihlasen.");
33
            return $this->redirectToRoute("homepage");
34
        }
35
36
        /** @var UserConnectorInterface $connector */
37
        $connector = $this->get("skautis.security.authentication.connector");
38
        $connector->connect($personId, $user->getUsername());
39
40
        $event = new SkautisAfterConnectEvent();
41
        $this->get("event_dispatcher")->dispatch(SkautisAfterConnectEvent::EVENT_NAME, $event);
42
43
        return $this->redirectToRoute("homepage");
44
    }
45
46
    /**
47
     * Rozpoji uzivatele
48
     */
49
    public function disconnectAction()
50
    {
51
52
        $event = new SkautisPreDisconnectEvent();
53
        $this->get("event_dispatcher")->dispatch(SkautisPreDisconnectEvent::EVENT_NAME, $event);
54
55
        $user = $this->getUser();
56
        if (!$user instanceof UserInterface) {
57
            $this->addFlash("error", "Nelze rozpojit ucty! Nikdo neni prihlasen.");
58
            return $this->redirectToRoute("homepage");
59
        }
60
61
        /** @var UserConnectorInterface $connector */
62
        $connector = $this->get("skautis.security.authentication.connector");
63
        $connector->disconnect($user->getUsername());
64
65
        $event = new SkautisAfterDisconnectEvent();
66
        $this->get("event_dispatcher")->dispatch(SkautisAfterDisconnectEvent::EVENT_NAME, $event);
67
68
        return $this->redirectToRoute("homepage");
69
    }
70
}