-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathboot.php
More file actions
75 lines (61 loc) · 2.07 KB
/
boot.php
File metadata and controls
75 lines (61 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* rexQL - GraphQL API for REDAXO CMS
*/
namespace FriendsOfRedaxo\RexQL;
use FriendsOfRedaxo\RexQL\Api\Endpoint;
use FriendsOfRedaxo\RexQL\Api\Proxy;
use FriendsOfRedaxo\RexQL\Api\Auth;
use FriendsOfRedaxo\RexQL\RexQL;
use FriendsOfRedaxo\RexQL\Services\Extensions;
use rex;
use rex_api_function;
use rex_be_controller;
use rex_extension;
use rex_perm;
use rex_view;
// Register permissions
rex_perm::register('rexql[]');
rex_perm::register('rexql[config]');
rex_perm::register('rexql[permissions]');
rex_perm::register('rexql[webhooks]');
// Register API classes
rex_api_function::register('rexql', Endpoint::class);
rex_api_function::register('rexql_proxy', Proxy::class);
rex_api_function::register('rexql_auth', Auth::class);
// Set default configuration
/** @var \rex_addon $this */
if (!$this->hasConfig()) {
$this->setConfig([
'rexql_url' => '/index.php?rex-api-call=rexql',
'rexql_proxy_url' => '/index.php?rex-api-call=rexql_proxy',
'rexql_auth_url' => '/index.php?rex-api-call=rexql_auth',
'endpoint_enabled' => false,
'proxy_enabled' => false,
'cache_enabled' => true,
'cache_ttl' => 300,
'require_authentication' => true,
'max_query_depth' => 10,
'cors_allowed_origins' => ['*'], // CORS Origins
'cors_allowed_methods' => ['GET', 'POST', 'OPTIONS'],
'cors_allowed_headers' => ['Content-Type', 'Authorization', 'X-API-KEY', 'X-Public-Key'],
'test_users' => [ // For test authentication
'testuser' => 'testpass',
'demo' => 'demo123'
],
'debug_mode' => false,
]);
}
rex::setProperty('rexql_addon', $this);
// Register extension points for Webhooks
rex_extension::register('PACKAGES_INCLUDED', Extensions::registerWebhookEps(...));
// Load backend assets only in backend
if (rex::isBackend() && rex::getUser()) {
rex_view::addCssFile($this->getAssetsUrl('rexql.css'));
$currentPage = rex_be_controller::getCurrentPage();
$isRexQLPage = str_starts_with($currentPage, 'rexql');
if ($isRexQLPage) {
$api = new RexQL(true);
rex::setProperty('rexql_api', $api);
}
}