This commit is contained in:
2025-10-22 20:08:22 +05:00
commit 736e3bef18
2573 changed files with 120385 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
<?php
return [
'online_panel' => 'Online panel',
'login' => 'Login',
'register' => 'Register',
'reset_password' => 'Reset password',
'help' => 'Help',
'privacy_policy' => 'Privacy policy',
'phone' => 'Phone',
'username' => 'Username',
'or' => 'or',
'continue' => 'Continue',
'successfully_logged_in' => 'Successfully logged in',
'press_continue' => 'Press continue',
];

View File

@@ -0,0 +1,5 @@
<?php
return [
];

View File

@@ -0,0 +1,32 @@
<?php
return [
'online_panel' => 'Onlaýn kabulhana',
'login' => 'Giriş',
'register' => 'Agza bolmak',
'reset_password' => 'Açar sözüni ýatdan çykardyňyzmy?',
'help' => 'Kömek',
'privacy_policy' => 'Gizlinlik syýasaty',
'phone' => 'Telefon',
'username' => 'ulanyjy ady',
'password' => 'Açar sözi',
'or' => 'ýada',
'continue' => 'Dowam etmek',
'successfully_logged_in' => 'Üstünlik bilen girdiňiz',
'press_continue' => 'Dowam etmek düwme basyň',
'please_wait_while_we_redirect_you_to_your_personal_account' => 'Şahsy hasabyňyza geçýänçä garaşyň',
'forgot_your_password' => 'Açar sözüni unutdyňyzmy?',
'successfully_registered' => 'Üstünlikli hasaba alyndyňyz',
'please_now_verify_your_phone_number_to_continue' => 'Dowam etmek üçin telefon belgiňizi tassyklaň',
'go_to_login_page' => 'Giriş sahypasyyna geçiň',
'full_name' => 'Adyňyz',
'confirm_password' => 'Açar sözi tassyklaňyz',
'verify_phone_number' => 'Telefon beligiňizi tassyklaň',
'verification_code' => 'Tassyklaýyş belgi',
'submit' => 'Tassyklamak',
'verification_code_has_been_send_to_number' => 'Tassyklaýyş belgi telefon belgisine ugradyldy',
'change_number' => 'Üýtget',
'change_phone_label' => 'Telefon belgini üýtgetmek',
'go_back' => 'Yza',
'successfully_changed_phone' => 'Telefon belgiňiz üýtgedildi',
];

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}" dir="ltr" class="h-full font-sans antialiased">
<head>
<meta name="theme-color" content="#fff">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width"/>
<meta name="locale" content="tk"/>
<meta name="robots" content="noindex">
<link rel="shortcut icon" href="/favicon.png" type="image/png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<!-- Styles -->
<link rel="stylesheet" href="/assets/css/auth-layout.css">
<link rel="stylesheet" href="/assets/css/auth.css">
<link rel="stylesheet" href="/assets/css/cookieconsent.css">
</head>
<body>
<div>
<div class="bg-white flex justify-between px-4 py-1 absolute w-full shadow-none shadow-lg">
<div class="px-8 text-sm p-1 rounded uppercase font-bold padding-none">
<a href="#" class="d-none-copyright"> “Türkmenbaşy” PTB © </a>
</div>
<div class="flex items-center">
<a href="tel:+99312444234" class="mr-6 text-sm text-gray-900">(+99312) 44-42-34</a>
<a href="#" class="mr-6 text-sm text-gray-900 uppercase">{{ __('module.base-auth::base.help') }}</a>
<div class="flex text-sm text-gray-90a0 space-x-1 uppercase">
@if (module('BaseLocale')->isEnabled())
@foreach(baseLocales() as $localeKey => $localeDisplayName)
<a
href="{{ route('module.base-locale.set-locale', ['locale' => $localeKey]) }}"
class="{{ app()->getLocale() === $localeKey ? 'font-bold' : '' }}"
>
{{ $localeKey }}
@unless($loop->last)
|
@endif
</a>
@endforeach
@endif
</div>
</div>
</div>
<div class="login-section d-center items-center h-screen">
<div class="d-none h-full max-w-4xl">
<img src="/assets/images/bank-img.PNG" class="h-full object-cover">
</div>
<div class="relative">
@yield('content')
<div class="text-center relative" style="top: 4em;">
<a href="/privacy-policy.pdf" class="text-gray-500 font-bold text-underline" target="_blank">
{{ __('module.base-auth::base.privacy_policy') }}
</a>
</div>
</div>
</div>
</div>
<script src="/assets/js/inputmask.min.js"></script>
<script src="/assets/js/sweetalert2.js"></script>
<script src="/assets/js/cookieconsent.js"></script>
<script src="/assets/js/fn.js"></script>
<script src="/assets/js/app.js"></script>
@stack('js')
</body>
</html>

View File

@@ -0,0 +1,88 @@
@extends('module.base-auth::layouts.auth-layout')
@push('js')
<script>
async function login(event) {
const response = await postData(event.target.action, getFormData(event))
console.log(response)
if (response.errors) {
loopObject(response.errors, item => addValidationClasses(item))
return;
}
removeValidationClasess()
await Swal.fire({
title: '{{ __('module.base-auth::base.successfully_logged_in') }}',
text: '{{ __('module.base-auth::base.press_continue') }}',
confirmButtonText: '{{ __('module.base-auth::base.continue') }}',
icon: 'success',
showDenyButton: false,
showCancelButton: false,
})
window.location.href = '{{ route('login') }}'
}
</script>
@endpush
@section('content')
<form
method="POST"
action="{{ route('login') }}"
onsubmit="event.preventDefault();login(event)"
class="bg-white dark:bg-gray-800 rounded-lg p-8 w-[25rem] mx-auto"
>
@csrf
<h2 class="text-2xl text-center font-normal mb-6 uppercase">{{ __('module.base-auth::base.online_panel') }}</h2>
<svg class="block mx-auto mb-6" xmlns="http://www.w3.org/2000/svg" width="100" height="2" viewBox="0 0 100 2">
<path fill="#D8E3EC" d="M0 0h100v2H0z"></path>
</svg>
<div class="mb-6">
<label class="block mb-2" for="username">
{{ __('module.base-auth::base.phone') }} {{ __('module.base-auth::base.or') }} <span class="lowecase">{{ __('module.base-auth::base.username') }}</span>
</label>
<input class="form-control form-input form-input-bordered w-full"
id="username"
type="text"
name="username"
placeholder="+99365999990 {{ __('or') }} {{ __('module.base-auth::base.username') }}"
autofocus=""
value="{{ old('username') }}"
>
<span id="username-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-6">
<label class="block mb-2" for="password">
{{ __('module.base-auth::base.password') }}
</label>
<input
class="form-control form-input form-input-bordered w-full"
id="password"
type="password"
name="password"
>
<span id="password-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="flex mb-6">
<div class="ml-auto">
<a href="{{ route('reset-password') }}" class="text-gray-500 font-bold no-underline">
{{ __('module.base-auth::base.forgot_your_password') }}
</a>
</div>
</div>
<button class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center" type="submit">
<span class=""><span>{{ __('module.base-auth::base.login') }}</span></span>
</button>
<a href="{{ route('register') }}" class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center">
<span class=""><span>{{ __('module.base-auth::base.register') }}</span></span>
</a>
</form>
@stop

View File

@@ -0,0 +1,124 @@
@extends('module.base-auth::layouts.auth-layout')
@push('js')
<script>
async function register(event) {
const response = await postData(event.target.action, getFormData(event))
if (response.errors) {
loopObject(response.errors, item => addValidationClasses(item))
return;
}
removeValidationClasess()
console.log(response)
await Swal.fire({
title: '{{ __('module.base-auth::base.successfully_registered') }}',
text: '{{ __('module.base-auth::base.please_now_verify_your_phone_number_to_continue') }}',
icon: 'success',
showDenyButton: false,
showCancelButton: false,
})
window.location.href = response.url;
}
</script>
@endpush
@section('content')
<form
class="bg-white dark:bg-gray-800 rounded-lg p-8 w-[25rem] mx-auto mt-1"
method="POST"
action="{{ route('register') }}"
onsubmit="event.preventDefault();register(event)"
>
@csrf
<h2 class="text-2xl text-center font-normal mb-6">{{ __('module.base-auth::base.online_panel') }}</h2>
<svg class="block mx-auto mb-6" xmlns="http://www.w3.org/2000/svg" width="100" height="2" viewBox="0 0 100 2">
<path fill="#D8E3EC" d="M0 0h100v2H0z"></path>
</svg>
<div class="mb-1">
<label class="block mb-1" for="name">
{{ __('module.base-auth::base.full_name') }}
</label>
<input class="form-control form-input form-input-bordered w-full"
id="name"
type="text"
name="name"
autofocus=""
value="{{ old('name') }}"
>
<span id="name-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-1">
<label class="block mb-1" for="phone">
{{ __('module.base-auth::base.phone') }}
</label>
<input class="form-control form-input form-input-bordered w-full"
id="phone"
type="text"
name="phone"
autofocus=""
value="{{ old('phone') }}"
>
<span id="phone-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-1">
<label class="block mb-1" for="username">
{{ ucfirst(__('module.base-auth::base.username')) }}
</label>
<input class="form-control form-input form-input-bordered w-full"
id="username"
type="text"
name="username"
autofocus=""
value="{{ old('username') }}"
>
<span id="username-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-1">
<label class="block mb-1" for="password">
{{ __('module.base-auth::base.password') }}
</label>
<input class="form-control form-input form-input-bordered w-full"
id="password"
type="password"
name="password"
>
<span id="password-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-1">
<label class="block mb-1" for="password_confirmation">
{{ __('module.base-auth::base.confirm_password') }}
</label>
<input class="form-control form-input form-input-bordered w-full"
id="password_confirmation"
type="password"
name="password_confirmation"
>
<span id="password_confirmation-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-6"></div>
<button
class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center"
type="submit"
>
<span class=""><span>{{ __('module.base-auth::base.register') }}</span></span>
</button>
<a
href="{{ route('login') }}"
class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center"
>
<span class=""><span>{{ __('module.base-auth::base.go_to_login_page') }}</span></span>
</a>
</form>
@stop

View File

@@ -0,0 +1,104 @@
@extends('module.base-auth::layouts.auth-layout')
@push('js')
<script>
async function resetPassword(event) {
const response = await postData(event.target.action, getFormData(event))
if (response.errors) {
loopObject(response.errors, item => addValidationClasses(item))
} else {
removeValidationClasess()
if (response.step === 1) {
showVerificationCodeBox()
Swal.fire({
title: '{{ __('Verification code') }}',
text: response.message,
icon: 'info'
})
}
if (response.step === 2) {
showPasswordBox()
Swal.fire({
title: '{{ __('Reset Password') }}',
text: response.message,
icon: 'warning'
})
}
if (response.step === 3) {
await Swal.fire({
title: response.message,
showDenyButton: false,
showCancelButton: false,
})
window.location.href = '{{ route('login') }}'
}
}
}
</script>
@endpush
@section('content')
<form
method="POST"
action="{{ route('reset-password') }}"
onsubmit="event.preventDefault();resetPassword(event)"
class="bg-white dark:bg-gray-800 rounded-lg p-8 w-[25rem] mx-auto"
>
@csrf
<h2 class="text-2xl text-center font-normal mb-6">{{ __('Enter your username to continue') }}</h2>
<svg class="block mx-auto mb-6" xmlns="http://www.w3.org/2000/svg" width="100" height="2" viewBox="0 0 100 2">
<path fill="#D8E3EC" d="M0 0h100v2H0z"></path>
</svg>
<div id="username-box" class="mb-6">
<label class="block mb-2" for="username">
{{ __('Username') }}
</label>
<input
id="username"
type="text"
name="username"
class="form-control form-input form-input-bordered w-full"
autofocus=""
>
<input type="hidden" name="step-sms" value="1">
<span id="username-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<div class="mb-6 hidden" id="verification-code-box">
<label class="block mb-2" for="verification">
{{ __('Verification code') }}
</label>
</div>
<div class="hidden" id="reset-password-container">
<div class="mb-6" id="password-box">
<label class="block mb-2" for="password">
{{ __('Password') }}
</label>
</div>
<div class="mb-6" id="password-confirm-box">
<label class="block mb-2" for="password_confirmation">
{{ __('Confirm Password') }}
</label>
</div>
</div>
<button class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center" type="submit">
<span class=""><span>{{ __('Submit') }}</span></span>
</button>
<a href="{{ route('register') }}" class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center">
<span class=""><span>{{ __('Go to login page') }}</span></span>
</a>
</form>
@stop

View File

@@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="tk" dir="ltr" class="h-full font-sans antialiased">
<head>
<meta name="theme-color" content="#fff">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width"/>
<meta name="locale" content="tk"/>
<meta name="robots" content="noindex">
<!-- Styles -->
<link rel="stylesheet" href="/assets/css/auth-layout.css">
<style>
.bg-secondary-500 {
background-color: rgb(186,230,253);
}
.hover:bg-secondary-400 {
background-color: rgba(24, 182, 155, 0.5);
}
.underline {
text-decoration: underline;
}
.d-none {
display: none;
}
</style>
</head>
<body class="min-w-site text-sm font-medium min-h-full text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-900">
<div class="py-6 px-1 md:px-2 lg:px-6">
<div class="mx-auto py-8 max-w-sm flex justify-center">
<span class="uppercase text-4xl">{{ __('module.base-auth::base.online_panel') }}</span>
</div>
<div class="bg-white dark:bg-gray-800 shadow rounded-lg p-8 max-w-[25rem] mx-auto">
<h2 class="text-2xl text-center font-normal mb-6">{{ __('module.base-auth::base.verify_phone_number') }}</h2>
<div class="flex justify-center items-center mb-6">
<h2 class="text-lg text-center font-normal mr-4">+993 {{ $phone }}</h2>
<span href="#" class="underline cursor-pointer" onclick="showChangePhone()" id="change-phone-button">
{{ __('module.base-auth::base.change_number') }}
</span>
<span href="#" class="underline cursor-pointer d-none" onclick="goBack()" id="go-back-button">
{{ __('module.base-auth::base.go_back') }}
</span>
</div>
{{-- Border line --}}
<svg class="block mx-auto mb-6" xmlns="http://www.w3.org/2000/svg" width="100" height="2" viewBox="0 0 100 2">
<path fill="#D8E3EC" d="M0 0h100v2H0z"></path>
</svg>
{{-- Change phone form --}}
<form method="POST" action="{{ route('change-phone') }}" id="change-phone-form" class="d-none" onsubmit="event.preventDefault();changePhone(event)">
@csrf
<div class="mb-6">
<label class="block mb-2" for="phone">
{{ __('module.base-auth::base.change_phone_label') }}
</label>
<input class="form-control form-input form-input-bordered w-full" id="phone" type="text" name="phone" required="">
<span id="phone-error-box" class="text-red-500 text-italic error-box"></span>
</div>
<button type="submit" class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center">
<span class=""><span>{{ __('module.base-auth::base.change_number') }}</span></span>
</button>
</form>
{{-- Verification form --}}
<form method="POST" action="{{ route('sms-verification') }}" id="verification-form">
@csrf
<div class="mb-6">
<label class="block mb-2" for="code">
{{ __('module.base-auth::base.verification_code') }}
</label>
<input class="form-control form-input form-input-bordered w-full" id="code" type="number" name="code" required="">
@if($errors->any())
@foreach($errors->all() as $error)
<p class="mt-2 text-red-500">{{ $error }}</p>
@endforeach
@endif
</div>
<button type="submit" class="w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 mb-3 w-full flex justify-center shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 w-full flex justify-center">
<span class=""><span>{{ __('module.base-auth::base.submit') }}</span></span>
</button>
</form>
</div>
</div>
<script src="/assets/js/inputmask.min.js"></script>
<script src="/assets/js/sweetalert2.js"></script>
<script src="/assets/js/fn.js"></script>
<script>
let phoneField = $_ID('phone')
let changePhoneform = $_ID('change-phone-form')
let verificationForm = $_ID('verification-form')
let changePhoneButton = $_ID('change-phone-button')
let goBackButton = $_ID('go-back-button')
ready(() => {
new Inputmask("+(\\9\\93)-99-99-99-99").mask(phoneField);
})
async function goBack() {
hide(changePhoneform)
show(changePhoneButton)
hide(goBackButton)
show(verificationForm)
}
function showChangePhone() {
show(changePhoneform)
hide(changePhoneButton)
show(goBackButton)
hide(verificationForm)
}
async function changePhone(event) {
const response = await postData(event.target.action, getFormData(event))
if (response.errors) {
loopObject(response.errors, item => addValidationClasses(item))
return;
}
removeValidationClasess()
await Swal.fire({
title: '{{ __('module.base-auth::base.successfully_changed_phone') }}',
text: '{{ __('module.base-auth::base.please_now_verify_your_phone_number_to_continue') }}',
icon: 'success',
showDenyButton: false,
showCancelButton: false,
})
window.location.href = response.url;
}
</script>
</body>
</html>