mirror of https://github.com/pixelfed/pixelfed
Prepare 2FA
parent
63ca2a209d
commit
6d890aaf7f
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Auth;
|
||||||
|
use Closure;
|
||||||
|
|
||||||
|
class TwoFactorAuth
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @param \Closure $next
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle($request, Closure $next)
|
||||||
|
{
|
||||||
|
if($request->user()) {
|
||||||
|
$user = $request->user();
|
||||||
|
$enabled = (bool) $user->{'2fa_enabled'};
|
||||||
|
if($enabled != false) {
|
||||||
|
$checkpoint = 'i/auth/checkpoint';
|
||||||
|
if($request->session()->has('2fa.session.active') !== true && !$request->is($checkpoint))
|
||||||
|
{
|
||||||
|
return redirect('/i/auth/checkpoint');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
@extends('layouts.blank')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="container mt-5">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-lg-5">
|
||||||
|
<div class="text-center">
|
||||||
|
<img src="/img/pixelfed-icon-color.svg" height="60px">
|
||||||
|
<p class="font-weight-light h3 py-4">Verify 2FA Code to continue</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<form method="POST">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
|
||||||
|
<div class="col-md-12">
|
||||||
|
<input id="code" type="code" class="form-control{{ $errors->has('code') ? ' is-invalid' : '' }}" name="code" placeholder="{{__('Two-Factor Authentication Code')}}" required autocomplete="off">
|
||||||
|
|
||||||
|
@if ($errors->has('code'))
|
||||||
|
<span class="invalid-feedback">
|
||||||
|
<strong>{{ $errors->first('code') }}</strong>
|
||||||
|
</span>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if(config('pixelfed.recaptcha'))
|
||||||
|
<div class="row my-3">
|
||||||
|
{!! Recaptcha::render() !!}
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="form-group row mb-0">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<button type="submit" class="btn btn-success btn-block font-weight-bold">
|
||||||
|
{{ __('Verify') }}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
@ -0,0 +1,22 @@
|
|||||||
|
@extends('settings.template')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
|
||||||
|
<div class="title">
|
||||||
|
<h3 class="font-weight-bold">Two-Factor Authentication Recovery Codes</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p class="lead pb-3">
|
||||||
|
Each code can only be used once.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="lead"></p>
|
||||||
|
<ul class="list-group">
|
||||||
|
@foreach($codes as $code)
|
||||||
|
<li class="list-group-item"><code>{{$code}}</code></li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
@endsection
|
Loading…
Reference in New Issue