TRF Certest first commit

This commit is contained in:
2025-02-26 08:57:46 +01:00
commit 3ce064a108
2524 changed files with 475404 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
@extends('layouts.app')
@section('page-title', __('Add User'))
@section('page-heading', __('Create New User'))
@section('breadcrumbs')
<li class="breadcrumb-item">
<a href="{{ route('users.index') }}">@lang('Users')</a>
</li>
<li class="breadcrumb-item active">
@lang('Create')
</li>
@stop
@section('content')
@include('partials.messages')
<form action="{{ route('users.store') }}" method="POST" enctype="multipart/form-data" id="user-form">
@csrf
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-3">
<h5 class="card-title">
@lang('User Details')
</h5>
<p class="text-muted font-weight-light">
@lang('A general user profile information.')
</p>
</div>
<div class="col-md-9">
@include('user.partials.details', ['edit' => false, 'profile' => false])
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-md-3">
<h5 class="card-title">
@lang('Login Details')
</h5>
<p class="text-muted font-weight-light">
@lang('Details used for authenticating with the application.')
</p>
</div>
<div class="col-md-9">
@include('user.partials.auth', ['edit' => false])
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-primary">
@lang('Create User')
</button>
</div>
</div>
</form>
<br>
@stop
@section('scripts')
<script src="{{ asset('assets/js/as/profile.js') }}"></script>
{!! JsValidator::formRequest('Vanguard\Http\Requests\User\CreateUserRequest', '#user-form') !!}
@stop
+132
View File
@@ -0,0 +1,132 @@
@extends('layouts.app')
@section('page-title', __('Edit User'))
@section('page-heading', $user->present()->nameOrEmail)
@section('breadcrumbs')
<li class="breadcrumb-item">
<a href="{{ route('users.index') }}">@lang('Users')</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('users.show', $user->id) }}">
{{ $user->present()->nameOrEmail }}
</a>
</li>
<li class="breadcrumb-item active">
@lang('Edit')
</li>
@stop
@section('content')
@include('partials.messages')
@php
$activeTab = session('tab') ?? 'details';
@endphp
<div class="row">
<div class="col-8">
<div class="card">
<div class="card-body">
<ul class="nav nav-tabs" id="nav-tab" role="tablist">
<li class="nav-item">
<a class="nav-link {{ $activeTab == 'details' ? 'active' : '' }}"
id="details-tab"
data-toggle="tab"
href="#details"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('User Details')
</a>
</li>
<li class="nav-item">
<a class="nav-link"
id="authentication-tab"
data-toggle="tab"
href="#login-details"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('Login Details')
</a>
</li>
@if (setting('2fa.enabled'))
<li class="nav-item">
<a class="nav-link {{ $activeTab == '2fa' ? 'active' : '' }}"
id="authentication-tab"
data-toggle="tab"
href="#2fa"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('Two-Factor Authentication')
</a>
</li>
@endif
</ul>
<div class="tab-content mt-4" id="nav-tabContent">
<div class="tab-pane {{ $activeTab == 'details' ? 'show active' : '' }} fade px-2"
id="details"
role="tabpanel"
aria-labelledby="nav-home-tab">
<form action="{{ route('users.update.details', $user) }}" method="POST" id="details-form">
@csrf
@method('PUT')
@include('user.partials.details', ['profile' => false])
</form>
</div>
<div class="tab-pane fade px-2"
id="login-details"
role="tabpanel"
aria-labelledby="nav-profile-tab">
<form action="{{ route('users.update.login-details', $user) }}"
method="POST"
id="login-details-form">
@csrf
@method('PUT')
@include('user.partials.auth')
</form>
</div>
@if (setting('2fa.enabled'))
<div class="tab-pane {{ $activeTab == '2fa' ? 'show active' : '' }} fade px-2" id="2fa" role="tabpanel" aria-labelledby="nav-profile-tab">
@include('user.partials.two-factor')
</div>
@endif
</div>
</div>
</div>
</div>
<div class="col-4">
<div class="card">
<div class="card-body">
<form action="{{ route('user.update.avatar', $user->id) }}"
method="POST"
id="avatar-form"
enctype="multipart/form-data">
@csrf
@include('user.partials.avatar', ['updateUrl' => route('user.update.avatar.external', $user->id)])
</form>
</div>
</div>
</div>
</div>
@stop
@section('scripts')
<script src="{{ asset('assets/js/as/btn.js') }}"></script>
<script src="{{ asset('assets/js/as/profile.js') }}"></script>
{!! JsValidator::formRequest('Vanguard\Http\Requests\User\UpdateDetailsRequest', '#details-form') !!}
{!! JsValidator::formRequest('Vanguard\Http\Requests\User\UpdateLoginDetailsRequest', '#login-details-form') !!}
@if (setting('2fa.enabled'))
{!! JsValidator::formRequest('Vanguard\Http\Requests\TwoFactor\EnableTwoFactorRequest', '#two-factor-form') !!}
@endif
@stop
+102
View File
@@ -0,0 +1,102 @@
@extends('layouts.app')
@section('page-title', __('Users'))
@section('page-heading', __('Users'))
@section('breadcrumbs')
<li class="breadcrumb-item active">
@lang('Users')
</li>
@stop
@section('content')
@include('partials.messages')
<div class="card">
<div class="card-body">
<form action="" method="GET" id="users-form" class="pb-2 mb-3 border-bottom-light">
<div class="row my-3 flex-md-row flex-column-reverse">
<div class="col-md-4 mt-md-0 mt-2">
<div class="input-group custom-search-form">
<input type="text"
class="form-control input-solid"
name="search"
value="{{ Request::get('search') }}"
placeholder="@lang('Search for users...')">
<span class="input-group-append">
@if (Request::has('search') && Request::get('search') != '')
<a href="{{ route('users.index') }}"
class="btn btn-light d-flex align-items-center text-muted"
role="button">
<i class="fas fa-times"></i>
</a>
@endif
<button class="btn btn-light" type="submit" id="search-users-btn">
<i class="fas fa-search text-muted"></i>
</button>
</span>
</div>
</div>
<div class="col-md-2 mt-2 mt-md-0">
<select name="status" id="status" class="form-control input-solid">
@foreach($statuses as $key => $value)
<option value="{{ $key }}" {{ Request::get('status') == $key ? 'selected' : '' }}>
{{ $value }}
</option>
@endforeach
</select>
</div>
<div class="col-md-6">
<a href="{{ route('users.create') }}" class="btn btn-primary btn-rounded float-right">
<i class="fas fa-plus mr-2"></i>
@lang('Add User')
</a>
</div>
</div>
</form>
<div class="table-responsive" id="users-table-wrapper">
<table class="table table-borderless table-striped">
<thead>
<tr>
<th></th>
<th class="min-width-80">@lang('Username')</th>
<th class="min-width-150">@lang('Full Name')</th>
<th class="min-width-100">@lang('Email')</th>
<th class="min-width-80">@lang('Registration Date')</th>
<th class="min-width-80">@lang('Status')</th>
<th class="text-center min-width-150">@lang('Action')</th>
</tr>
</thead>
<tbody>
@if (count($users))
@foreach ($users as $user)
@include('user.partials.row')
@endforeach
@else
<tr>
<td colspan="7"><em>@lang('No records found.')</em></td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
</div>
{!! $users->render() !!}
@stop
@section('scripts')
<script>
$("#status").change(function () {
$("#users-form").submit();
});
</script>
@stop
@@ -0,0 +1,44 @@
<div class="form-group">
<label for="email">@lang('Email')</label>
<input type="email"
class="form-control input-solid"
id="email"
name="email"
placeholder="@lang('Email')"
value="{{ $edit ? $user->email : '' }}">
</div>
<div class="form-group">
<label for="username">@lang('Username')</label>
<input type="text"
class="form-control input-solid"
id="username"
placeholder="(@lang('optional'))"
name="username"
value="{{ $edit ? $user->username : '' }}">
</div>
<div class="form-group">
<label for="password">{{ $edit ? __("New Password") : __('Password') }}</label>
<input type="password"
class="form-control input-solid"
id="password"
name="password"
@if ($edit) placeholder="@lang("Leave field blank if you don't want to change it")" @endif>
</div>
<div class="form-group">
<label for="password_confirmation">{{ $edit ? __("Confirm New Password") : __('Confirm Password') }}</label>
<input type="password"
class="form-control input-solid"
id="password_confirmation"
name="password_confirmation"
@if ($edit) placeholder="@lang("Leave field blank if you don't want to change it")" @endif>
</div>
@if ($edit)
<button type="submit" class="btn btn-primary mt-2" id="update-login-details-btn">
<i class="fa fa-refresh"></i>
@lang('Update Details')
</button>
@endif
@@ -0,0 +1,92 @@
<div class="avatar-wrapper">
<div class="spinner">
<div class="spinner-dot"></div>
<div class="spinner-dot"></div>
<div class="spinner-dot"></div>
</div>
<div id="avatar"></div>
<div class="text-center">
<div class="avatar-preview">
<img class="avatar rounded-circle img-thumbnail img-responsive mt-5 mb-4"
width="150"
src="{{ $edit ? $user->present()->avatar : url('assets/img/profile.png') }}">
<h5 class="text-muted">{{ $user->present()->nameOrEmail }}</h5>
</div>
<div id="change-picture"
class="btn btn-outline-secondary btn-block mt-5"
data-toggle="modal"
data-target="#choose-modal">
<i class="fa fa-camera"></i>
@lang('Change Photo')
</div>
<div class="row avatar-controls d-none">
<div class="col-md-6">
<div id="cancel-upload" class="btn btn-block btn-outline-secondary text-center">
<i class="fa fa-times"></i> @lang('Cancel')
</div>
</div>
<div class="col-md-6">
<button type="submit" id="save-photo" class="btn btn-success btn-block text-center">
<i class="fa fa-check"></i> @lang('Save')
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="choose-modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="row">
<div class="col-md-4 avatar-source" id="no-photo"
data-url="{{ $updateUrl }}">
<img src="{{ url('assets/img/profile.png') }}" class="rounded-circle img-thumbnail img-responsive">
<p class="mt-3">@lang('No Photo')</p>
</div>
<div class="col-md-4 avatar-source">
<div class="btn btn-light btn-upload">
<i class="fa fa-upload"></i>
<input type="file" name="avatar" id="avatar-upload">
</div>
<p class="mt-3">@lang('Upload Photo')</p>
</div>
@if ($edit)
<div class="col-md-4 avatar-source source-external"
data-url="{{ $updateUrl }}">
<img src="{{ $user->gravatar() }}" class="rounded-circle img-thumbnail img-responsive">
<p class="mt-3">@lang('Gravatar')</p>
</div>
@endif
</div>
@if ($edit && count($socialLogins))
@foreach ($socialLogins->chunk(3) as $logins)
<br>
<div class="row">
@foreach($logins as $login)
<div class="col-md-4 avatar-source source-external"
data-url="{{ $updateUrl }}">
<img src="{{ $login->avatar }}"
class="rounded-circle img-thumbnail img-responsive"
style="width: 120px;">
<p>{{ ucfirst($login->provider) }}</p>
</div>
@endforeach
</div>
@endforeach
@endif
</div>
</div>
</div>
</div>
<div class="d-none">
<input type="hidden" name="points[x1]" id="points_x1">
<input type="hidden" name="points[y1]" id="points_y1">
<input type="hidden" name="points[x2]" id="points_x2">
<input type="hidden" name="points[y2]" id="points_y2">
</div>
@@ -0,0 +1,76 @@
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="role_id">@lang('Role')</label>
<select name="role_id" id="role_id" class="form-control input-solid" {{ $profile ? 'disabled' : '' }}>
@foreach($roles as $roleId => $roleName)
<option value="{{ $roleId }}" {{ ($edit && $user->role->id == $roleId) ? 'selected' : '' }}>
{{ $roleName }}
</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="status">@lang('Status')</label>
<select name="status" id="status" class="form-control input-solid" {{ $profile ? 'disabled' : '' }}>
@foreach($statuses as $statusId => $statusName)
<option value="{{ $statusId }}" {{ ($edit && $user->status->value == $statusId) ? 'selected' : '' }}>
{{ $statusName }}
</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="first_name">@lang('First Name')</label>
<input type="text" class="form-control input-solid" id="first_name"
name="first_name" placeholder="@lang('First Name')" value="{{ $edit ? $user->first_name : '' }}">
</div>
<div class="form-group">
<label for="last_name">@lang('Last Name')</label>
<input type="text" class="form-control input-solid" id="last_name"
name="last_name" placeholder="@lang('Last Name')" value="{{ $edit ? $user->last_name : '' }}">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="birthday">@lang('Date of Birth')</label>
<div class="form-group">
<input type="text"
name="birthday"
id='birthday'
value="{{ $edit && $user->birthday ? $user->present()->birthday : '' }}"
class="form-control input-solid" />
</div>
</div>
<div class="form-group">
<label for="phone">@lang('Phone')</label>
<input type="text" class="form-control input-solid" id="phone"
name="phone" placeholder="@lang('Phone')" value="{{ $edit ? $user->phone : '' }}">
</div>
<div class="form-group">
<label for="address">@lang('Address')</label>
<input type="text" class="form-control input-solid" id="address"
name="address" placeholder="@lang('Address')" value="{{ $edit ? $user->address : '' }}">
</div>
<div class="form-group">
<label for="country_id">@lang('Country')</label>
<select name="country_id" id="country_id" class="form-control input-solid">
@foreach($countries as $countryId => $countryName)
<option value="{{ $countryId }}" {{ ($edit && $user->country_id == $countryId) ? 'selected' : '' }}>
{{ $countryName }}
</option>
@endforeach
</select>
</div>
</div>
@if ($edit)
<div class="col-md-12 mt-2">
<button type="submit" class="btn btn-primary" id="update-details-btn">
<i class="fa fa-refresh"></i>
@lang('Update Details')
</button>
</div>
@endif
</div>
@@ -0,0 +1,73 @@
<tr>
<td style="width: 40px;">
<a href="{{ route('users.show', $user) }}">
<img
class="rounded-circle img-responsive"
width="40"
src="{{ $user->present()->avatar }}"
alt="{{ $user->present()->name }}">
</a>
</td>
<td class="align-middle">
<a href="{{ route('users.show', $user) }}">
{{ $user->username ?: __('N/A') }}
</a>
</td>
<td class="align-middle">{{ $user->first_name . ' ' . $user->last_name }}</td>
<td class="align-middle">{{ $user->email }}</td>
<td class="align-middle">{{ $user->created_at->format(config('app.date_format')) }}</td>
<td class="align-middle">
<span class="badge badge-lg badge-{{ $user->present()->labelClass }}">
{{ trans("app.status.{$user->status->value}") }}
</span>
</td>
<td class="text-center align-middle">
<div class="dropdown show d-inline-block">
<a class="btn btn-icon"
href="#" role="button" id="dropdownMenuLink"
data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-h"></i>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuLink">
@if (config('session.driver') == 'database')
<a href="{{ route('user.sessions', $user) }}" class="dropdown-item text-gray-500">
<i class="fas fa-list mr-2"></i>
@lang('User Sessions')
</a>
@endif
<a href="{{ route('users.show', $user) }}" class="dropdown-item text-gray-500">
<i class="fas fa-eye mr-2"></i>
@lang('View User')
</a>
@canBeImpersonated($user)
<a href="{{ route('impersonate', $user) }}" class="dropdown-item text-gray-500 impersonate">
<i class="fas fa-user-secret mr-2"></i>
@lang('Impersonate')
</a>
@endCanBeImpersonated
</div>
</div>
<a href="{{ route('users.edit', $user) }}"
class="btn btn-icon edit"
title="@lang('Edit User')"
data-toggle="tooltip" data-placement="top">
<i class="fas fa-edit"></i>
</a>
<a href="{{ route('users.destroy', $user) }}"
class="btn btn-icon"
title="@lang('Delete User')"
data-toggle="tooltip"
data-placement="top"
data-method="DELETE"
data-confirm-title="@lang('Please Confirm')"
data-confirm-text="@lang('Are you sure that you want to delete this user?')"
data-confirm-delete="@lang('Yes, delete him!')">
<i class="fas fa-trash"></i>
</a>
</td>
</tr>
@@ -0,0 +1,62 @@
@php
$route = 'enable';
$needsVerification = session('tab') == '2fa' && $user->needsTwoFactorVerification();
if ($needsVerification) {
$route = 'verify';
} elseif ($user->twoFactorEnabled()) {
$route = 'disable';
}
@endphp
<form action="{{ route("two-factor.{$route}") }}" method="POST" id="two-factor-form">
@csrf
<input type="hidden" name="user" value="{{ $user->id }}">
@if (!$user->twoFactorEnabled() && !$needsVerification)
<button type="submit"
class="btn btn-primary"
data-toggle="loader"
data-loading-text="@lang('Enabling...')">
@lang('Enable')
</button>
@else
@if ($user->twoFactorEnabled())
<button type="submit"
class="btn btn-danger mt-2"
data-toggle="loader"
data-loading-text="@lang('Disabling...')">
<i class="fa fa-close"></i>
@lang('Disable')
</button>
@else
<h3>@lang("Please finish configuring Two-Factor authentication below.")</h3>
<div class="my-3 font-medium text-sm font-weight-bold">
@lang("When two factor authentication is enabled, you will be prompted for a secure, random token during authentication.")
@lang("You may retrieve this token from your phone's Authenticator application.")
</div>
<div class="my-3 font-medium text-sm">
@lang("To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code.")
</div>
<div class="my-5 d-flex align-items-center justify-content-center w-100">
{!! $user->twoFactorQrCodeSvg() !!}
</div>
<input type="text"
name="code"
id="code"
class="form-control input-solid mb-4"
placeholder="@lang('Code')"
value="{{ old('code') }}">
<button type="submit"
class="btn btn-primary mr-2"
data-toggle="loader"
data-loading-text="@lang('Confirming...')">
<i class="fa fa-close"></i>
@lang('Confirm')
</button>
@endif
@endif
</form>
+128
View File
@@ -0,0 +1,128 @@
@extends('layouts.app')
@section('page-title', __('My Profile'))
@section('page-heading', __('My Profile'))
@section('breadcrumbs')
<li class="breadcrumb-item active">
@lang('My Profile')
</li>
@stop
@section('content')
@include('partials.messages')
@php
$activeTab = session('tab') ?? 'details';
@endphp
<div class="row">
<div class="col-md-8">
<div class="card">
<div class="card-body">
<ul class="nav nav-tabs" id="nav-tab" role="tablist">
<li class="nav-item">
<a class="nav-link {{ $activeTab == 'details' ? 'active' : '' }}"
id="details-tab"
data-toggle="tab"
href="#details"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('User Details')
</a>
</li>
<li class="nav-item">
<a class="nav-link"
id="authentication-tab"
data-toggle="tab"
href="#login-details"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('Login Details')
</a>
</li>
@if (setting('2fa.enabled'))
<li class="nav-item">
<a class="nav-link {{ $activeTab == '2fa' ? 'active' : '' }}"
id="authentication-tab"
data-toggle="tab"
href="#2fa"
role="tab"
aria-controls="home"
aria-selected="true">
@lang('Two-Factor Authentication')
</a>
</li>
@endif
</ul>
<div class="tab-content mt-4" id="nav-tabContent">
<div class="tab-pane {{ $activeTab == 'details' ? 'show active' : '' }} fade px-2"
id="details"
role="tabpanel"
aria-labelledby="nav-home-tab">
<form action="{{ route('profile.update.details') }}" method="POST" id="details-form">
@method('PUT')
@csrf
@include('user.partials.details', ['profile' => true])
</form>
</div>
<div class="tab-pane fade px-2"
id="login-details"
role="tabpanel"
aria-labelledby="nav-profile-tab">
<form action="{{ route('profile.update.login-details') }}"
method="POST"
id="login-details-form">
@method('PUT')
@csrf
@include('user.partials.auth')
</form>
</div>
@if (setting('2fa.enabled'))
<div class="tab-pane {{ $activeTab == '2fa' ? 'show active' : '' }} fade px-2"
id="2fa"
role="tabpanel"
aria-labelledby="nav-profile-tab"
>
@include('user.partials.two-factor')
</div>
@endif
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<form action="{{ route("profile.update.avatar") }}"
method="POST"
id="avatar-form"
enctype="multipart/form-data">
@csrf
@include('user.partials.avatar', ['updateUrl' => route('profile.update.avatar-external')])
</form>
</div>
</div>
</div>
</div>
@stop
@section('scripts')
<script src="{{ asset('assets/js/as/btn.js') }}"></script>
<script src="{{ asset('assets/js/as/profile.js') }}"></script>
{!! JsValidator::formRequest('Vanguard\Http\Requests\User\UpdateDetailsRequest', '#details-form') !!}
{!! JsValidator::formRequest('Vanguard\Http\Requests\User\UpdateProfileLoginDetailsRequest', '#login-details-form') !!}
@if (setting('2fa.enabled'))
{!! JsValidator::formRequest('Vanguard\Http\Requests\TwoFactor\EnableTwoFactorRequest', '#two-factor-form') !!}
@endif
@stop
+80
View File
@@ -0,0 +1,80 @@
@extends('layouts.app')
@section('page-title', $user->present()->nameOrEmail . ' - ' . __('Active Sessions'))
@section('page-heading')
@lang('Sessions') ({{ $user->present()->nameOrEmail }})
@stop
@section('breadcrumbs')
@if (isset($adminView))
<li class="breadcrumb-item">
<a href="{{ route('users.index') }}">@lang('Users')</a>
</li>
<li class="breadcrumb-item">
<a href="{{ route('users.show', $user->id) }}">
{{ $user->present()->nameOrEmail }}
</a>
</li>
@endif
<li class="breadcrumb-item active">
@lang('Sessions')
</li>
@stop
@section('content')
@include('partials.messages')
<div class="card">
<div class="card-body">
<div class="table-responsive">
<table class="table table-borderless table-striped">
<thead>
<tr>
<th>@lang('IP Address')</th>
<th>@lang('Device')</th>
<th>@lang('Browser')</th>
<th>@lang('Last Activity')</th>
<th class="text-center">@lang('Action')</th>
</tr>
</thead>
<tbody>
@if (count($sessions))
@foreach ($sessions as $session)
<tr>
<td>{{ $session->ip_address }}</td>
<td>
{{ $session->device ?: __('Unknown') }} ({{ $session->platform ?: __('Unknown') }})
</td>
<td>{{ $session->browser ?: __('Unknown') }}</td>
<td>{{ $session->last_activity->format(config('app.date_time_format')) }}</td>
<td class="text-center">
<a href="{{ isset($profile) ? route('profile.sessions.invalidate', $session->id) : route('user.sessions.invalidate', [$user->id, $session->id]) }}"
class="btn btn-icon"
title="@lang('Invalidate Session')"
data-toggle="tooltip"
data-placement="top"
data-method="DELETE"
data-confirm-title="@lang('Please Confirm')"
data-confirm-text="@lang('Are you sure that you want to invalidate this session?')"
data-confirm-delete="@lang('Yes, proceed!')">
<i class="fas fa-times"></i>
</a>
</td>
</tr>
@endforeach
@else
<tr>
<td colspan="6"><em>@lang('No records found.')</em></td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
</div>
@stop
@@ -0,0 +1,73 @@
@extends('layouts.app')
@section('page-title', __('My Profile'))
@section('page-heading', __('My Profile'))
@section('breadcrumbs')
<li class="breadcrumb-item">
@lang('My Profile')
</li>
<li class="breadcrumb-item active">
@lang('Two-Factor Phone Verification')
</li>
@stop
@section('content')
@include('partials.messages')
<div class="row">
<div class="col-md-6 m-auto">
<div class="card">
<div class="card-body">
<h5 class="card-title card-title-bold">
@lang('Phone Verification')
</h5>
<p>
@lang('We have sent you a verification token via SMS. Please provide the token
below to verify your phone number.')
</p>
<form action="{{ route('two-factor.verify') }}" method="POST" id="two-factor-form">
@csrf
@if ($user)
<input type="hidden" name="user" value="{{ $user }}">
@endif
<div class="form-group mt-4">
<input type="text"
class="form-control"
id="token"
name="token"
placeholder="@lang('Token')">
</div>
<div class="mt-3">
<button type="submit"
class="btn btn-primary"
data-toggle="loader"
data-loading-text="@lang('Verifying...')">
@lang('Verify')
</button>
<a href="javascript:;"
class="btn d-none"
id="resend-token"
data-loading-text="@lang('Sending...')">
@lang('Resend Token')
</a>
</div>
</form>
</div>
</div>
</div>
</div>
@stop
@section('scripts')
<script>
var user = {{ isset($user) ? $user : 'null' }};
</script>
<script src="{{ asset('assets/js/as/btn.js') }}"></script>
<script src="{{ asset('assets/js/as/two-factor.js') }}"></script>
@stop
+90
View File
@@ -0,0 +1,90 @@
@extends('layouts.app')
@section('page-title', $user->present()->nameOrEmail)
@section('page-heading', $user->present()->nameOrEmail)
@section('breadcrumbs')
<li class="breadcrumb-item">
<a href="{{ route('users.index') }}">@lang('Users')</a>
</li>
<li class="breadcrumb-item active">
{{ $user->present()->nameOrEmail }}
</li>
@stop
@section('content')
<div class="row">
<div class="col-lg-5 col-xl-4 @if (! isset($activities)) mx-auto @endif">
<div class="card">
<h6 class="card-header d-flex align-items-center justify-content-between">
@lang('Details')
<small>
@canBeImpersonated($user)
<a href="{{ route('impersonate', $user) }}"
data-toggle="tooltip"
data-placement="top"
title="@lang('Impersonate User')">
@lang('Impersonate')
</a>
<span class="text-muted">|</span>
@endCanBeImpersonated
<a href="{{ route('users.edit', $user) }}"
class="edit"
data-toggle="tooltip"
data-placement="top"
title="@lang('Edit User')">
@lang('Edit')
</a>
</small>
</h6>
<div class="card-body">
<div class="d-flex align-items-center flex-column pt-3">
<div>
<img class="rounded-circle img-thumbnail img-responsive mb-4"
width="130"
height="130" src="{{ $user->present()->avatar }}">
</div>
@if ($name = $user->present()->name)
<h5>{{ $user->present()->name }}</h5>
@endif
<a href="mailto:{{ $user->email }}" class="text-muted font-weight-light mb-2">
{{ $user->email }}
</a>
</div>
<ul class="list-group list-group-flush mt-3">
@if ($user->phone)
<li class="list-group-item">
<strong>@lang('Phone'):</strong>
<a href="telto:{{ $user->phone }}">{{ $user->phone }}</a>
</li>
@endif
<li class="list-group-item">
<strong>@lang('Birthday'):</strong>
{{ $user->present()->birthday }}
</li>
<li class="list-group-item">
<strong>@lang('Address'):</strong>
{{ $user->present()->fullAddress }}
</li>
<li class="list-group-item">
<strong>@lang('Last Logged In'):</strong>
{{ $user->present()->lastLogin }}
</li>
</ul>
</div>
</div>
</div>
@if (isset($activities))
<div class="col-lg-7 col-xl-8">
@include("user-activity::recent-activity", ['activities' => $activities])
</div>
@endif
</div>
@stop