diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index a9c1d72..94210db 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -2,29 +2,25 @@ namespace App\Http\Controllers\Auth; +use App\Models\User; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; use Laravel\Nova\Nova; class LoginController extends Controller { - /* - |-------------------------------------------------------------------------- - | Login Controller - |-------------------------------------------------------------------------- - | - | This controller handles authenticating users for the application and - | redirecting them to your home screen. The controller uses a trait - | to conveniently provide its functionality to your applications. - | - */ - use AuthenticatesUsers, ValidatesRequests; + /** + * Username + */ + protected string $username = 'username'; + /** * Create a new controller instance. * @@ -99,7 +95,7 @@ class LoginController extends Controller */ public function username(): string { - return 'username'; + return $this->username; } /** @@ -117,6 +113,54 @@ class LoginController extends Controller ]); } + /** + * Handle a login request to the application. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse + * + * @throws \Illuminate\Validation\ValidationException + */ + public function login(Request $request) + { + $this->validateLogin($request); + + // If the class is using the ThrottlesLogins trait, we can automatically throttle + // the login attempts for this application. We'll key this by the username and + // the IP address of the client making these requests into this application. + if (method_exists($this, 'hasTooManyLoginAttempts') && + $this->hasTooManyLoginAttempts($request)) { + $this->fireLockoutEvent($request); + + return $this->sendLockoutResponse($request); + } + + $user = User::where('username', $request->username) + ->orWhere('phone', unMaskPhone($request->username)) + ->first(); + + if (! $user) { + return $this->sendFailedLoginResponse($request); + } + + if (Hash::check($request->password, $user->password)) { + auth()->login($user); + + if ($request->hasSession()) { + $request->session()->put('auth.password_confirmed_at', time()); + } + + return $this->sendLoginResponse($request); + } + + // If the login attempt was unsuccessful we will increment the number of attempts + // to login and redirect the user back to the login form. Of course, when this + // user surpasses their maximum number of attempts they will get locked out. + $this->incrementLoginAttempts($request); + + return $this->sendFailedLoginResponse($request); + } + /** * Send the response after the user was authenticated. * diff --git a/app/Modules/ApiAuth/Controllers/ApiAuthController.php b/app/Modules/ApiAuth/Controllers/ApiAuthController.php index 6ef6a86..5678d89 100644 --- a/app/Modules/ApiAuth/Controllers/ApiAuthController.php +++ b/app/Modules/ApiAuth/Controllers/ApiAuthController.php @@ -54,6 +54,9 @@ class ApiAuthController extends Controller public function verify(AuthVerifyRequest $request): JsonResponse { $user = User::where('phone', $request->phone)->firstOrFail(); + $user->update([ + 'phone_verified_at' => now(), + ]); return response()->json([ 'message' => $user->createToken(bin2hex(random_bytes(20)))->plainTextToken, diff --git a/app/Modules/LoanOrder/Controllers/LoanOrderController.php b/app/Modules/LoanOrder/Controllers/LoanOrderController.php index edcc5a6..02432f9 100644 --- a/app/Modules/LoanOrder/Controllers/LoanOrderController.php +++ b/app/Modules/LoanOrder/Controllers/LoanOrderController.php @@ -16,7 +16,7 @@ class LoanOrderController extends Controller public function index(Request $request) { return response()->json(LoanOrderIndexResource::collection( - LoanOrder::query()->paginate() + LoanOrder::query()->where('user_id', auth()->id())->paginate() )); } diff --git a/app/Nova/Resources/Order/Loan/LoanOrder.php b/app/Nova/Resources/Order/Loan/LoanOrder.php index b6fd05b..d4b91dc 100644 --- a/app/Nova/Resources/Order/Loan/LoanOrder.php +++ b/app/Nova/Resources/Order/Loan/LoanOrder.php @@ -5,7 +5,6 @@ namespace App\Nova\Resources\Order\Loan; use App\Models\Branch\Branch; use App\Models\Order\Loan\LoanOrder as LoanOrderModel; use App\Models\System\Location\Province; -use App\Modules\DateHelper\Repositories\DateHelperRepository; use App\Nova\Filters\RegionFilter; use App\Nova\Filters\StatusFilter; use App\Nova\Resource; @@ -179,7 +178,6 @@ class LoanOrder extends Resource ->sortable(), ]), - new Panel(__('Location'), [ Select::make(__('Region'), 'region') ->displayUsingLabels() diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index fb17ad2..76df9a7 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,14 +2,12 @@ namespace App\Providers; -use App\Models\User; use Dedoc\Scramble\Scramble; use Dedoc\Scramble\Support\Generator\OpenApi; use Dedoc\Scramble\Support\Generator\SecurityScheme; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; @@ -41,7 +39,7 @@ class AppServiceProvider extends ServiceProvider $openApi->secure(SecurityScheme::http('bearer')); }); - // $this->listenDB(); + $this->listenDB(); } /** diff --git a/app/Repos/System/Nova/NovaMenuRepo.php b/app/Repos/System/Nova/NovaMenuRepo.php index 0d8143e..ff4f5a1 100644 --- a/app/Repos/System/Nova/NovaMenuRepo.php +++ b/app/Repos/System/Nova/NovaMenuRepo.php @@ -54,7 +54,7 @@ class NovaMenuRepo MenuGroup::make(__('International payments'), [ MenuItem::resource(NovaVisaMasterPaymentOrder::class), MenuItem::resource(NovaSberPaymentOrder::class), - MenuItem::resource(NovaTuitionPaymentOrder::class), + // MenuItem::resource(NovaTuitionPaymentOrder::class), ])->collapsedByDefault(), ])->icon('ticket')->collapsedByDefault(), diff --git a/lang/tk.json b/lang/tk.json index b0fb696..d962de7 100644 --- a/lang/tk.json +++ b/lang/tk.json @@ -301,5 +301,6 @@ "Sender files": "Ugradyjy boýunça resminamalary", "Next": "Indiki", "Previus": "Yza", - "Loading": "Ýüklenilýär" + "Loading": "Ýüklenilýär", + "or": "ýada" } diff --git a/public/assets/css/auth.css b/public/assets/css/auth.css index aac2ddf..590b4f2 100644 --- a/public/assets/css/auth.css +++ b/public/assets/css/auth.css @@ -1,3 +1,7 @@ +.lowecase { + text-transform: lowercase; +} + .bg-img { background: url(/assets/images/login-bg.jpg) no-repeat fixed var(--sc-login-bg-position, 50% 50%); background-size: cover; diff --git a/public/assets/js/fn.js b/public/assets/js/fn.js index 9ffb290..5f7608c 100644 --- a/public/assets/js/fn.js +++ b/public/assets/js/fn.js @@ -27,14 +27,16 @@ async function postData(url = '', data = {}) { body: JSON.stringify(data) }) - console.log({response}) - return response.json() } function addValidationClasses(item) { - $_ID(item.key).classList.add('form-input-border-error') - $_ID(`${item.key}-error-box`).innerHTML = `${item.value}` + if (! item) { + return; + } + + $_ID(item.key).classList.add('form-input-border-error') + $_ID(`${item.key}-error-box`).innerHTML = `${item.value}` } function removeValidationClasess() { diff --git a/resources/views/vendor/nova/pages/login.blade.php b/resources/views/vendor/nova/pages/login.blade.php index d699153..a7660e8 100644 --- a/resources/views/vendor/nova/pages/login.blade.php +++ b/resources/views/vendor/nova/pages/login.blade.php @@ -5,6 +5,8 @@ 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)) @@ -41,12 +43,13 @@ async function login(event) {