diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 0341f78f..e0b2d566 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -40,6 +40,13 @@ class LoginController extends Controller $this->middleware('guest')->except('logout'); } + protected function credentials(\Illuminate\Http\Request $request) + { + return array_merge($request->only($this->username(), 'password'), [ + 'status' => 'active', + ]); + } + public function username() { return 'username'; diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 937499f9..b300775e 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -155,7 +155,7 @@ class HomeController extends Controller } } - } else { //operasi,jurulelong + } else { //operasi $sag = LelongBid::where('status_semak', 0) //belum disemak ->get(); } @@ -608,7 +608,7 @@ class HomeController extends Controller } } - if ($user->hasAnyRole('operasi', 'pengurus-operasi', 'jurulelong')) { + if ($user->hasAnyRole('operasi', 'pengurus-operasi')) { $arrayinfo = []; diff --git a/app/Http/Controllers/LelongController.php b/app/Http/Controllers/LelongController.php index 9c38aaea..c83e0b69 100644 --- a/app/Http/Controllers/LelongController.php +++ b/app/Http/Controllers/LelongController.php @@ -1948,7 +1948,7 @@ class LelongController extends Controller public function stopcawangan($id,$cawid) { - event(new LelongNotify('start')); + event(new LelongNotify('stop')); $currentdate = Carbon::now(); $currenttime = $currentdate->toTimeString(); $endtime = $currentdate->addHours(2); @@ -1965,7 +1965,7 @@ class LelongController extends Controller $lelong->save(); return redirect()->route('home') - ->with('success','Lelongan bermula'); + ->with('success','Lelongan ditamatkan'); } public function startall($id) diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 7ac1d92a..4227a5c5 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -843,6 +843,8 @@ class ReportController extends Controller $pdf = PDF::loadView('pdf.simulasireportbycust',compact('simulasilel','cawanganDetail','marhuns','simulasi_id','cawid','ktlhbyr','cawname')) ->setPaper('a4','potrait'); + + $pdf->setPaper('a4', 'landscape'); return $pdf->download('Laporan Simulasi Cawangan by Pelanggan.pdf'); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 6221e573..d532f0ae 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -37,6 +37,7 @@ class Kernel extends HttpKernel \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\EnsureActiveAccount::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], diff --git a/app/Http/Middleware/EnsureActiveAccount.php b/app/Http/Middleware/EnsureActiveAccount.php new file mode 100644 index 00000000..4d3efac4 --- /dev/null +++ b/app/Http/Middleware/EnsureActiveAccount.php @@ -0,0 +1,30 @@ +user(); + + if ($user && $user->status !== 'active') { + $guard->logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + + $message = 'Akaun anda tidak aktif. Sila hubungi pentadbir.'; + if ($request->expectsJson()) { + return response()->json(['message' => $message], 403); + } + + return redirect()->route('login')->withErrors(['username' => $message]); + } + + return $next($request); + } +} diff --git a/config/database.php b/config/database.php index e19277d8..902bdf84 100644 --- a/config/database.php +++ b/config/database.php @@ -93,686 +93,6 @@ return [ ]) : [], ], - 'KB2' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_KB2'), - 'host' => env('DB_HOST_KB2', '127.0.0.1'), - 'port' => env('DB_PORT_KB2', '3306'), - 'database' => env('DB_DATABASE_KB2', 'forge'), - 'username' => env('DB_USERNAME_KB2', 'forge'), - 'password' => env('DB_PASSWORD_KB2', ''), - 'unix_socket' => env('DB_SOCKET_KB2', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'WCY' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_WCY'), - 'host' => env('DB_HOST_WCY', '127.0.0.1'), - 'port' => env('DB_PORT_WCY', '3306'), - 'database' => env('DB_DATABASE_WCY', 'forge'), - 'username' => env('DB_USERNAME_WCY', 'forge'), - 'password' => env('DB_PASSWORD_WCY', ''), - 'unix_socket' => env('DB_SOCKET_WCY', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '1STOP' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_1STOP'), - 'host' => env('DB_HOST_1STOP', '127.0.0.1'), - 'port' => env('DB_PORT_1STOP', '3306'), - 'database' => env('DB_DATABASE_1STOP', 'forge'), - 'username' => env('DB_USERNAME_1STOP', 'forge'), - 'password' => env('DB_PASSWORD_1STOP', ''), - 'unix_socket' => env('DB_SOCKET_1STOP', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '020301' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_020301'), - 'host' => env('DB_HOST_020301', '127.0.0.1'), - 'port' => env('DB_PORT_020301', '3306'), - 'database' => env('DB_DATABASE_020301', 'forge'), - 'username' => env('DB_USERNAME_020301', 'forge'), - 'password' => env('DB_PASSWORD_020301', ''), - 'unix_socket' => env('DB_SOCKET_020301', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'WB' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_WB'), - 'host' => env('DB_HOST_WB', '127.0.0.1'), - 'port' => env('DB_PORT_WB', '3306'), - 'database' => env('DB_DATABASE_WB', 'forge'), - 'username' => env('DB_USERNAME_WB', 'forge'), - 'password' => env('DB_PASSWORD_WB', ''), - 'unix_socket' => env('DB_SOCKET_WB', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'ALS' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_ALS'), - 'host' => env('DB_HOST_ALS', '127.0.0.1'), - 'port' => env('DB_PORT_ALS', '3306'), - 'database' => env('DB_DATABASE_ALS', 'forge'), - 'username' => env('DB_USERNAME_ALS', 'forge'), - 'password' => env('DB_PASSWORD_ALS', ''), - 'unix_socket' => env('DB_SOCKET_ALS', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '020306' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_020306'), - 'host' => env('DB_HOST_020306', '127.0.0.1'), - 'port' => env('DB_PORT_020306', '3306'), - 'database' => env('DB_DATABASE_020306', 'forge'), - 'username' => env('DB_USERNAME_020306', 'forge'), - 'password' => env('DB_PASSWORD_020306', ''), - 'unix_socket' => env('DB_SOCKET_020306', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'ARM' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_ARM'), - 'host' => env('DB_HOST_ARM', '127.0.0.1'), - 'port' => env('DB_PORT_ARM', '3306'), - 'database' => env('DB_DATABASE_ARM', 'forge'), - 'username' => env('DB_USERNAME_ARM', 'forge'), - 'password' => env('DB_PASSWORD_ARM', ''), - 'unix_socket' => env('DB_SOCKET_ARM', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'APM' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_APM'), - 'host' => env('DB_HOST_APM', '127.0.0.1'), - 'port' => env('DB_PORT_APM', '3306'), - 'database' => env('DB_DATABASE_APM', 'forge'), - 'username' => env('DB_USERNAME_APM', 'forge'), - 'password' => env('DB_PASSWORD_APM', ''), - 'unix_socket' => env('DB_SOCKET_APM', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010311' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010311'), - 'host' => env('DB_HOST_010311', '127.0.0.1'), - 'port' => env('DB_PORT_010311', '3306'), - 'database' => env('DB_DATABASE_010311', 'forge'), - 'username' => env('DB_USERNAME_010311', 'forge'), - 'password' => env('DB_PASSWORD_010311', ''), - 'unix_socket' => env('DB_SOCKET_010311', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'JLI' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_JLI'), - 'host' => env('DB_HOST_JLI', '127.0.0.1'), - 'port' => env('DB_PORT_JLI', '3306'), - 'database' => env('DB_DATABASE_JLI', 'forge'), - 'username' => env('DB_USERNAME_JLI', 'forge'), - 'password' => env('DB_PASSWORD_JLI', ''), - 'unix_socket' => env('DB_SOCKET_JLI', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'ARP' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_ARP'), - 'host' => env('DB_HOST_ARP', '127.0.0.1'), - 'port' => env('DB_PORT_ARP', '3306'), - 'database' => env('DB_DATABASE_ARP', 'forge'), - 'username' => env('DB_USERNAME_ARP', 'forge'), - 'password' => env('DB_PASSWORD_ARP', ''), - 'unix_socket' => env('DB_SOCKET_ARP', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'GC' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_GC'), - 'host' => env('DB_HOST_GC', '127.0.0.1'), - 'port' => env('DB_PORT_GC', '3306'), - 'database' => env('DB_DATABASE_GC', 'forge'), - 'username' => env('DB_USERNAME_GC', 'forge'), - 'password' => env('DB_PASSWORD_GC', ''), - 'unix_socket' => env('DB_SOCKET_GC', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010621' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010621'), - 'host' => env('DB_HOST_010621', '127.0.0.1'), - 'port' => env('DB_PORT_010621', '3306'), - 'database' => env('DB_DATABASE_010621', 'forge'), - 'username' => env('DB_USERNAME_010621', 'forge'), - 'password' => env('DB_PASSWORD_010621', ''), - 'unix_socket' => env('DB_SOCKET_010621', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010136' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010136'), - 'host' => env('DB_HOST_010136', '127.0.0.1'), - 'port' => env('DB_PORT_010136', '3306'), - 'database' => env('DB_DATABASE_010136', 'forge'), - 'username' => env('DB_USERNAME_010136', 'forge'), - 'password' => env('DB_PASSWORD_010136', ''), - 'unix_socket' => env('DB_SOCKET_010136', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011235' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011235'), - 'host' => env('DB_HOST_011235', '127.0.0.1'), - 'port' => env('DB_PORT_011235', '3306'), - 'database' => env('DB_DATABASE_011235', 'forge'), - 'username' => env('DB_USERNAME_011235', 'forge'), - 'password' => env('DB_PASSWORD_011235', ''), - 'unix_socket' => env('DB_SOCKET_011235', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011227' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011227'), - 'host' => env('DB_HOST_011227', '127.0.0.1'), - 'port' => env('DB_PORT_011227', '3306'), - 'database' => env('DB_DATABASE_011227', 'forge'), - 'username' => env('DB_USERNAME_011227', 'forge'), - 'password' => env('DB_PASSWORD_011227', ''), - 'unix_socket' => env('DB_SOCKET_011227', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010620' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010620'), - 'host' => env('DB_HOST_010620', '127.0.0.1'), - 'port' => env('DB_PORT_010620', '3306'), - 'database' => env('DB_DATABASE_010620', 'forge'), - 'username' => env('DB_USERNAME_010620', 'forge'), - 'password' => env('DB_PASSWORD_010620', ''), - 'unix_socket' => env('DB_SOCKET_010620', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010617' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010617'), - 'host' => env('DB_HOST_010617', '127.0.0.1'), - 'port' => env('DB_PORT_010617', '3306'), - 'database' => env('DB_DATABASE_010617', 'forge'), - 'username' => env('DB_USERNAME_010617', 'forge'), - 'password' => env('DB_PASSWORD_010617', ''), - 'unix_socket' => env('DB_SOCKET_010617', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010915' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010915'), - 'host' => env('DB_HOST_010915', '127.0.0.1'), - 'port' => env('DB_PORT_010915', '3306'), - 'database' => env('DB_DATABASE_010915', 'forge'), - 'username' => env('DB_USERNAME_010915', 'forge'), - 'password' => env('DB_PASSWORD_010915', ''), - 'unix_socket' => env('DB_SOCKET_010915', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011228' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011228'), - 'host' => env('DB_HOST_011228', '127.0.0.1'), - 'port' => env('DB_PORT_011228', '3306'), - 'database' => env('DB_DATABASE_011228', 'forge'), - 'username' => env('DB_USERNAME_011228', 'forge'), - 'password' => env('DB_PASSWORD_011228', ''), - 'unix_socket' => env('DB_SOCKET_011228', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010219' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010219'), - 'host' => env('DB_HOST_010219', '127.0.0.1'), - 'port' => env('DB_PORT_010219', '3306'), - 'database' => env('DB_DATABASE_010219', 'forge'), - 'username' => env('DB_USERNAME_010219', 'forge'), - 'password' => env('DB_PASSWORD_010219', ''), - 'unix_socket' => env('DB_SOCKET_010219', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011229' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011229'), - 'host' => env('DB_HOST_011229', '127.0.0.1'), - 'port' => env('DB_PORT_011229', '3306'), - 'database' => env('DB_DATABASE_011229', 'forge'), - 'username' => env('DB_USERNAME_011229', 'forge'), - 'password' => env('DB_PASSWORD_011229', ''), - 'unix_socket' => env('DB_SOCKET_011229', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011230' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011230'), - 'host' => env('DB_HOST_011230', '127.0.0.1'), - 'port' => env('DB_PORT_011230', '3306'), - 'database' => env('DB_DATABASE_011230', 'forge'), - 'username' => env('DB_USERNAME_011230', 'forge'), - 'password' => env('DB_PASSWORD_011230', ''), - 'unix_socket' => env('DB_SOCKET_011230', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011013' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011013'), - 'host' => env('DB_HOST_011013', '127.0.0.1'), - 'port' => env('DB_PORT_011013', '3306'), - 'database' => env('DB_DATABASE_011013', 'forge'), - 'username' => env('DB_USERNAME_011013', 'forge'), - 'password' => env('DB_PASSWORD_011013', ''), - 'unix_socket' => env('DB_SOCKET_011013', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011412' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011412'), - 'host' => env('DB_HOST_011412', '127.0.0.1'), - 'port' => env('DB_PORT_011412', '3306'), - 'database' => env('DB_DATABASE_011412', 'forge'), - 'username' => env('DB_USERNAME_011412', 'forge'), - 'password' => env('DB_PASSWORD_011412', ''), - 'unix_socket' => env('DB_SOCKET_011412', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011231' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011231'), - 'host' => env('DB_HOST_011231', '127.0.0.1'), - 'port' => env('DB_PORT_011231', '3306'), - 'database' => env('DB_DATABASE_011231', 'forge'), - 'username' => env('DB_USERNAME_011231', 'forge'), - 'password' => env('DB_PASSWORD_011231', ''), - 'unix_socket' => env('DB_SOCKET_011231', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011232' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011232'), - 'host' => env('DB_HOST_011232', '127.0.0.1'), - 'port' => env('DB_PORT_011232', '3306'), - 'database' => env('DB_DATABASE_011232', 'forge'), - 'username' => env('DB_USERNAME_011232', 'forge'), - 'password' => env('DB_PASSWORD_011232', ''), - 'unix_socket' => env('DB_SOCKET_011232', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011234' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011234'), - 'host' => env('DB_HOST_011234', '127.0.0.1'), - 'port' => env('DB_PORT_011234', '3306'), - 'database' => env('DB_DATABASE_011234', 'forge'), - 'username' => env('DB_USERNAME_011234', 'forge'), - 'password' => env('DB_PASSWORD_011234', ''), - 'unix_socket' => env('DB_SOCKET_011234', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011233' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011233'), - 'host' => env('DB_HOST_011233', '127.0.0.1'), - 'port' => env('DB_PORT_011233', '3306'), - 'database' => env('DB_DATABASE_011233', 'forge'), - 'username' => env('DB_USERNAME_011233', 'forge'), - 'password' => env('DB_PASSWORD_011233', ''), - 'unix_socket' => env('DB_SOCKET_011233', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '020303' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_020303'), - 'host' => env('DB_HOST_020303', '127.0.0.1'), - 'port' => env('DB_PORT_020303', '3306'), - 'database' => env('DB_DATABASE_020303', 'forge'), - 'username' => env('DB_USERNAME_020303', 'forge'), - 'password' => env('DB_PASSWORD_020303', ''), - 'unix_socket' => env('DB_SOCKET_020303', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '010618' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_010618'), - 'host' => env('DB_HOST_010618', '127.0.0.1'), - 'port' => env('DB_PORT_010618', '3306'), - 'database' => env('DB_DATABASE_010618', 'forge'), - 'username' => env('DB_USERNAME_010618', 'forge'), - 'password' => env('DB_PASSWORD_010618', ''), - 'unix_socket' => env('DB_SOCKET_010618', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - '011237' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_011237'), - 'host' => env('DB_HOST_011237', '127.0.0.1'), - 'port' => env('DB_PORT_011237', '3306'), - 'database' => env('DB_DATABASE_011237', 'forge'), - 'username' => env('DB_USERNAME_011237', 'forge'), - 'password' => env('DB_PASSWORD_011237', ''), - 'unix_socket' => env('DB_SOCKET_011237', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - - 'KB1' => [ - 'driver' => 'mysql', - 'url' => env('DATABASE_URL_KB1'), - 'host' => env('DB_HOST_KB1', '127.0.0.1'), - 'port' => env('DB_PORT_KB1', '3306'), - 'database' => env('DB_DATABASE_KB1', 'forge'), - 'username' => env('DB_USERNAME_KB1', 'forge'), - 'password' => env('DB_PASSWORD_KB1', ''), - 'unix_socket' => env('DB_SOCKET_KB1', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), - ]) : [], - ], - 'X0101' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL_X0101'), @@ -793,6 +113,126 @@ return [ ]) : [], ], + 'X0201' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_X0201'), + 'host' => env('DB_HOST_X0201', '127.0.0.1'), + 'port' => env('DB_PORT_X0201', '3306'), + 'database' => env('DB_DATABASE_X0201', 'forge'), + 'username' => env('DB_USERNAME_X0201', 'forge'), + 'password' => env('DB_PASSWORD_X0201', ''), + 'unix_socket' => env('DB_SOCKET_X0201', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'X0301' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_X0301'), + 'host' => env('DB_HOST_X0301', '127.0.0.1'), + 'port' => env('DB_PORT_X0301', '3306'), + 'database' => env('DB_DATABASE_X0301', 'forge'), + 'username' => env('DB_USERNAME_X0301', 'forge'), + 'password' => env('DB_PASSWORD_X0301', ''), + 'unix_socket' => env('DB_SOCKET_X0301', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'X0401' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_X0401'), + 'host' => env('DB_HOST_X0401', '127.0.0.1'), + 'port' => env('DB_PORT_X0401', '3306'), + 'database' => env('DB_DATABASE_X0401', 'forge'), + 'username' => env('DB_USERNAME_X0401', 'forge'), + 'password' => env('DB_PASSWORD_X0401', ''), + 'unix_socket' => env('DB_SOCKET_X0401', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'X0501' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_X0501'), + 'host' => env('DB_HOST_X0501', '127.0.0.1'), + 'port' => env('DB_PORT_X0501', '3306'), + 'database' => env('DB_DATABASE_X0501', 'forge'), + 'username' => env('DB_USERNAME_X0501', 'forge'), + 'password' => env('DB_PASSWORD_X0501', ''), + 'unix_socket' => env('DB_SOCKET_X0501', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'X0601' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_X0601'), + 'host' => env('DB_HOST_X0601', '127.0.0.1'), + 'port' => env('DB_PORT_X0601', '3306'), + 'database' => env('DB_DATABASE_X0601', 'forge'), + 'username' => env('DB_USERNAME_X0601', 'forge'), + 'password' => env('DB_PASSWORD_X0601', ''), + 'unix_socket' => env('DB_SOCKET_X0601', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'AN0101' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL_AN0101'), + 'host' => env('DB_HOST_AN0101', '127.0.0.1'), + 'port' => env('DB_PORT_AN0101', '3306'), + 'database' => env('DB_DATABASE_AN0101', 'forge'), + 'username' => env('DB_USERNAME_AN0101', 'forge'), + 'password' => env('DB_PASSWORD_AN0101', ''), + 'unix_socket' => env('DB_SOCKET_AN0101', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + 'kaunterpkb' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL_KAUNTERPKB'), diff --git a/database/migrations/2026_09_27_000002_transfer_auction_controls_to_operasi.php b/database/migrations/2026_09_27_000002_transfer_auction_controls_to_operasi.php new file mode 100644 index 00000000..7ba18ebf --- /dev/null +++ b/database/migrations/2026_09_27_000002_transfer_auction_controls_to_operasi.php @@ -0,0 +1,35 @@ +transfer('jurulelong', 'operasi'); + } + + public function down() + { + $this->transfer('operasi', 'jurulelong'); + } + + private function transfer($from, $to) + { + DB::transaction(function () use ($from, $to) { + $source = Role::where('name', $from)->where('guard_name', 'web')->first(); + $target = Role::findOrCreate($to, 'web'); + foreach (['lelongan', 'janapemenang'] as $permission) { + $target->givePermissionTo($permission); + if ($source) { + $source->revokePermissionTo($permission); + } + } + }); + + app(PermissionRegistrar::class)->forgetCachedPermissions(); + } +} diff --git a/database/migrations/2026_09_28_000001_merge_jurulelong_role_into_operasi.php b/database/migrations/2026_09_28_000001_merge_jurulelong_role_into_operasi.php new file mode 100644 index 00000000..8d1f359b --- /dev/null +++ b/database/migrations/2026_09_28_000001_merge_jurulelong_role_into_operasi.php @@ -0,0 +1,84 @@ +backup)) { + Schema::create($this->backup, function (Blueprint $table) { + $table->unsignedBigInteger('id')->primary(); + $table->longText('payload'); + }); + } + + DB::transaction(function () { + $tables = config('permission.table_names'); + $key = config('permission.column_names.role_pivot_key') ?: 'role_id'; + foreach (DB::table($tables['roles'])->where('name', 'jurulelong')->get() as $role) { + $target = DB::table($tables['roles'])->where('name', 'operasi') + ->where('guard_name', $role->guard_name)->first(); + $snapshot = ['role' => (array) $role, 'renamed' => !$target, 'rows' => [], 'added' => []]; + + if (!$target) { + DB::table($tables['roles'])->where('id', $role->id)->update(['name' => 'operasi']); + } else { + foreach (['model_has_roles', 'role_has_permissions'] as $pivot) { + $snapshot['rows'][$pivot] = []; + $snapshot['added'][$pivot] = []; + foreach (DB::table($tables[$pivot])->where($key, $role->id)->get() as $row) { + $original = (array) $row; + $snapshot['rows'][$pivot][] = $original; + $replacement = $original; + $replacement[$key] = $target->id; + if (!DB::table($tables[$pivot])->where($replacement)->exists()) { + DB::table($tables[$pivot])->insert($replacement); + $snapshot['added'][$pivot][] = $replacement; + } + } + DB::table($tables[$pivot])->where($key, $role->id)->delete(); + } + DB::table($tables['roles'])->where('id', $role->id)->delete(); + } + + DB::table($this->backup)->insert([ + 'id' => $role->id, + 'payload' => json_encode($snapshot, JSON_THROW_ON_ERROR), + ]); + } + }); + app(PermissionRegistrar::class)->forgetCachedPermissions(); + } + + public function down() + { + DB::transaction(function () { + $tables = config('permission.table_names'); + foreach (DB::table($this->backup)->get() as $backup) { + $snapshot = json_decode($backup->payload, true, 512, JSON_THROW_ON_ERROR); + if ($snapshot['renamed']) { + DB::table($tables['roles'])->where('id', $backup->id)->update($snapshot['role']); + } else { + DB::table($tables['roles'])->insert($snapshot['role']); + foreach ($snapshot['rows'] as $pivot => $rows) { + foreach ($snapshot['added'][$pivot] as $row) { + DB::table($tables[$pivot])->where($row)->delete(); + } + foreach ($rows as $row) { + DB::table($tables[$pivot])->insert($row); + } + } + } + } + }); + Schema::dropIfExists($this->backup); + app(PermissionRegistrar::class)->forgetCachedPermissions(); + } +} diff --git a/database/seeders/RolesSeeder.php b/database/seeders/RolesSeeder.php index 96ff3dba..1ae5e22e 100644 --- a/database/seeders/RolesSeeder.php +++ b/database/seeders/RolesSeeder.php @@ -82,7 +82,7 @@ class RolesSeeder extends Seeder 'description' => 'Wang Tidak Dituntut Cawangan' ]); - //jurulelong + //operasi Permission::create([ 'name' => 'pendaftaranbatch', 'description' => 'Daftar batch lelong' @@ -238,14 +238,10 @@ class RolesSeeder extends Seeder $role4->givePermissionTo('pengurusangambar'); $role4->givePermissionTo('WTDcaw'); - $role5 = Role::create(['name' => 'jurulelong']); - $role5->givePermissionTo('pendaftaranbatch'); - $role5->givePermissionTo('kemaskinihargaasas'); - $role5->givePermissionTo('import'); - $role5->givePermissionTo('lelongan'); - $role5->givePermissionTo('janapemenang'); - $role6 = Role::create(['name' => 'operasi']); + $role6->givePermissionTo('import'); + $role6->givePermissionTo('lelongan'); + $role6->givePermissionTo('janapemenang'); $role6->givePermissionTo('pengguna'); $role6->givePermissionTo('pendaftaranbatch'); $role6->givePermissionTo('report'); @@ -342,14 +338,6 @@ class RolesSeeder extends Seeder ]); $user->assignRole($role4); - $user = \App\Models\User::factory()->create([ - 'name' => 'Juru Lelong', - 'username' => 'Juru Lelong', - 'email' => 'jurulelong@example.com', - 'user_type' => 1 - ]); - $user->assignRole($role5); - $user = \App\Models\User::factory()->create([ 'name' => 'Operasi', 'username' => 'Operasi', diff --git a/public/css/login.css b/public/css/login.css new file mode 100644 index 00000000..cc2d2428 --- /dev/null +++ b/public/css/login.css @@ -0,0 +1,49 @@ +* { box-sizing: border-box; } +:root { --teal: #008e95; --teal-dark: #00686e; --yellow: #ffce1b; --ink: #183b3e; } +body { margin: 0; min-height: 100vh; padding: 48px 28px; display: grid; place-items: center; background: #edf4f3; color: var(--ink); font-family: 'Segoe UI', Arial, sans-serif; } +.login-shell { width: min(1100px, 100%); min-height: 680px; display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; border: 1px solid #dbe7e5; border-radius: 26px; background: white; box-shadow: 0 24px 70px #164f4d12; } +.brand-panel { position: relative; overflow: hidden; padding: 48px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: linear-gradient(145deg, #00969b, #007d84); color: white; } +.brand-logo { position: relative; z-index: 1; width: 250px; max-width: 100%; height: auto; } +.brand-copy { position: relative; z-index: 1; margin: 36px 0; } +.eyebrow { display: flex; align-items: center; justify-content: center; gap: 10px; font-size: 11px; font-weight: 700; letter-spacing: 2px; } +.eyebrow span { width: 7px; height: 7px; background: var(--yellow); border-radius: 50%; } +h1 { margin: 22px 0; font-size: clamp(34px, 3.5vw, 48px); line-height: 1.2; font-weight: 650; letter-spacing: -1.8px; } +h1 em { color: var(--yellow); font-style: normal; } +.brand-copy p { max-width: 340px; color: #e2f3f3; font-size: 15px; line-height: 1.85; } +.brand-divider { height: 3px; width: 42px; background: var(--yellow); margin: 30px auto 18px; } +.brand-caption { font-size: 12px; color: #e2f3f3; letter-spacing: .4px; } +.brand-bottom { display: flex; align-items: center; gap: 13px; justify-content: center; margin-top: 32px; position: relative; z-index: 1; font-size: 11px; line-height: 1.65; color: #e2f3f3; } +.brand-mark { width: 37px; height: 37px; display: grid; place-items: center; border: 1px solid #ffffff55; border-radius: 10px; color: var(--yellow); font-size: 17px; font-weight: 700; } +.brand-orbit { position: absolute; width: 420px; height: 420px; bottom: -235px; right: -200px; border: 1px solid #ffffff29; border-radius: 50%; box-shadow: 0 0 0 45px #ffffff06, 0 0 0 90px #ffffff05; } +.form-panel { padding: 70px 56px 28px; display: flex; flex-direction: column; justify-content: center; } +.form-content { width: 100%; margin: auto 0; } +.section-label { color: var(--teal-dark); font-size: 10px; font-weight: 700; letter-spacing: 2px; } +h2 { margin: 14px 0 10px; font-size: 36px; letter-spacing: -1.2px; font-weight: 650; } +.form-intro { margin: 0 0 34px; color: #64797a; font-size: 14px; line-height: 1.7; } +.field { margin-bottom: 22px; } +label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 9px; } +input { width: 100%; height: 52px; border: 1px solid #cfddda; border-radius: 9px; padding: 0 15px; background: #fcfdfd; font: inherit; font-size: 14px; color: var(--ink); } +input::placeholder { color: #7c8f90; } +input:focus { outline: 3px solid #008e9524; border-color: var(--teal); background: white; } +input[aria-invalid="true"] { border-color: #b73131; } +.password-field { position: relative; } +.password-field input { padding-right: 72px; } +button, a { -webkit-tap-highlight-color: transparent; } +.password-toggle { position: absolute; right: 8px; top: 6px; height: 40px; padding: 0 10px; border: 0; border-radius: 6px; color: var(--teal-dark); background: transparent; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600; } +.form-links { display: flex; justify-content: flex-end; margin: -6px 0 25px; } +a { color: var(--teal-dark); font-size: 13px; font-weight: 600; text-decoration: none; } +a:hover { text-decoration: underline; } +button:focus-visible, a:focus-visible { outline: 3px solid var(--teal); outline-offset: 4px; } +.submit-button { width: 100%; display: flex; align-items: center; justify-content: center; gap: 18px; min-height: 52px; border: 0; border-radius: 9px; background: var(--yellow); color: #233f3c; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; transition: background .15s; } +.submit-button:hover { background: #f3c112; } +.submit-button span { font-size: 22px; line-height: 1; } +.form-note { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 26px; color: #718483; font-size: 11px; } +.note-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--teal); } +footer { padding-top: 55px; text-align: center; color: #6a7f7d; font-size: 10px; line-height: 1.7; } +.notice { padding: 13px 15px; border-radius: 8px; margin-bottom: 20px; font-size: 13px; line-height: 1.5; } +.notice-success { background: #e5f5ed; color: #216348; } +.notice-error { background: #fff0ee; color: #a32626; } +.field-error { color: #a32626; font-size: 12px; margin: 8px 0 0; line-height: 1.5; } +@media (max-width: 800px) { body { padding: 24px; } .brand-panel { padding: 34px; } .form-panel { padding: 42px 30px 24px; } h1 { font-size: 36px; } } +@media (max-width: 600px) { body { padding: 18px 14px; } .login-shell { grid-template-columns: 1fr; min-height: auto; border-radius: 20px; } .brand-panel { padding: 28px; } .brand-logo { width: 210px; } .brand-copy { margin: 26px 0 0; } .eyebrow { font-size: 9px; } h1 { font-size: 32px; margin: 15px 0 10px; } .brand-copy p, .brand-divider, .brand-caption, .brand-bottom { display: none; } .form-panel { padding: 32px 26px 24px; } h2 { font-size: 30px; } .form-intro { margin-bottom: 25px; } footer { padding-top: 35px; } } +@media (prefers-reduced-motion: reduce) { * { transition: none !important; } } diff --git a/resources/views/about.blade.php b/resources/views/about.blade.php index ec699e64..f08ded54 100644 --- a/resources/views/about.blade.php +++ b/resources/views/about.blade.php @@ -27,8 +27,8 @@ @hasrole('pengurus-cawangan') I am a pengurus-cawangan! @endhasrole - @hasrole('jurulelong') - I am a jurulelong! + @hasrole('operasi') + I am an operasi user! @endhasrole @hasrole('operasi') I am a operasi! diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 3887dbcc..5b1604d5 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,104 +1,76 @@ - -
- - - -
- {{-- Sistem LelonganĀ AtasĀ Talian
-|
- @hasrole('jurulelong')
+ @hasrole('operasi')
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index f109aa12..ad690217 100644
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -208,8 +208,8 @@
@endhasrole
- @hasrole('jurulelong')
- {{-- Saya jurulelong! --}}
+ @hasrole('operasi')
+ {{-- Kawalan lelong oleh operasi. --}}
{{--
@@ -290,7 +290,7 @@
- @hasrole('jurulelong')
+ @hasrole('operasi')
diff --git a/resources/views/home00.blade.php b/resources/views/home00.blade.php
index 3213870f..96d08218 100644
--- a/resources/views/home00.blade.php
+++ b/resources/views/home00.blade.php
@@ -118,8 +118,8 @@
@endhasrole
- @hasrole('jurulelong')
- Saya jurulelong!
+ @hasrole('operasi')
+ Saya operasi!
|
@@ -200,7 +200,7 @@
- @hasrole('jurulelong')
+ @hasrole('operasi')
diff --git a/resources/views/homeoperasi.blade.php b/resources/views/homeoperasi.blade.php
index 41b871dd..7c04d514 100644
--- a/resources/views/homeoperasi.blade.php
+++ b/resources/views/homeoperasi.blade.php
@@ -12,7 +12,7 @@
{{ session('status') }}
@endif
- @hasrole('jurulelong')
+ @hasrole('operasi')
@if(count($arrayinfo)> 0)
@foreach ($arrayinfo as $lel)
|
@@ -125,8 +125,7 @@
@if($cawangan_detail['status_online'] == 0 && $cawangan_detail['belum_semak'] == 0)
Mula Lelong
@elseif($cawangan_detail['status_online'] == 1)
- Tamat Lelong
-
+ Tamat Lelong
@endif
@elseif($lel['info']['sts_lelong'] == 2)
@endif
diff --git a/resources/views/homexxxx.blade.php b/resources/views/homexxxx.blade.php
index 3035e448..59a7e176 100644
--- a/resources/views/homexxxx.blade.php
+++ b/resources/views/homexxxx.blade.php
@@ -119,8 +119,8 @@
@endhasrole
- @hasrole('jurulelong')
- Saya jurulelong!
+ @hasrole('operasi')
+ Saya operasi!
@@ -201,7 +201,7 @@
- @hasrole('jurulelong')
+ @hasrole('operasi')
diff --git a/resources/views/includes/sidebar.blade.php b/resources/views/includes/sidebar.blade.php
index 0444d3a7..51241986 100644
--- a/resources/views/includes/sidebar.blade.php
+++ b/resources/views/includes/sidebar.blade.php
@@ -673,6 +673,35 @@
@endhasrole
@hasrole('operasi')
+ | |