SuiteCRM-Core/Api/V8/Config/services/middlewares.php
Clemente Raposo 601c0c039b Squashed 'public/legacy/' changes from 92c30d9960..ee41ae127f
ee41ae127f SuiteCRM 7.13.3 Release
710b977fe9 Fix #10009 - Cannot configure Module Menu Filters on PHP8+
096b87c982 Fix #9153 - Adding dynamicenum case option for export
0cf566c131 Fix #8897 - Adding missing relationship for SurveyResponses module
c25ec3546c Fix #9470 - Set fdow in Calendar popup date selector
1d8ee63779 Fix #9326 - Adding decimal and float case option for export to use user-defined decimal separator
8ecc413cea Fix #9476 - Mass assign security groups only assigns selected on current page
8c8dacb256 Fix #9542 - added checks for count methods
c7eeca8db8 Fix #7759, #8273 - Double compose button in subpanels
e022f2e094 Fix #9621 - Workflows Calculate Field Actions don't translate dynamicenum fields
461f50a089 Fix #9764 - Add extra To addresses to CC field
4cf46d154d Fix salesagility#9768 - Do not convert link URLs in TinyMCE
c5ad471977 Fix #9783 - Compose view quick search
45c5c2a8d0 Fix #9780 - Popup does not show after creating a user
637c15e048 Fix #9812 - Decimal number calculations workflows
c025ca0659 Fix #9817 - Typo
a8cc7d8d5c Fix #9828 - $mod_strings not in scope for line 395 of the same file
41ef82116b Fix #9849 - allowed_preview is defined twice in the array
646d655e8e Fix #9875 SugarFeed shows 0 seconds ago and negative interval for certain datetime formats
f2fa7c3940 Fix #9902 - Workflow - Some Date calculations fail with certain formats
e28458a79d Fix #9930 - Recurrent calendar items
7a9c5f2490 Fix #9602 - ProspectLists save function has a duplication issue
b3e757172a Fix #9963 - Upgrade league/oauth2-server to latest version
6e61173aa3 Fix #9974 - External Providers saving with no type
1b0b5d6007 Fix #9974 - inbound emails saving with no type

git-subtree-dir: public/legacy
git-subtree-split: ee41ae127ff74a9182c42af4e1c63db32e2f1fec
2023-05-08 12:35:02 +01:00

100 lines
3.3 KiB
PHP

<?php
use Api\Core\Config\ApiConfig;
use Api\V8\BeanDecorator\BeanManager;
use Api\V8\OAuth2\Entity\AccessTokenEntity;
use Api\V8\OAuth2\Entity\ClientEntity;
use Api\V8\OAuth2\Repository\AccessTokenRepository;
use Api\V8\OAuth2\Repository\ClientRepository;
use Api\V8\OAuth2\Repository\RefreshTokenRepository;
use Api\V8\OAuth2\Repository\ScopeRepository;
use Api\V8\OAuth2\Repository\UserRepository;
use League\OAuth2\Server\Grant\ClientCredentialsGrant;
use Psr\Container\ContainerInterface as Container;
use League\OAuth2\Server\AuthorizationServer;
use League\OAuth2\Server\Grant\PasswordGrant;
use League\OAuth2\Server\Grant\RefreshTokenGrant;
use League\OAuth2\Server\ResourceServer;
use Api\Core\Loader\CustomLoader;
use Api\V8\Helper\OsHelper;
use League\OAuth2\Server\CryptKey;
return CustomLoader::mergeCustomArray([
AuthorizationServer::class => static function (Container $container) {
// base dir must exist in entryPoint.php
$baseDir = $GLOBALS['BASE_DIR'];
$shouldCheckPermissions = OsHelper::getOS() !== OsHelper::OS_WINDOWS;
$oauth2EncKey = $GLOBALS['sugar_config']['oauth2_encryption_key'] ?? '';
if (empty($oauth2EncKey)) {
$oauth2EncKey = 'SCRM-DEFK';
if (isset($GLOBALS['log'])) {
$GLOBALS['log']->fatal('WARNING: `oauth2_encryption_key` not set in config.php');
}
}
$server = new AuthorizationServer(
new ClientRepository(
new ClientEntity(),
$container->get(BeanManager::class)
),
new AccessTokenRepository(
new AccessTokenEntity(),
$container->get(BeanManager::class)
),
new ScopeRepository(),
new CryptKey(
sprintf('file://%s/%s', $baseDir, ApiConfig::OAUTH2_PRIVATE_KEY),
null,
$shouldCheckPermissions
),
$oauth2EncKey
);
// Client credentials grant
$server->enableGrantType(
new ClientCredentialsGrant(),
new DateInterval('PT1H')
);
// Password credentials grant
$server->enableGrantType(
new PasswordGrant(
new UserRepository($container->get(BeanManager::class)),
new RefreshTokenRepository($container->get(BeanManager::class))
),
new DateInterval('PT1H')
);
$refreshGrant = new RefreshTokenGrant(
new RefreshTokenRepository($container->get(BeanManager::class))
);
$refreshGrant->setRefreshTokenTTL(new DateInterval('P1M'));
$server->enableGrantType(
$refreshGrant,
new DateInterval('PT1H')
);
return $server;
},
ResourceServer::class => static function (Container $container) {
$baseDir = $GLOBALS['BASE_DIR'];
$shouldCheckPermissions = OsHelper::getOS() !== OsHelper::OS_WINDOWS;
return new ResourceServer(
new AccessTokenRepository(
new AccessTokenEntity(),
$container->get(BeanManager::class)
),
new CryptKey(
sprintf('file://%s/%s', $baseDir, ApiConfig::OAUTH2_PUBLIC_KEY),
null,
$shouldCheckPermissions
)
);
},
], basename(__FILE__));