Compare commits
4 Commits
58e3339431
...
a1104e0c5a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1104e0c5a | ||
|
|
75701b53a9 | ||
|
|
0b377847cf | ||
|
|
cf5a7824c5 |
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Authentication\Classes;
|
||||
|
||||
use Exception;
|
||||
|
||||
class Uim
|
||||
{
|
||||
private string $serviceHost;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
use Illuminate\Auth\Events\Lockout;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\RateLimiter;
|
||||
use Illuminate\Support\Str;
|
||||
@@ -28,6 +27,14 @@
|
||||
];
|
||||
}
|
||||
|
||||
public function messages()
|
||||
{
|
||||
return [
|
||||
'login.required' => 'User tidak boleh kosong',
|
||||
'password.required' => 'Password tidak boleh kosong',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to authenticate the request's credentials.
|
||||
*
|
||||
@@ -51,7 +58,7 @@
|
||||
if (!Auth::attempt($authData, $this->boolean('remember'))) {
|
||||
RateLimiter::hit($this->throttleKey());
|
||||
throw ValidationException::withMessages([
|
||||
'login' => trans('auth.failed'),
|
||||
'login' => 'Email/NIK atau password tidak sesuai.'
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -84,39 +91,34 @@
|
||||
[$key, $val] = explode('=', $rval);
|
||||
$userArray[0][$key] = $val;
|
||||
}
|
||||
|
||||
session()->put($userArray[0]);
|
||||
|
||||
// Use the login value to find the user
|
||||
$loginField = filter_var($credentials['login'], FILTER_VALIDATE_EMAIL) ? 'email' : 'nik';
|
||||
$user = User::where($loginField, $credentials['login'])->first();
|
||||
|
||||
$someValue = $userArray[0]['KD_CABANG']; // Example value containing the code
|
||||
$lastFourDigits = substr($someValue, -4); // Gets the last 4 characters
|
||||
$kodeCabang = $userArray[0]['KD_CABANG']; // Example value containing the code
|
||||
$lastFourDigits = substr($kodeCabang, -4); // Gets the last 4 characters
|
||||
$branch = Branch::where('code', 'LIKE', '%' . $lastFourDigits)->first();
|
||||
|
||||
session()->put($userArray[0]);
|
||||
session()->put('branch_id',$branch->id);
|
||||
|
||||
if (!$user) {
|
||||
//get branch id by 4 digit terakhir 0029
|
||||
|
||||
$user = User::create([
|
||||
$user = User::updateOrCreate(
|
||||
[$loginField => $credentials['login']],
|
||||
[
|
||||
'name' => $userArray[0]['NAMA_USER'],
|
||||
'email' => $loginField === 'email' ? $credentials['login'] : null,
|
||||
'nik' => $loginField === 'nik' ? $credentials['login'] : null,
|
||||
'password' => bcrypt($credentials['password']),
|
||||
'branch_id' => $branch ? $branch->id : null,
|
||||
]);
|
||||
]
|
||||
);
|
||||
|
||||
switch ($userArray[0]['KD_GROUP']) {
|
||||
case '001':
|
||||
$user->assignRole('administrator');
|
||||
break;
|
||||
case '025':
|
||||
$user->assignRole('customer_service');
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Assign role based on user group code
|
||||
$role = match($userArray[0]['KD_GROUP']) {
|
||||
'001' => 'administrator',
|
||||
default => 'customer_service'
|
||||
};
|
||||
|
||||
$user->syncRoles($role);
|
||||
|
||||
Auth::loginUsingId($user->id, true);
|
||||
$this->session()->regenerate();
|
||||
@@ -127,7 +129,7 @@
|
||||
// Authentication failed
|
||||
RateLimiter::hit($this->throttleKey());
|
||||
throw ValidationException::withMessages([
|
||||
'login' => trans('auth.failed'),
|
||||
'login' => 'Email/NIK atau password tidak sesuai.',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,81 +3,89 @@
|
||||
@push('styles')
|
||||
<style>
|
||||
.branded-bg {
|
||||
background-image:url('assets/media/images/2600x1600/1.png');
|
||||
background-image: url('assets/media/images/2600x1600/bg-3.png');
|
||||
}
|
||||
|
||||
.dark .branded-bg {
|
||||
background-image: url('assets/media/images/2600x1600/1-dark.png');
|
||||
background-image: url('assets/media/images/2600x1600/bg-3-dark.png');
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="grid lg:grid-cols-2 grow">
|
||||
<div class="flex justify-center items-center p-8 lg:p-10 order-2 lg:order-1">
|
||||
<div class="flex order-2 justify-center items-center p-8 lg:p-10 lg:order-1">
|
||||
<div class="card max-w-[370px] w-full">
|
||||
<form action="{{ route('login') }}" class="card-body flex flex-col gap-5 p-10" id="sign_in_form" method="POST">
|
||||
<form action="{{ route('login') }}" class="flex flex-col gap-5 p-10 card-body" id="sign_in_form" method="POST">
|
||||
@csrf
|
||||
<div class="text-center mb-2.5">
|
||||
<h3 class="text-lg font-semibold text-gray-900 leading-none mb-2.5">
|
||||
<div class="mb-2.5 text-center">
|
||||
<h3 class="mb-2.5 text-lg font-semibold leading-none text-gray-900">
|
||||
Sign in
|
||||
</h3>
|
||||
</div>
|
||||
<div class="flex flex-col gap-1">
|
||||
<label class="form-label text-gray-900">
|
||||
<label class="text-gray-900 form-label">
|
||||
Email or NIK
|
||||
</label>
|
||||
<input class="w-full input @error('login') border-danger @enderror" placeholder="Enter your email or NIK" type="text" name="login" value="{{ old('login') }}">
|
||||
<input class="w-full input @error('login') border-danger @enderror"
|
||||
placeholder="Enter your email or NIK" type="text" name="login" value="{{ old('login') }}">
|
||||
@error('login')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="flex flex-col gap-1">
|
||||
<div class="flex items-center justify-between gap-1">
|
||||
<label class="form-label text-gray-900">
|
||||
<div class="flex gap-1 justify-between items-center">
|
||||
<label class="text-gray-900 form-label">
|
||||
Password
|
||||
</label>
|
||||
</div>
|
||||
<label class="input" data-toggle-password="true">
|
||||
<input class="@error('password') border-danger @enderror" name="password" placeholder="Enter Password" type="password" value=""/>
|
||||
<input class="@error('password') border-danger @enderror" name="password"
|
||||
placeholder="Enter Password" type="password" value="" />
|
||||
<div class="btn btn-icon" data-toggle-password-trigger="true">
|
||||
<i class="ki-outline ki-eye toggle-password-active:hidden"></i>
|
||||
<i class="ki-outline ki-eye-slash hidden toggle-password-active:block"></i>
|
||||
<i class="hidden ki-outline ki-eye-slash toggle-password-active:block"></i>
|
||||
</div>
|
||||
@error('password')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
</label>
|
||||
@error('password')
|
||||
<em class="text-sm alert text-danger">{{ $message }}</em>
|
||||
@enderror
|
||||
</div>
|
||||
<label class="checkbox-group">
|
||||
<input class="checkbox checkbox-sm" name="check" type="checkbox" value="1"/>
|
||||
<input class="checkbox checkbox-sm" name="check" type="checkbox" value="1" />
|
||||
<span class="checkbox-label">
|
||||
Remember me
|
||||
</span>
|
||||
</label>
|
||||
<button type="submit" class="btn btn-primary flex justify-center grow">
|
||||
<button type="submit" class="flex justify-center btn btn-primary grow">
|
||||
Sign In
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lg:rounded-xl lg:border lg:border-gray-200 lg:m-5 order-1 lg:order-2 bg-top xxl:bg-center xl:bg-cover bg-no-repeat branded-bg">
|
||||
<div class="flex flex-col p-8 lg:p-16 gap-4">
|
||||
<a href="{{ route('dashboard') }}">
|
||||
<img class="h-[100px] max-w-none" src="assets/media/app/logo-agi.png"/>
|
||||
</a>
|
||||
<div
|
||||
class="order-1 bg-top bg-no-repeat lg:rounded-xl lg:border lg:border-gray-200 lg:m-5 lg:order-2 xxl:bg-center xl:bg-cover branded-bg">
|
||||
<div class="flex flex-col gap-4 p-8 w-full lg:p-16">
|
||||
<div class="flex w-full">
|
||||
<img class="h-[100px] lg:h-[200px] max-w-none" src="assets/media/app/logo-agi.png" />
|
||||
</div>
|
||||
<div class="flex flex-col gap-3">
|
||||
<h3 class="text-2xl font-semibold text-gray-900">
|
||||
Secure Access Portal
|
||||
<h3 class="text-4xl font-semibold text-gray-900">
|
||||
{{ env('APP_NAME', 'Dashboard') }}
|
||||
</h3>
|
||||
<div class="text-base font-medium text-gray-600">
|
||||
A robust authentication gateway ensuring
|
||||
<br/>
|
||||
secure
|
||||
<span class="text-gray-900 font-semibold">
|
||||
efficient user access
|
||||
<div class="text-lg font-medium text-gray-600">
|
||||
A robust authentication
|
||||
@if (env('METHOD_AUTH') == 'uim')
|
||||
integrate with <span class="font-semibold text-gray-900">User ID
|
||||
Management</span>
|
||||
@endif
|
||||
gateway ensuring
|
||||
<br />
|
||||
secure efficient user access to the
|
||||
<span class="font-semibold text-gray-900">
|
||||
{{ env('APP_NAME', 'Dashboard') }}
|
||||
</span>
|
||||
to the LPJ Online
|
||||
<br/>
|
||||
<br />
|
||||
Dashboard interface.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user