Initial commit - Physiotherapy Clinic Management System
This commit is contained in:
commit
dbb326f2cc
300 files changed
+144285
No files matched your search
@@ -0,0 +1,46 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.two_factor_auth'))
|
||||
|
||||
@section('content')
|
||||
<div class="login-box">
|
||||
<div class="login-logo">
|
||||
<a href="#"><b>{{ __('app.clinic_management_system') }}</b></a>
|
||||
</div>
|
||||
<!-- /.login-logo -->
|
||||
<div class="card">
|
||||
<div class="card-body login-card-body">
|
||||
<p class="login-box-msg">{{ __('app.two_factor_auth') }}</p>
|
||||
|
||||
<form action="{{ route('2fa.challenge') }}" method="POST">
|
||||
@csrf
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" name="code" class="form-control @error('code') is-invalid @enderror" placeholder="{{ __('app.verify_code') }}" required autofocus autocomplete="one-time-code">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-shield-alt"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('code')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('app.verify_and_enable') }}</button>
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<p class="mt-3 mb-0 text-center">
|
||||
<small>{{ __('app.enter_code_from_app') }}</small>
|
||||
</p>
|
||||
</div>
|
||||
<!-- /.login-card-body -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.login-box -->
|
||||
@endsection
|
||||
@@ -0,0 +1,42 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.enable_2fa'))
|
||||
@section('page_title', __('app.enable_2fa'))
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ __('app.enable_2fa') }}</h3>
|
||||
</div>
|
||||
<div class="card-body text-center">
|
||||
<p>{{ __('app.scan_qr_code') }}</p>
|
||||
|
||||
<div class="mb-4">
|
||||
{!! $qrCodeSvg !!}
|
||||
</div>
|
||||
|
||||
<div class="alert alert-secondary">
|
||||
<strong>Secret:</strong> {{ $secret }}
|
||||
<br><small>{{ __('app.enter_code_from_app') }}</small>
|
||||
</div>
|
||||
|
||||
<form action="{{ route('2fa.confirm') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<input type="text" name="code" class="form-control @error('code') is-invalid @enderror" placeholder="000000" maxlength="6" required>
|
||||
@error('code')
|
||||
<span class="invalid-feedback">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">{{ __('app.verify_and_enable') }}</button>
|
||||
<a href="{{ route('2fa.settings') }}" class="btn btn-secondary">{{ __('app.cancel') }}</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,36 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.recovery_codes'))
|
||||
@section('page_title', __('app.recovery_codes'))
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ __('app.recovery_codes') }}</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-triangle"></i> {{ __('app.save_recovery_codes') }}
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@foreach($recoveryCodes as $code)
|
||||
<div class="col-md-6 mb-2">
|
||||
<code class="d-block p-2 bg-light border rounded text-center" style="font-size: 1.2em;">{{ $code }}</code>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<a href="{{ route('2fa.settings') }}" class="btn btn-primary">{{ __('app.save') }}</a>
|
||||
<a href="{{ route('2fa.recovery-codes') }}" class="btn btn-secondary">{{ __('app.regenerate_recovery_codes') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,60 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.two_factor_auth'))
|
||||
@section('page_title', __('app.two_factor_auth'))
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ __('app.two_factor_auth') }}</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if($user->isTwoFactorEnabled())
|
||||
<div class="alert alert-success">
|
||||
<i class="fas fa-check-circle"></i> {{ __('auth.2fa_enabled') }}
|
||||
</div>
|
||||
|
||||
<p>{{ __('app.save_recovery_codes') }}</p>
|
||||
|
||||
<form action="{{ route('2fa.disable') }}" method="POST">
|
||||
@csrf
|
||||
<div class="form-group">
|
||||
<label>{{ __('app.password') }}</label>
|
||||
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" required>
|
||||
@error('password')
|
||||
<span class="invalid-feedback">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ __('app.verify_code') }} ({{ __('app.optional') }})</label>
|
||||
<input type="text" name="code" class="form-control @error('code') is-invalid @enderror" placeholder="000000">
|
||||
@error('code')
|
||||
<span class="invalid-feedback">{{ $message }}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<button type="submit" class="btn btn-danger">{{ __('app.disable_2fa') }}</button>
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
|
||||
<a href="{{ route('2fa.recovery-codes') }}" class="btn btn-info">
|
||||
{{ __('app.regenerate_recovery_codes') }}
|
||||
</a>
|
||||
@else
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle"></i> {{ __('auth.2fa_not_enabled') }}
|
||||
</div>
|
||||
|
||||
<p>{{ __('app.two_factor_auth_info') ?? 'Two-factor authentication adds an extra layer of security to your account. Once enabled, you will need to enter a code from your authenticator app in addition to your password when logging in.' }}</p>
|
||||
|
||||
<a href="{{ route('2fa.enable') }}" class="btn btn-primary">{{ __('app.enable_2fa') }}</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,71 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.login'))
|
||||
|
||||
@section('content')
|
||||
<div class="login-box">
|
||||
<div class="login-logo">
|
||||
<a href="#"><b>{{ __('app.clinic_management_system') }}</b></a>
|
||||
</div>
|
||||
<!-- /.login-logo -->
|
||||
<div class="card">
|
||||
<div class="card-body login-card-body">
|
||||
<p class="login-box-msg">{{ __('app.login') }}</p>
|
||||
|
||||
<form action="{{ route('login') }}" method="POST">
|
||||
@csrf
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('app.email') }}" required autofocus value="{{ old('email') }}">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-envelope"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('app.password') }}" required>
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('password')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8">
|
||||
<div class="icheck-primary">
|
||||
<input type="checkbox" name="remember" id="remember">
|
||||
<label for="remember">
|
||||
{{ __('app.remember_me') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
<div class="col-4">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('app.login') }}</button>
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<p class="mb-1">
|
||||
<a href="#">{{ __('app.forgot_password') }}</a>
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
<a href="{{ route('register') }}" class="text-center">{{ __('app.register') }}</a>
|
||||
</p>
|
||||
</div>
|
||||
<!-- /.login-card-body -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.login-box -->
|
||||
@endsection
|
||||
@@ -0,0 +1,78 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', __('app.register'))
|
||||
|
||||
@section('content')
|
||||
<div class="register-box">
|
||||
<div class="register-logo">
|
||||
<a href="#"><b>{{ __('app.clinic_management_system') }}</b></a>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body register-card-body">
|
||||
<p class="login-box-msg">{{ __('app.register') }}</p>
|
||||
|
||||
<form action="{{ route('register') }}" method="POST">
|
||||
@csrf
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" name="name" class="form-control @error('name') is-invalid @enderror" placeholder="{{ __('app.name') }}" required autofocus value="{{ old('name') }}">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-user"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<input type="email" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="{{ __('app.email') }}" required value="{{ old('email') }}">
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-envelope"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('email')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" name="password" class="form-control @error('password') is-invalid @enderror" placeholder="{{ __('app.password') }}" required>
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
@error('password')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="input-group mb-3">
|
||||
<input type="password" name="password_confirmation" class="form-control" placeholder="{{ __('app.password_confirmation') }}" required>
|
||||
<div class="input-group-append">
|
||||
<div class="input-group-text">
|
||||
<span class="fas fa-lock"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
<button type="submit" class="btn btn-primary btn-block">{{ __('app.register') }}</button>
|
||||
</div>
|
||||
<!-- /.col -->
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<a href="{{ route('login') }}" class="text-center">{{ __('app.login') }}</a>
|
||||
</div>
|
||||
<!-- /.form-box -->
|
||||
</div><!-- /.card -->
|
||||
</div>
|
||||
<!-- /.register-box -->
|
||||
@endsection
|
||||
Reference in new issue
Block a user