Added warn when try do download an invalid config

This commit is contained in:
Sergio Brighenti 2018-11-15 17:10:43 +01:00
parent 332ef074be
commit 0444705121
14 changed files with 37 additions and 70 deletions

View file

@ -7,7 +7,6 @@ use League\Flysystem\Adapter\Local;
use League\Flysystem\FileNotFoundException; use League\Flysystem\FileNotFoundException;
use League\Flysystem\Filesystem; use League\Flysystem\Filesystem;
use Slim\Container; use Slim\Container;
use Slim\Http\Response;
abstract class Controller abstract class Controller
{ {
@ -57,6 +56,7 @@ abstract class Controller
try { try {
$totalSize += $filesystem->getSize($media->storage_path); $totalSize += $filesystem->getSize($media->storage_path);
} catch (FileNotFoundException $e) { } catch (FileNotFoundException $e) {
$this->logger->error('Error calculating file size', [$e->getTraceAsString()]);
} }
} }

View file

@ -57,7 +57,7 @@ class LoginController extends Controller
return $response->withRedirect(Session::get('redirectTo')); return $response->withRedirect(Session::get('redirectTo'));
} }
return redirect($response,'/home'); return redirect($response, '/home');
} }
/** /**
@ -70,7 +70,7 @@ class LoginController extends Controller
Session::clear(); Session::clear();
Session::set('logged', false); Session::set('logged', false);
Session::alert('Goodbye!', 'warning'); Session::alert('Goodbye!', 'warning');
return redirect($response,'/login'); return redirect($response, '/login');
} }
} }

View file

@ -58,22 +58,22 @@ class UserController extends Controller
{ {
if ($request->getParam('email') === null) { if ($request->getParam('email') === null) {
Session::alert('The email is required.', 'danger'); Session::alert('The email is required.', 'danger');
return redirect($response,'/user/create'); return redirect($response, '/user/create');
} }
if ($request->getParam('username') === null) { if ($request->getParam('username') === null) {
Session::alert('The username is required.', 'danger'); Session::alert('The username is required.', 'danger');
return redirect($response,'/user/create'); return redirect($response, '/user/create');
} }
if ($request->getParam('password') === null) { if ($request->getParam('password') === null) {
Session::alert('The password is required.', 'danger'); Session::alert('The password is required.', 'danger');
return redirect($response,'/user/create'); return redirect($response, '/user/create');
} }
if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ?', $request->getParam('username'))->fetch()->count > 0) { if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ?', $request->getParam('username'))->fetch()->count > 0) {
Session::alert('The username already taken.', 'danger'); Session::alert('The username already taken.', 'danger');
return redirect($response,'/user/create'); return redirect($response, '/user/create');
} }
do { do {
@ -89,13 +89,13 @@ class UserController extends Controller
$request->getParam('is_admin') !== null, $request->getParam('is_admin') !== null,
$request->getParam('is_active') !== null, $request->getParam('is_active') !== null,
$userCode, $userCode,
$token $token,
]); ]);
Session::alert("User '{$request->getParam('username')}' created!", 'success'); Session::alert("User '{$request->getParam('username')}' created!", 'success');
$this->logger->info('User ' . Session::get('username') . ' created a new user.', [array_diff($request->getParams(), ['password'])]); $this->logger->info('User ' . Session::get('username') . ' created a new user.', [array_diff($request->getParams(), ['password'])]);
return redirect($response,'/users'); return redirect($response, '/users');
} }
/** /**
@ -115,7 +115,7 @@ class UserController extends Controller
return $this->view->render($response, 'user/edit.twig', [ return $this->view->render($response, 'user/edit.twig', [
'profile' => false, 'profile' => false,
'user' => $user 'user' => $user,
]); ]);
} }
@ -136,22 +136,22 @@ class UserController extends Controller
if ($request->getParam('email') === null) { if ($request->getParam('email') === null) {
Session::alert('The email is required.', 'danger'); Session::alert('The email is required.', 'danger');
return redirect($response,'/user/' . $args['id'] . '/edit'); return redirect($response, '/user/' . $args['id'] . '/edit');
} }
if ($request->getParam('username') === null) { if ($request->getParam('username') === null) {
Session::alert('The username is required.', 'danger'); Session::alert('The username is required.', 'danger');
return redirect($response,'/user/' . $args['id'] . '/edit'); return redirect($response, '/user/' . $args['id'] . '/edit');
} }
if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ? AND `username` <> ?', [$request->getParam('username'), $user->username])->fetch()->count > 0) { if ($this->database->query('SELECT COUNT(*) AS `count` FROM `users` WHERE `username` = ? AND `username` <> ?', [$request->getParam('username'), $user->username])->fetch()->count > 0) {
Session::alert('The username already taken.', 'danger'); Session::alert('The username already taken.', 'danger');
return redirect($response,'/user/' . $args['id'] . '/edit'); return redirect($response, '/user/' . $args['id'] . '/edit');
} }
if ($user->id === Session::get('user_id') && $request->getParam('is_admin') === null) { if ($user->id === Session::get('user_id') && $request->getParam('is_admin') === null) {
Session::alert('You cannot demote yourself.', 'danger'); Session::alert('You cannot demote yourself.', 'danger');
return redirect($response,'/user/' . $args['id'] . '/edit'); return redirect($response, '/user/' . $args['id'] . '/edit');
} }
if ($request->getParam('password') !== null && !empty($request->getParam('password'))) { if ($request->getParam('password') !== null && !empty($request->getParam('password'))) {
@ -161,7 +161,7 @@ class UserController extends Controller
password_hash($request->getParam('password'), PASSWORD_DEFAULT), password_hash($request->getParam('password'), PASSWORD_DEFAULT),
$request->getParam('is_admin') !== null, $request->getParam('is_admin') !== null,
$request->getParam('is_active') !== null, $request->getParam('is_active') !== null,
$user->id $user->id,
]); ]);
} else { } else {
$this->database->query('UPDATE `users` SET `email`=?, `username`=?, `is_admin`=?, `active`=? WHERE `id` = ?', [ $this->database->query('UPDATE `users` SET `email`=?, `username`=?, `is_admin`=?, `active`=? WHERE `id` = ?', [
@ -169,14 +169,14 @@ class UserController extends Controller
$request->getParam('username'), $request->getParam('username'),
$request->getParam('is_admin') !== null, $request->getParam('is_admin') !== null,
$request->getParam('is_active') !== null, $request->getParam('is_active') !== null,
$user->id $user->id,
]); ]);
} }
Session::alert("User '{$request->getParam('username')}' updated!", 'success'); Session::alert("User '{$request->getParam('username')}' updated!", 'success');
$this->logger->info('User ' . Session::get('username') . " updated $user->id.", [$user, array_diff($request->getParams(), ['password'])]); $this->logger->info('User ' . Session::get('username') . " updated $user->id.", [$user, array_diff($request->getParams(), ['password'])]);
return redirect($response,'/users'); return redirect($response, '/users');
} }
@ -197,7 +197,7 @@ class UserController extends Controller
if ($user->id === Session::get('user_id')) { if ($user->id === Session::get('user_id')) {
Session::alert('You cannot delete yourself.', 'danger'); Session::alert('You cannot delete yourself.', 'danger');
return redirect($response,'/users'); return redirect($response, '/users');
} }
$this->database->query('DELETE FROM `users` WHERE `id` = ?', $user->id); $this->database->query('DELETE FROM `users` WHERE `id` = ?', $user->id);
@ -205,7 +205,7 @@ class UserController extends Controller
Session::alert('User deleted.', 'success'); Session::alert('User deleted.', 'success');
$this->logger->info('User ' . Session::get('username') . " deleted $user->id."); $this->logger->info('User ' . Session::get('username') . " deleted $user->id.");
return redirect($response,'/users'); return redirect($response, '/users');
} }
/** /**
@ -229,7 +229,7 @@ class UserController extends Controller
return $this->view->render($response, 'user/edit.twig', [ return $this->view->render($response, 'user/edit.twig', [
'profile' => true, 'profile' => true,
'user' => $user 'user' => $user,
]); ]);
} }
@ -255,26 +255,26 @@ class UserController extends Controller
if ($request->getParam('email') === null) { if ($request->getParam('email') === null) {
Session::alert('The email is required.', 'danger'); Session::alert('The email is required.', 'danger');
return redirect($response,'/profile'); return redirect($response, '/profile');
} }
if ($request->getParam('password') !== null && !empty($request->getParam('password'))) { if ($request->getParam('password') !== null && !empty($request->getParam('password'))) {
$this->database->query('UPDATE `users` SET `email`=?, `password`=? WHERE `id` = ?', [ $this->database->query('UPDATE `users` SET `email`=?, `password`=? WHERE `id` = ?', [
$request->getParam('email'), $request->getParam('email'),
password_hash($request->getParam('password'), PASSWORD_DEFAULT), password_hash($request->getParam('password'), PASSWORD_DEFAULT),
$user->id $user->id,
]); ]);
} else { } else {
$this->database->query('UPDATE `users` SET `email`=? WHERE `id` = ?', [ $this->database->query('UPDATE `users` SET `email`=? WHERE `id` = ?', [
$request->getParam('email'), $request->getParam('email'),
$user->id $user->id,
]); ]);
} }
Session::alert('Profile updated successfully!', 'success'); Session::alert('Profile updated successfully!', 'success');
$this->logger->info('User ' . Session::get('username') . " updated profile of $user->id."); $this->logger->info('User ' . Session::get('username') . " updated profile of $user->id.");
return redirect($response,'/profile'); return redirect($response, '/profile');
} }
/** /**
@ -301,7 +301,7 @@ class UserController extends Controller
$this->database->query('UPDATE `users` SET `token`=? WHERE `id` = ?', [ $this->database->query('UPDATE `users` SET `token`=? WHERE `id` = ?', [
$token, $token,
$user->id $user->id,
]); ]);
$this->logger->info('User ' . Session::get('username') . " refreshed token of user $user->id."); $this->logger->info('User ' . Session::get('username') . " refreshed token of user $user->id.");
@ -331,6 +331,11 @@ class UserController extends Controller
throw new UnauthorizedException(); throw new UnauthorizedException();
} }
if ($user->token === null || $user->token === '') {
Session::alert('You don\'t have a personal upload token. (Click the update token button and try again)', 'danger');
return $response->withRedirect($request->getHeaderLine('HTTP_REFERER'));
}
$base_url = $this->settings['base_url']; $base_url = $this->settings['base_url'];
$json = [ $json = [
'DestinationType' => 'ImageUploader, TextUploader, FileUploader', 'DestinationType' => 'ImageUploader, TextUploader, FileUploader',
@ -343,6 +348,7 @@ class UserController extends Controller
], ],
'URL' => '$json:url$', 'URL' => '$json:url$',
'ThumbnailURL' => '$json:url$/raw', 'ThumbnailURL' => '$json:url$/raw',
'DeletionURL' => '$json:url$/delete',
]; ];
return $response return $response

View file

@ -1,7 +1,7 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<title>Installing XBackBone | XBackBone</title> <title>Installing XBackBone</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="A lightweight PHP backend for ShareX"> <meta name="description" content="A lightweight PHP backend for ShareX">
@ -16,27 +16,6 @@
<script src="{{ request.uri }}../static/highlightjs/highlight.pack.min.js"></script> <script src="{{ request.uri }}../static/highlightjs/highlight.pack.min.js"></script>
<script src="{{ request.uri }}../static/clipboardjs/clipboard.min.js"></script> <script src="{{ request.uri }}../static/clipboardjs/clipboard.min.js"></script>
<script src="{{ request.uri }}../static/app/app.js"></script> <script src="{{ request.uri }}../static/app/app.js"></script>
<style>
html,
body {
height: 100%;
}
body {
display: -ms-flexbox;
display: -webkit-box;
display: flex;
-ms-flex-align: center;
-ms-flex-pack: center;
-webkit-box-align: center;
align-items: center;
-webkit-box-pack: center;
justify-content: center;
padding-bottom: 40px;
background-color: #f5f5f5;
margin-bottom: 0;
}
</style>
</head> </head>
<body> <body>
<div class="container"> <div class="container">

View file

@ -5,12 +5,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="A lightweight PHP backend for ShareX"> <meta name="description" content="A lightweight PHP backend for ShareX">
<link href="{{ config.base_url }}/static/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="{{ config.base_url }}/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="{{ config.base_url }}/static/highlightjs/styles/monokai.css" rel="stylesheet"> <link href="{{ config.base_url }}/static/highlightjs/styles/monokai.css" rel="stylesheet">
<link href="{{ config.base_url }}/static/videojs/video-js.min.css" rel="stylesheet"> <link href="{{ config.base_url }}/static/videojs/video-js.min.css" rel="stylesheet">
<link href="{{ config.base_url }}/static/app/app.css" rel="stylesheet"> <link href="{{ config.base_url }}/static/app/app.css" rel="stylesheet">
<script src="{{ config.base_url }}/static/jquery/jquery.min.js"></script> <script src="{{ config.base_url }}/static/jquery/jquery.min.js"></script>
<script src="{{ config.base_url }}/static/bootstrap/js/bootstrap.bundle.min.js"></script> <script src="{{ config.base_url }}/static/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="{{ config.base_url }}/static/fontawesome/js/all.min.js"></script> <script src="{{ config.base_url }}/static/fontawesome/js/all.min.js"></script>
@ -19,11 +17,7 @@
<script src="{{ config.base_url }}/static/videojs/video.min.js"></script> <script src="{{ config.base_url }}/static/videojs/video.min.js"></script>
<script src="{{ config.base_url }}/static/app/app.js"></script> <script src="{{ config.base_url }}/static/app/app.js"></script>
<script>hljs.initHighlightingOnLoad();</script> <script>hljs.initHighlightingOnLoad();</script>
<script> <script>window.AppConfig = {'base_url': '{{ config.base_url }}'}</script>
window.AppConfig = {
'base_url': '{{ config.base_url }}'
}
</script>
{% block head %}{% endblock %} {% block head %}{% endblock %}
</head> </head>
<body> <body>

View file

@ -1,7 +1,5 @@
<footer class="footer"> <footer class="footer">
<div class="container-fluid"> <div class="container-fluid">
<div class="text-muted">Proudly powered by <div class="text-muted">Proudly powered by <a href="https://github.com/SergiX44/XBackBone">XBackBone{% if session.logged %} v{{ PLATFORM_VERSION }}{% endif %}</a></div>
<a href="https://github.com/SergiX44/XBackBone">XBackBone{% if session.logged %} v{{ PLATFORM_VERSION }}{% endif %}</a>
</div>
</div> </div>
</footer> </footer>

View file

@ -3,9 +3,7 @@
{% block title %}Admin Home{% endblock %} {% block title %}Admin Home{% endblock %}
{% block content %} {% block content %}
{% include 'comp/navbar.twig' %} {% include 'comp/navbar.twig' %}
<div class="container"> <div class="container">
{% include 'comp/alert.twig' %} {% include 'comp/alert.twig' %}
{% if medias|length > 0 %} {% if medias|length > 0 %}

View file

@ -3,9 +3,7 @@
{% block title %}Home{% endblock %} {% block title %}Home{% endblock %}
{% block content %} {% block content %}
{% include 'comp/navbar.twig' %} {% include 'comp/navbar.twig' %}
<div class="container"> <div class="container">
{% include 'comp/alert.twig' %} {% include 'comp/alert.twig' %}
{% if medias|length > 0 %} {% if medias|length > 0 %}

View file

@ -3,9 +3,7 @@
{% block title %}System{% endblock %} {% block title %}System{% endblock %}
{% block content %} {% block content %}
{% include 'comp/navbar.twig' %} {% include 'comp/navbar.twig' %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-xl-3 col-sm-6 mb-3"> <div class="col-xl-3 col-sm-6 mb-3">

View file

@ -13,7 +13,6 @@
</div> </div>
</div> </div>
{% if config.displayErrorDetails %} {% if config.displayErrorDetails %}
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<div class="card"> <div class="card">
@ -27,5 +26,4 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}

View file

@ -4,7 +4,6 @@
{% block content %} {% block content %}
{% include 'comp/navbar.twig' %} {% include 'comp/navbar.twig' %}
<div class="container"> <div class="container">
{% include 'comp/alert.twig' %} {% include 'comp/alert.twig' %}
<div class="row justify-content-center"> <div class="row justify-content-center">

View file

@ -4,7 +4,6 @@
{% block content %} {% block content %}
{% include 'comp/navbar.twig' %} {% include 'comp/navbar.twig' %}
<div class="container"> <div class="container">
{% include 'comp/alert.twig' %} {% include 'comp/alert.twig' %}
<div class="row justify-content-center"> <div class="row justify-content-center">

View file

@ -9,7 +9,7 @@
<div class="card box-shadow"> <div class="card box-shadow">
<div class="card-body"> <div class="card-body">
<div class="text-right"> <div class="text-right">
<a href="{{ config.base_url }}/user/create" class="btn btn-outline-success mb-3"><i class="fas fa-plus"></i>Add User</a> <a href="{{ config.base_url }}/user/create" class="btn btn-outline-success mb-3"><i class="fas fa-plus"></i> Add User</a>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover"> <table class="table table-hover">

View file

@ -9,7 +9,7 @@ var app = {
$('.refresh-token').click(app.refreshToken); $('.refresh-token').click(app.refreshToken);
$('#themes').mousedown(app.loadThemes); $('#themes').mousedown(app.loadThemes);
$('.alert').fadeTo(2000, 500).slideUp(500, function () { $('.alert').fadeTo(4000, 500).slideUp(500, function () {
$('.alert').slideUp(500); $('.alert').slideUp(500);
}); });
@ -82,7 +82,7 @@ var app = {
$themes.unbind('mousedown'); $themes.unbind('mousedown');
}, },
telegramShare: function () { telegramShare: function () {
$("<a>").attr("href", $('#telegram-share-button').data('url') + $('#telegram-share-text').val()).attr("target", "_blank")[0].click(); window.open($('#telegram-share-button').data('url') + $('#telegram-share-text').val(), '_blank');
} }
}; };