• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

drago-ex / keycloak / 17486462795

05 Sep 2025 07:15AM UTC coverage: 46.429% (-7.7%) from 54.167%
17486462795

push

github

web-flow
Update KeycloakExtension.php

12 of 20 new or added lines in 1 file covered. (60.0%)

26 of 56 relevant lines covered (46.43%)

0.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

73.33
/src/Drago/Keycloak/DI/KeycloakExtension.php
1
<?php
2

3
/**
4
 * Drago Extension
5
 * Package built on Nette Framework
6
 */
7

8
declare(strict_types=1);
9

10
namespace Drago\Keycloak\DI;
11

12
use Drago\Keycloak\KeycloakSessions;
13
use GuzzleHttp\Client;
14
use Nette\DI\CompilerExtension;
15
use Nette\Http\Request;
16
use Nette\Http\Url;
17
use Nette\Schema\Expect;
18
use Nette\Schema\Schema;
19
use Stevenmaguire\OAuth2\Client\Provider\Keycloak;
20
use Tracy\Debugger;
21

22
class KeycloakExtension extends CompilerExtension
23
{
24
        public function getConfigSchema(): Schema
25
        {
26
                return Expect::structure([
2✔
27
                        'authServerUrl' => Expect::string(),
2✔
28
                        'realm' => Expect::string(),
2✔
29
                        'clientId' => Expect::string(),
2✔
30
                        'clientSecret' => Expect::string(),
2✔
31
                        'redirectUri' => Expect::string(),
2✔
32
                        'encryptionAlgorithm' => Expect::string(),
2✔
33
                        'encryptionKeyPath' => Expect::string(),
2✔
34
                        'encryptionKey' => Expect::string(),
2✔
35
                        'guzzleHttp' => Expect::array(),
2✔
36
                        'version' => Expect::string(),
2✔
37
                ]);
38
        }
39

40

41
        public static function createKeycloak($request, $config, $guzzleHttp): Keycloak
42
        {
NEW
43
                $redirectUrl = new Url($config['redirectUri']);
×
NEW
44
                if ($redirectUrl->getHostUrl() === '') {
×
NEW
45
                        $config['redirectUri'] = $request->getUrl()
×
NEW
46
                                ->withPath($redirectUrl->getPath())
×
NEW
47
                                ->withQuery($redirectUrl->getQuery())
×
NEW
48
                                ->withFragment($redirectUrl->getFragment())
×
NEW
49
                                ->getAbsoluteUrl();
×
50
                }
NEW
51
                return new Keycloak($config, ['httpClient' => $guzzleHttp]);
×
52
        }
53

54

55
        public function loadConfiguration(): void
56
        {
57
                $config = (array) $this->config;
2✔
58
                $builder = $this->getContainerBuilder();
2✔
59
                $builder->addDefinition($this->prefix('guzzleHttp'))
2✔
60
                        ->setFactory(Client::class)
2✔
61
                        ->setArguments([$config['guzzleHttp']]);
2✔
62

63
                $builder->addDefinition($this->prefix('sessions'))
2✔
64
                        ->setFactory(KeycloakSessions::class);
2✔
65

66
                $request = $builder->getByType(Request::class);
2✔
67

68
                $builder->addDefinition($this->prefix('keycloak'))
2✔
69
                        ->setFactory([ KeycloakExtension::class, 'createKeycloak' ], ['@'.$request, $config, '@keycloak.guzzleHttp']);
2✔
70
        }
2✔
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc