Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
Logout
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 readResponse
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3/**
4 * @package Zmsstatistic
5 * @copyright BerlinOnline Stadtportal GmbH & Co. KG
6 **/
7
8namespace BO\Zmsstatistic;
9
10use App;
11use BO\Slim\Render;
12use BO\Zmsclient\Auth;
13use BO\Zmsclient\Exception;
14use Psr\Http\Message\RequestInterface;
15use Psr\Http\Message\ResponseInterface;
16
17class Logout extends BaseController
18{
19    protected $resolveLevel = 0;
20    protected $withAccess = false;
21
22    /**
23     * @SuppressWarnings(Param)
24     * @return \Psr\Http\Message\ResponseInterface
25     */
26    #[\Override]
27    public function readResponse(
28        RequestInterface $request,
29        ResponseInterface $response,
30        array $args
31    ): ResponseInterface {
32        try {
33            $workstation = \App::$http->readGetResult('/workstation/', ['resolveReferences' => 0])->getEntity();
34            \App::$http->readDeleteResult('/workstation/login/' . $workstation->useraccount['id'] . '/')->getEntity();
35        } catch (Exception $exception) {
36            if ("BO\Zmsentities\Exception\UseraccountMissingLogin" !== $exception->template) {
37                throw $exception;
38            }
39        }
40        $sessionHash = hash('sha256', Auth::getKey());
41        App::$log->info('User logged out', [
42            'event' => 'auth_logout',
43            'timestamp' => date('c'),
44            'username' => $workstation->useraccount['id'],
45            'hashed_session_token' => $sessionHash,
46            'logout_type' => 'manual',
47            'application' => 'zmsstatistic'
48        ]);
49        Auth::removeKey();
50        return Render::withHtml(
51            $response,
52            'page/logout.twig',
53            array(
54                'title' => 'Erfolgreich abgemeldet'
55            )
56        );
57    }
58}