New configuration file
This commit is contained in:
parent
df86035225
commit
48eacc5cb8
|
@ -1,9 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
|
use Symfony\Component\Yaml\Yaml;
|
||||||
|
|
||||||
$app['config.locator.path'] = $app['root_path'].'/app/config/';
|
$app['config.locator.path'] = $app['root_path'].'/app/config/';
|
||||||
|
|
||||||
$app['config.locator'] = function ($app) {
|
$app['config.locator'] = function ($app) {
|
||||||
return new FileLocator($app['config.locator.path']);
|
return new FileLocator($app['config.locator.path']);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app['settings'] = $app->share(function ($app) {
|
||||||
|
return Yaml::parse($app['config.locator']->locate('config.yml'));
|
||||||
|
});
|
||||||
|
|
|
@ -3,10 +3,16 @@
|
||||||
use GitWrapper\GitWrapper;
|
use GitWrapper\GitWrapper;
|
||||||
use Gist\Service\Gist;
|
use Gist\Service\Gist;
|
||||||
|
|
||||||
$app['gist_path'] = $app['root_path'].'/data/git';
|
$dataPath = $app['settings']['data']['path'];
|
||||||
|
|
||||||
|
if ($dataPath[0] !== '/') {
|
||||||
|
$app['gist_path'] = $app['root_path'].$dataPath;
|
||||||
|
} else {
|
||||||
|
$app['gist_path'] = $dataPath;
|
||||||
|
}
|
||||||
|
|
||||||
$app['git_wrapper'] = $app->share(function ($app) {
|
$app['git_wrapper'] = $app->share(function ($app) {
|
||||||
return new GitWrapper('/usr/bin/git');
|
return new GitWrapper($app['settings']['git']['path']);
|
||||||
});
|
});
|
||||||
|
|
||||||
$app['git_working_copy'] = $app->share(function ($app) {
|
$app['git_working_copy'] = $app->share(function ($app) {
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
use Gist\Api\Client;
|
use Gist\Api\Client;
|
||||||
|
|
||||||
$app['api_client'] = $app->share(function ($app) {
|
$app['api_client'] = $app->share(function ($app) {
|
||||||
return new Client(['base_uri' => 'https://gist.deblan.org/']);
|
return new Client(['base_uri' => $app['settings']['api']['base_uri']]);
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,13 +9,9 @@ use Gist\Security\AuthenticationListener;
|
||||||
use Gist\Security\LogoutSuccessHandler;
|
use Gist\Security\LogoutSuccessHandler;
|
||||||
use Silex\Provider\SessionServiceProvider;
|
use Silex\Provider\SessionServiceProvider;
|
||||||
|
|
||||||
$app['enable_registration'] = true;
|
$securitySettings = $app['settings']['security'];
|
||||||
$app['enable_login'] = true;
|
|
||||||
$app['login_required_to_edit_gist'] = false;
|
|
||||||
$app['login_required_to_view_gist'] = false;
|
|
||||||
$app['login_required_to_view_embeded_gist'] = false;
|
|
||||||
|
|
||||||
$app['token'] = 'ThisTokenIsNotSoSecretChangeIt';
|
$app['token'] = $securitySettings['token'];
|
||||||
|
|
||||||
$app['salt_generator'] = $app->share(function ($app) {
|
$app['salt_generator'] = $app->share(function ($app) {
|
||||||
return new SaltGenerator();
|
return new SaltGenerator();
|
||||||
|
@ -77,10 +73,10 @@ $firewall = [
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($app['login_required_to_edit_gist'] || $app['login_required_to_view_gist'] || $app['login_required_to_view_embeded_gist']) {
|
if ($securitySettings['login_required_to_edit_gist'] || $securitySettings['login_required_to_view_gist'] || $securitySettings['login_required_to_view_embeded_gist']) {
|
||||||
$exceptedUriPattern = ['login', 'register'];
|
$exceptedUriPattern = ['login', 'register'];
|
||||||
|
|
||||||
if ($app['login_required_to_view_gist'] === true) {
|
if ($securitySettings['login_required_to_view_gist'] === true) {
|
||||||
$firewall['security.access_rules'][] = ['^/[a-z]{2}/view.*$', 'ROLE_USER'];
|
$firewall['security.access_rules'][] = ['^/[a-z]{2}/view.*$', 'ROLE_USER'];
|
||||||
$firewall['security.access_rules'][] = ['^/[a-z]{2}/revs.*$', 'ROLE_USER'];
|
$firewall['security.access_rules'][] = ['^/[a-z]{2}/revs.*$', 'ROLE_USER'];
|
||||||
} else {
|
} else {
|
||||||
|
@ -88,13 +84,13 @@ if ($app['login_required_to_edit_gist'] || $app['login_required_to_view_gist'] |
|
||||||
$exceptedUriPattern[] = 'revs';
|
$exceptedUriPattern[] = 'revs';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($app['login_required_to_view_embeded_gist'] === true) {
|
if ($securitySettings['login_required_to_view_embeded_gist'] === true) {
|
||||||
$firewall['security.access_rules'][] = ['^/[a-z]{2}/embed.*$', 'ROLE_USER'];
|
$firewall['security.access_rules'][] = ['^/[a-z]{2}/embed.*$', 'ROLE_USER'];
|
||||||
} else {
|
} else {
|
||||||
$exceptedUriPattern[] = 'embed';
|
$exceptedUriPattern[] = 'embed';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($app['login_required_to_edit_gist'] === true) {
|
if ($securitySettings['login_required_to_edit_gist'] === true) {
|
||||||
$firewall['security.access_rules'][] = ['^/[a-z]{2}/(?!('.implode('|', $exceptedUriPattern).')).*$', 'ROLE_USER'];
|
$firewall['security.access_rules'][] = ['^/[a-z]{2}/(?!('.implode('|', $exceptedUriPattern).')).*$', 'ROLE_USER'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
15
app/config/config.yml.dist
Normal file
15
app/config/config.yml.dist
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
security:
|
||||||
|
token: ThisTokenIsNotSoSecretChangeIt
|
||||||
|
enable_registration: true
|
||||||
|
enable_login: true
|
||||||
|
login_required_to_edit_gist: true
|
||||||
|
login_required_to_view_gist: true
|
||||||
|
login_required_to_view_embeded_gist: true
|
||||||
|
api:
|
||||||
|
base_url: 'https://gist.deblan.org/'
|
||||||
|
data:
|
||||||
|
path: data/git
|
||||||
|
git:
|
||||||
|
path: /usr/bin/git
|
||||||
|
theme:
|
||||||
|
name: dark
|
|
@ -26,7 +26,7 @@ class LoginController extends Controller
|
||||||
{
|
{
|
||||||
$app = $this->getApp();
|
$app = $this->getApp();
|
||||||
|
|
||||||
if (false === $app['enable_registration']) {
|
if (false === $app['settings']['enable_registration']) {
|
||||||
return new Response('', 403);
|
return new Response('', 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ class LoginController extends Controller
|
||||||
{
|
{
|
||||||
$app = $this->getApp();
|
$app = $this->getApp();
|
||||||
|
|
||||||
if (false === $app['enable_login']) {
|
if (false === $app['settings']['enable_login']) {
|
||||||
return new Response('', 403);
|
return new Response('', 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
{% set theme_settings = app.settings.theme %}
|
||||||
|
{% set security_dettings = app.settings.security %}
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
<head>
|
<head>
|
||||||
{% block css %}
|
{% block css %}
|
||||||
<link rel="stylesheet" href="{{ web_path }}components/bootstrap/dist/css/bootstrap.min.css" />
|
<link rel="stylesheet" href="{{ web_path }}components/bootstrap/dist/css/bootstrap.min.css" />
|
||||||
<link rel="stylesheet" href="{{ web_path }}components/flag-icon-css/css/flag-icon.min.css" />
|
<link rel="stylesheet" href="{{ web_path }}components/flag-icon-css/css/flag-icon.min.css" />
|
||||||
|
|
||||||
|
{% if theme_settings.name == 'dark' %}
|
||||||
<link rel="stylesheet" href="{{ web_path }}app/css/bootstrap/bootstrap.min.css" />
|
<link rel="stylesheet" href="{{ web_path }}app/css/bootstrap/bootstrap.min.css" />
|
||||||
<link rel="stylesheet" href="{{ web_path }}app/css/app.css" />
|
{% else %}
|
||||||
|
<link rel="stylesheet" href="{{ web_path }}components/bootstrap/dist/css/bootstrap-theme.min.css" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="{{ web_path }}app/css/themes/{{ theme_settings.name }}.css" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block metas %}
|
{% block metas %}
|
||||||
|
@ -17,7 +25,7 @@
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
{% block nav %}
|
{% block nav %}
|
||||||
<nav class="navbar navbar-inverse">
|
<nav class="navbar navbar-{{ theme_settings.name == 'dark' ? 'inverse' : 'default' }}">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="navbar-header">
|
<div class="navbar-header">
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-menu">
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-menu">
|
||||||
|
@ -48,14 +56,14 @@
|
||||||
{{ 'app.menu.my.logout.title'|trans }}
|
{{ 'app.menu.my.logout.title'|trans }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% elseif app.enable_login %}
|
{% elseif security_dettings.enable_login %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ path('login') }}">
|
<a href="{{ path('login') }}">
|
||||||
{{ 'app.menu.my.login.title'|trans }}
|
{{ 'app.menu.my.login.title'|trans }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{% if app.enable_registration %}
|
{% if security_dettings.enable_registration %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ path('register') }}">
|
<a href="{{ path('register') }}">
|
||||||
{{ 'app.menu.my.register.title'|trans }}
|
{{ 'app.menu.my.register.title'|trans }}
|
||||||
|
|
Loading…
Reference in a new issue