浏览代码

Update sudo mode checkpoint view design

Daniel Supernault 2 年之前
父节点
当前提交
091e0b2cb2
共有 2 个文件被更改,包括 139 次插入45 次删除
  1. 40 3
      resources/views/auth/checkpoint.blade.php
  2. 99 42
      resources/views/auth/sudo.blade.php

+ 40 - 3
resources/views/auth/checkpoint.blade.php

@@ -24,13 +24,24 @@
 	            </div>
 	            <div class="card bg-glass">
 	                <div class="card-body">
-	                    <form method="POST">
+	                    <form method="POST" id="2faForm">
 	                        @csrf
 
 	                        <div class="form-group row">
 
 	                            <div class="col-md-12">
-	                                <input id="code" type="text" class="form-control{{ $errors->has('code') ? ' is-invalid' : '' }}" name="code" placeholder="{{__('Two-Factor Authentication Code')}}" required autocomplete="off" autofocus="" inputmode="numeric" minlength="6">
+	                            	<label class="font-weight-bold small text-muted">2FA Code</label>
+	                                <input
+	                                	id="code"
+	                                	type="text"
+	                                	class="form-control{{ $errors->has('code') ? ' is-invalid' : '' }}"
+	                                	name="code"
+	                                	placeholder="{{__('Two-Factor Authentication Code')}}"
+	                                	required
+	                                	autocomplete="new-password"
+	                                	autofocus=""
+	                                	inputmode="numeric"
+	                                	minlength="6">
 
 	                                @if ($errors->has('code'))
 	                                    <span class="invalid-feedback">
@@ -42,7 +53,12 @@
 
 	                        <div class="form-group row mb-0">
 	                            <div class="col-md-12">
-	                                <button type="submit" class="btn btn-success btn-block rounded-pill font-weight-bold">
+	                                <button
+	                                	type="button"
+	                                	id="sbtn"
+	                                	class="btn btn-success btn-block rounded-pill font-weight-bold"
+	                                	onclick="event.preventDefault();handleSubmit()"
+	                                	>
 	                                    {{ __('Verify') }}
 	                                </button>
 
@@ -66,3 +82,24 @@
 	</div>
 </div>
 @endsection
+
+@push('scripts')
+<script type="text/javascript">
+	function handleSubmit() {
+		let warning = document.querySelector('.invalid-feedback');
+		if(warning) {
+			warning.style.display = 'none';
+		}
+
+		let code = document.getElementById('code');
+		code.setAttribute('readonly', 'readonly');
+		code.style.opacity = '20%';
+
+		let btn = document.getElementById('sbtn');
+		btn.classList.add('disabled');
+		btn.setAttribute('disabled', 'disabled');
+		btn.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"><span class="sr-only">Loading...</span></div>';
+		document.getElementById('2faForm').submit()
+	}
+</script>
+@endpush

+ 99 - 42
resources/views/auth/sudo.blade.php

@@ -1,47 +1,104 @@
 @extends('layouts.blank')
 
+@push('styles')
+<link href="{{ mix('css/landing.css') }}" rel="stylesheet">
+<link rel="preload" as="image" href="{{ url('/_landing/bg.jpg')}}" />
+@endpush
+
 @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">Confirm password to continue</p>
-            </div>
-            <div class="card">
-                <div class="card-body">
-                    <form method="POST">
-                        @csrf
-
-                        <div class="form-group">
-                            <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" placeholder="{{__('Password')}}" required>
-
-                            @if ($errors->has('password'))
-                                <span class="invalid-feedback">
-                                    <strong>{{ $errors->first('password') }}</strong>
-                                </span>
-                            @endif
-                        </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">Trust this device and don't ask again</label>
-                            </div>
-                        </div>  
-
-                        <div class="form-group row mb-0">
-                            <div class="col-md-12">
-                                <button type="submit" class="btn btn-success btn-block  font-weight-bold">
-                                    {{ __('Confirm Password') }}
-                                </button>
-
-                            </div>
-                        </div>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
+<div class="page-wrapper">
+	<div class="container mt-5">
+	    <div class="row justify-content-center">
+	        <div class="col-lg-5">
+	            <div class="text-center">
+	                <a href="/">
+	                	<img src="/img/pixelfed-icon-white.svg" height="60px">
+	            	</a>
+	                <h1 class="pt-4 pb-1">Sudo Mode</h1>
+	                <p class="font-weight-light lead pb-2">Confirm password to continue</p>
+	            </div>
+	            <div class="card bg-glass">
+	                <div class="card-body">
+	                    <form method="POST" id="sudoForm">
+	                        @csrf
+
+	                        <div class="form-group">
+	                        	<label class="font-weight-bold small text-muted">Confirm Password</label>
+	                            <input
+	                            	id="password"
+	                            	type="password"
+	                            	class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}"
+	                            	name="password"
+	                            	autocomplete="new-password"
+	                            	placeholder="{{__('Password')}}"
+	                            	required>
+
+	                            @if ($errors->has('password'))
+	                                <span class="invalid-feedback">
+	                                    <strong>{{ $errors->first('password') }}</strong>
+	                                </span>
+	                            @endif
+	                        </div>
+
+	                        <div class="form-group">
+	                            <div class="custom-control custom-checkbox" id="trusted-device">
+	                              <input type="checkbox" class="custom-control-input" name="trustDevice">
+	                              <label class="custom-control-label text-muted" for="trusted-device">Trust this device and don't ask again</label>
+	                            </div>
+	                        </div>
+
+	                        <div class="form-group row mb-0">
+	                            <div class="col-md-12">
+	                                <button
+	                                	type="button"
+	                                	id="sbtn"
+	                                	class="btn btn-success rounded-pill btn-block font-weight-bold"
+	                                	onclick="event.preventDefault();handleSubmit()">
+	                                    {{ __('Confirm Password') }}
+	                                </button>
+
+	                            </div>
+	                        </div>
+	                    </form>
+	                </div>
+	            </div>
+
+	            <div class="d-flex justify-content-between my-3">
+	            	<p class="mb-0 small">
+	            		<span class="text-muted">Logged in as:</span> {{request()->user()->username}}
+	            	</p>
+
+	            	<form action="/logout" method="post">
+	            		@csrf
+	            		<button type="submit" class="btn btn-link p-0 btn-sm text-white font-weight-bold">Logout</button>
+	            	</form>
+	            </div>
+	        </div>
+	    </div>
+	</div>
 </div>
 @endsection
+
+@push('scripts')
+<script type="text/javascript">
+	function handleSubmit() {
+		let warning = document.querySelector('.invalid-feedback');
+		if(warning) {
+			warning.style.display = 'none';
+		}
+
+		let email = document.getElementById('password');
+		email.setAttribute('readonly', 'readonly');
+		email.style.opacity = '20%';
+
+		let trustedDevice = document.getElementById('trusted-device');
+		trustedDevice.style.opacity = '20%';
+
+		let btn = document.getElementById('sbtn');
+		btn.classList.add('disabled');
+		btn.setAttribute('disabled', 'disabled');
+		btn.innerHTML = '<div class="spinner-border spinner-border-sm" role="status"><span class="sr-only">Loading...</span></div>';
+		document.getElementById('sudoForm').submit()
+	}
+</script>
+@endpush