forked from mirror/pixelfed
Added trusted devices to sudo mode
This commit is contained in:
parent
8ffb20f57e
commit
0c82c97069
3 changed files with 22 additions and 12 deletions
|
@ -374,10 +374,13 @@ class AccountController extends Controller
|
||||||
public function sudoModeVerify(Request $request)
|
public function sudoModeVerify(Request $request)
|
||||||
{
|
{
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'password' => 'required|string|max:500'
|
'password' => 'required|string|max:500',
|
||||||
|
'trustDevice' => 'nullable'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
$password = $request->input('password');
|
$password = $request->input('password');
|
||||||
|
$trustDevice = $request->input('trustDevice') == 'on';
|
||||||
$next = $request->session()->get('redirectNext', '/');
|
$next = $request->session()->get('redirectNext', '/');
|
||||||
if($request->session()->has('sudoModeAttempts')) {
|
if($request->session()->has('sudoModeAttempts')) {
|
||||||
$count = (int) $request->session()->get('sudoModeAttempts');
|
$count = (int) $request->session()->get('sudoModeAttempts');
|
||||||
|
@ -387,6 +390,9 @@ class AccountController extends Controller
|
||||||
}
|
}
|
||||||
if(password_verify($password, $user->password) === true) {
|
if(password_verify($password, $user->password) === true) {
|
||||||
$request->session()->put('sudoMode', time());
|
$request->session()->put('sudoMode', time());
|
||||||
|
if($trustDevice == true) {
|
||||||
|
$request->session()->put('sudoTrustDevice', 1);
|
||||||
|
}
|
||||||
return redirect($next);
|
return redirect($next);
|
||||||
} else {
|
} else {
|
||||||
return redirect()
|
return redirect()
|
||||||
|
|
|
@ -25,7 +25,7 @@ class DangerZone
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
return redirect(route('login'));
|
return redirect(route('login'));
|
||||||
}
|
}
|
||||||
if(!$request->is('i/auth/sudo')) {
|
if(!$request->is('i/auth/sudo') && $request->session()->get('sudoTrustDevice') != 1) {
|
||||||
if( !$request->session()->has('sudoMode') ) {
|
if( !$request->session()->has('sudoMode') ) {
|
||||||
$request->session()->put('redirectNext', $request->url());
|
$request->session()->put('redirectNext', $request->url());
|
||||||
return redirect('/i/auth/sudo');
|
return redirect('/i/auth/sudo');
|
||||||
|
|
|
@ -13,19 +13,23 @@
|
||||||
<form method="POST">
|
<form method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<div class="form-group row">
|
<div class="form-group">
|
||||||
|
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" placeholder="{{__('Password')}}" required>
|
||||||
|
|
||||||
<div class="col-md-12">
|
@if ($errors->has('password'))
|
||||||
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" placeholder="{{__('Password')}}" required>
|
<span class="invalid-feedback">
|
||||||
|
<strong>{{ $errors->first('password') }}</strong>
|
||||||
@if ($errors->has('password'))
|
</span>
|
||||||
<span class="invalid-feedback">
|
@endif
|
||||||
<strong>{{ $errors->first('password') }}</strong>
|
|
||||||
</span>
|
|
||||||
@endif
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-checkbox">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="trusted-device" name="trustDevice">
|
||||||
|
<label class="custom-control-label text-muted" for="trusted-device">Don't ask me again, trust this device</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group row mb-0">
|
<div class="form-group row mb-0">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<button type="submit" class="btn btn-success btn-block font-weight-bold">
|
<button type="submit" class="btn btn-success btn-block font-weight-bold">
|
||||||
|
|
Loading…
Add table
Reference in a new issue