Skip to content

Commit 665f15f

Browse files
committed
fix controllo password per operazioni protette. closes #351
1 parent f301068 commit 665f15f

6 files changed

Lines changed: 32 additions & 24 deletions

File tree

code/app/Http/Controllers/CommonsController.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace App\Http\Controllers;
44

55
use Illuminate\Http\Request;
6-
use Illuminate\Support\Facades\Auth;
6+
use Illuminate\Support\Facades\Hash;
77

88
class CommonsController extends Controller
99
{
@@ -43,12 +43,13 @@ public function postVerify(Request $request)
4343
{
4444
$password = $request->input('password');
4545
$user = $request->user();
46-
$test = Auth::attempt(['username' => $user->username, 'password' => $password]);
47-
if ($test) {
48-
return 'ok';
46+
47+
if (!Hash::check($password, $user->password)) {
48+
return 'ko';
4949
}
5050
else {
51-
return 'ko';
51+
$request->session()->passwordConfirmed();
52+
return 'ok';
5253
}
5354
}
5455
}

code/app/Http/Kernel.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ class Kernel extends HttpKernel
6363
'can' => \Illuminate\Auth\Middleware\Authorize::class,
6464
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
6565
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
66+
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
6667
'nodebugbar' => \App\Http\Middleware\DisableDebugBar::class,
6768
];
6869
}

code/composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"barryvdh/laravel-debugbar": "^3.8",
1313
"barryvdh/laravel-dompdf": "^3.0.0",
1414
"barryvdh/laravel-translation-manager": "^0.6.8",
15-
"php-feed-io/feed-io": "^6.0",
1615
"eluceo/ical": "^2.0",
1716
"genealabs/laravel-model-caching": "^12.0",
1817
"haydenpierce/class-finder": "^0.5.3",
@@ -23,11 +22,13 @@
2322
"madbob/larastrap": "^1.0",
2423
"madbob/laravel-queue-loopback": "^0.7.0",
2524
"pda/pheanstalk": "~4.0",
25+
"php-feed-io/feed-io": "^6.0",
2626
"satispay/gbusiness-api-php-sdk": "^1.3",
2727
"spatie/db-dumper": "^3.0",
2828
"symfony/http-client": "^6.2",
2929
"symfony/psr-http-message-bridge": "^7.2",
30-
"symfony/scaleway-mailer": "^7.0"
30+
"symfony/scaleway-mailer": "^7.0",
31+
"symfony/webhook": "^8.0"
3132
},
3233
"require-dev": {
3334
"brianium/paratest": "^7.2",

code/resources/assets/js/password.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import utils from "./utils";
22

33
$(document).ready(function() {
44
$('body').on('click', '.password-field .bi-eye-slash', function() {
5-
var i = $(this).closest('.password-field').find('input[type!=hidden]');
6-
if (i.attr('type') == 'password')
5+
let i = $(this).closest('.password-field').find('input[type!=hidden]');
6+
if (i.attr('type') == 'password') {
77
i.attr('type', 'text');
8-
else
8+
}
9+
else {
910
i.attr('type', 'password');
11+
}
1012

1113
$(this).toggleClass('bi-eye').toggleClass('bi-eye-close');
1214
});
@@ -19,10 +21,10 @@ $(document).ready(function() {
1921
appendTo = '#' + modal.attr('id');
2022
}
2123

22-
var input = $(this);
24+
let input = $(this);
2325
input.popover({
2426
content: function() {
25-
var ret = `<div>
27+
let ret = `<div>
2628
<div class="row mb-2"><label for="password" class="col-4 col-form-label">${_('texts.auth.password')}</label><div class="col-8"><input type="password" class="form-control" name="password" value="" autocomplete="off" minlength="8"></div></div>
2729
<div class="row mb-2"><label for="password_confirm" class="col-4 col-form-label">${_('texts.auth.confirm_password')}</label><div class="col-8"><input type="password" class="form-control" name="password_confirm" value="" autocomplete="off" minlength="8"></div></div>`;
2830

@@ -37,12 +39,12 @@ $(document).ready(function() {
3739
ret.find('button.btn-success').click(function(e) {
3840
e.preventDefault();
3941
e.stopPropagation();
40-
var password = ret.find('input[name=password]').val();
41-
var confirm = ret.find('input[name=password_confirm]').val();
42+
let password = ret.find('input[name=password]').val();
43+
let confirm = ret.find('input[name=password_confirm]').val();
4244

4345
if (password == confirm) {
4446
if (ret.find('input[name=enforce_change]').length != 0) {
45-
var enforce = ret.find('input[name=enforce_change]').prop('checked') ? 'true' : 'false';
47+
let enforce = ret.find('input[name=enforce_change]').prop('checked') ? 'true' : 'false';
4648
input.closest('.input-group').find('input[name=enforce_password_change]').val(enforce);
4749
}
4850

@@ -77,7 +79,7 @@ $(document).ready(function() {
7779

7880
$('body').on('submit', '#password-protection-dialog form', function(event) {
7981
event.preventDefault();
80-
var modal = $(this).closest('.modal');
82+
let modal = $(this).closest('.modal');
8183

8284
$.ajax({
8385
method: 'POST',
@@ -87,15 +89,15 @@ $(document).ready(function() {
8789
},
8890
success: function(data) {
8991
modal.modal('hide');
90-
var target = modal.attr('data-form-target');
91-
var form = $(target);
92+
let target = modal.attr('data-form-target');
93+
let form = $(target);
9294

9395
if (data == 'ok') {
9496
form.attr('data-password-protected-verified', '1');
9597
form.submit();
9698
}
9799
else {
98-
var save_button = form.find('button:submit');
100+
let save_button = utils.j().submitButton(form);
99101
utils.inlineFeedback(save_button, _('texts.auth.wrong'));
100102
}
101103
}

code/resources/views/movement/status.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@endif
99

1010
@if(get_class($obj) == 'App\Gas')
11-
<x-larastrap::iform classes="form-inline iblock" id="recalculate-account" method="POST" :action="url('/movements/recalculate')" :buttons="[['attributes' => ['type' => 'submit'], 'color' => 'danger', 'label' => __('texts.movements.recalculate_balances')]]">
11+
<x-larastrap::iform classes="form-inline iblock" id="recalculate-account" method="POST" route="movements.recalculate" :buttons="[['attributes' => ['type' => 'submit'], 'color' => 'danger', 'label' => __('texts.movements.recalculate_balances')]]">
1212
<input type="hidden" name="pre-saved-function" value="passwordProtected">
1313
<input type="hidden" name="post-saved-function" value="displayRecalculatedBalances">
1414
</x-larastrap::iform>
@@ -51,7 +51,7 @@
5151

5252
<hr>
5353

54-
<x-larastrap::iform id="close-balance" :action="url('/movements/close')">
54+
<x-larastrap::iform id="close-balance" route="movements.close">
5555
<input type="hidden" name="reload-whole-page" value="1">
5656
<input type="hidden" name="pre-saved-function" value="passwordProtected">
5757
<x-larastrap::datepicker name="date" defaults_now="true" tlabel="generic.closing_date" />

code/routes/web.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,8 @@
181181
Route::get('movements/{targetid}/history', 'MovementsController@getHistory')->name('movements.history');
182182
Route::get('movements/history/details', 'MovementsController@getHistoryDetails')->name('movements.history.details');
183183
Route::get('movements/{targetid}/balance', 'MovementsController@getBalance')->name('movements.balance');
184-
Route::post('movements/recalculate', 'MovementsController@recalculate');
185-
Route::post('movements/close', 'MovementsController@closeBalance');
186184
Route::get('movements/askdelete/{id}', 'MovementsController@askDelete')->name('movements.askdelete');
187185
Route::get('movements/askdeletebalance/{id}', 'MovementsController@askDeleteBalance')->name('movements.askdeletebalance');
188-
Route::post('movements/deletebalance/{id}', 'MovementsController@deleteBalance')->name('movements.deletebalance');
189186
Route::get('movements/document/{type}/{subtype?}', 'MovementsController@document');
190187

191188
Route::get('movtypes/{id}/post_feedback', 'MovementTypesController@postFeedback')->name('movtypes.feedback');
@@ -196,6 +193,12 @@
196193
Route::get('import/gdxp', 'ImportController@getGdxp');
197194
Route::post('import/gdxp', 'ImportController@postGdxp');
198195

196+
Route::middleware('password.confirm')->group(function() {
197+
Route::post('movements/recalculate', 'MovementsController@recalculate')->name('movements.recalculate');
198+
Route::post('movements/close', 'MovementsController@closeBalance')->name('movements.close');
199+
Route::post('movements/deletebalance/{id}', 'MovementsController@deleteBalance')->name('movements.deletebalance');
200+
});
201+
199202
Route::resource('gas', 'GasController');
200203
Route::resource('multigas', 'MultiGasController');
201204
Route::resource('users', 'UsersController');

0 commit comments

Comments
 (0)