Make possible to force secure URLs for iframe styles (Fixes #206)

This commit is contained in:
Fedor A. Fetisov 2017-10-13 19:41:00 +03:00
parent 75c04cae38
commit a6b7367002
3 changed files with 21 additions and 6 deletions

View File

@ -80,6 +80,15 @@ chat_user_popup_style:
requirements:
style: "[0-9A-Za-z_]*"
chat_user_popup_style_force_secure:
path: /chat/style/popup/{style}/force_secure
defaults:
_controller: Mibew\Controller\Chat\StyleController::loadPopupStyleAction
style: ""
force_secure: on
requirements:
style: "[0-9A-Za-z_]*"
chat_user_start:
path: /chat
defaults:

View File

@ -187,7 +187,7 @@ abstract class AbstractGenerator implements GeneratorInterface
$style_name = $this->getOption('chat_style');
if (!$style_name) {
return $defaults + array(
'styleLoader' => $this->generateUrl('chat_user_popup_style'),
'styleLoader' => $this->generateUrl($this->getOption('force_secure') ? 'chat_user_popup_style_force_secure' : 'chat_user_popup_style') // An ugly way to solve the architecture issue
);
}
@ -201,7 +201,7 @@ abstract class AbstractGenerator implements GeneratorInterface
$defaults
) + array(
'styleLoader' => $this->generateUrl(
'chat_user_popup_style',
$this->getOption('force_secure') ? 'chat_user_popup_style_force_secure' : 'chat_user_popup_style', // An ugly way to solve the architecture issue
array('style' => $style_name)
),
);
@ -219,6 +219,7 @@ abstract class AbstractGenerator implements GeneratorInterface
'url' => $this->getChatUrl(),
'preferIFrame' => $this->getOption('prefer_iframe'),
'modSecurity' => $this->getOption('mod_security'),
'forceSecure' => $this->getOption('force_secure'),
) + $this->getPopupStyle();
}

View File

@ -48,10 +48,15 @@ class StyleController extends AbstractController
$response = new JsonResponse();
if ($configs['chat']['iframe']['css']) {
$generator = $this->getAssetManager()->getUrlGenerator();
$css = $generator->generate(
$style->getFilesPath() . '/' . $configs['chat']['iframe']['css'],
UrlGeneratorInterface::ABSOLUTE_URL
);
$css = $request->attributes->get('force_secure') ?
$generator->generateSecure(
$style->getFilesPath() . '/' . $configs['chat']['iframe']['css'],
UrlGeneratorInterface::ABSOLUTE_URL
) :
$generator->generate(
$style->getFilesPath() . '/' . $configs['chat']['iframe']['css'],
UrlGeneratorInterface::ABSOLUTE_URL
);
$response->setData($css);
$response->setCallback('Mibew.Utils.loadStyleSheet');
}