Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
13 / 13
CRAP
100.00% covered (success)
100.00%
1 / 1
LoginController
100.00% covered (success)
100.00%
22 / 22
100.00% covered (success)
100.00%
13 / 13
13
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 respond
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 login
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 stored
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 available
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 resend
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 register
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 recover
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 regenerate
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 password
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 logout
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 activate
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 mailchange
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3    /**
4     * Slim-style controller for login endpoints.
5     * Delegates to LoginService; requires base.php (routes) for ApplicationError, ddbb, success.
6     */
7    declare(strict_types=1);
8
9    use Psr\Http\Message\ResponseInterface as Response;
10    use Psr\Http\Message\ServerRequestInterface as Request;
11    use UppServices\LoginService;
12
13    class LoginController
14    {
15        private readonly LoginService $loginService;
16
17        public function __construct(LoginService $loginService)
18        {
19            $this->loginService = $loginService;
20        }
21
22        private function respond(Response $response, array $result): Response
23        {
24            $response->getBody()->write($result['output']);
25            return $response->withHeader('Content-Type', $result['contentType']);
26        }
27
28        /** POST /login - username/password login */
29        public function login(Request $request, Response $response): Response
30        {
31            $result = $this->loginService->login(
32                (string) $request->getBody(),
33                $request->getQueryParams()
34            );
35            return $this->respond($response, $result);
36        }
37
38        /** GET /login/stored - stored session login */
39        public function stored(Request $request, Response $response): Response
40        {
41            return $this->respond($response, $this->loginService->stored($request->getQueryParams()));
42        }
43
44        /** GET /login/available - check if email is available */
45        public function available(Request $request, Response $response): Response
46        {
47            return $this->respond($response, $this->loginService->available($request->getQueryParams()));
48        }
49
50        /** GET /login/resend - resend validation email */
51        public function resend(Request $request, Response $response): Response
52        {
53            return $this->respond($response, $this->loginService->resend($request->getQueryParams()));
54        }
55
56        /** POST /login/register - register new user */
57        public function register(Request $request, Response $response): Response
58        {
59            $result = $this->loginService->register(
60                (string) $request->getBody(),
61                $request->getQueryParams()
62            );
63            return $this->respond($response, $result);
64        }
65
66        /** GET /login/recover - password recovery request */
67        public function recover(Request $request, Response $response): Response
68        {
69            return $this->respond($response, $this->loginService->recover($request->getQueryParams()));
70        }
71
72        /** GET /login/regenerate - password regeneration (from recovery link) */
73        public function regenerate(Request $request, Response $response): Response
74        {
75            return $this->respond($response, $this->loginService->regenerate($request->getQueryParams()));
76        }
77
78        /** GET /login/password - change password */
79        public function password(Request $request, Response $response): Response
80        {
81            return $this->respond($response, $this->loginService->password($request->getQueryParams()));
82        }
83
84        /** GET /login/logout - logout session */
85        public function logout(Request $request, Response $response): Response
86        {
87            return $this->respond($response, $this->loginService->logout($request->getQueryParams()));
88        }
89
90        /** GET /login/activate - activate user (email link) */
91        public function activate(Request $request, Response $response): Response
92        {
93            return $this->respond($response, $this->loginService->activate($request->getQueryParams()));
94        }
95
96        /** GET /login/mailchange - confirm email change (email link) */
97        public function mailchange(Request $request, Response $response): Response
98        {
99            return $this->respond($response, $this->loginService->mailchange($request->getQueryParams()));
100        }
101    }