add function forgot password-reset password

This commit is contained in:
Nur Izzati Zulkifli
2022-09-25 16:56:07 +08:00
parent 4a7f096d98
commit f8fd24b64f
22 changed files with 844 additions and 46 deletions
+72
View File
@@ -14,6 +14,7 @@ use App\Models\Pengesahan;
use Carbon\Carbon;
use App\Models\Cawangan;
use App\Models\LelongBid;
use Hash;
class HomeController extends Controller
{
@@ -181,4 +182,75 @@ class HomeController extends Controller
return view('home',compact('lelong', 'arrayinfo'));
}
public function editprofile()
{
// $user = Auth::user();
// $user->assignRole('admin');
return view('profil');
}
public function profileUpdate(Request $request){
//validation rules
$request->validate([
'name' =>'required|min:4|string|max:255',
'username' =>'required|min:4|string|max:255',
'email'=>'required|email|string|max:255'
]);
$user =Auth::user();
$user->name = $request['name'];
$user->email = $request['email'];
$user->save();
return back()->with('message','Profil Telah Kemaskini');
}
public function tukarkatalaluan()
{
// $user = Auth::user();
// $user->assignRole('admin');
return view('tukarkatalaluan');
}
public function tukarkatalaluanupdate(Request $request){
//validation rules
$request->validate([
'name' =>'required|min:4|string|max:255',
'username' =>'required|min:4|string|max:255',
'email'=>'required|email|string|max:255'
]);
$user =Auth::user();
$user->name = $request['name'];
$user->email = $request['email'];
$user->save();
return back()->with('message','Profil Telah Kemaskini');
}
public function showChangePasswordGet() {
return view('tukarkatalaluan');
}
public function changePasswordPost(Request $request) {
if (!(Hash::check($request->get('current-password'), Auth::user()->password))) {
// The passwords matches
return redirect()->back()->with("error","Katalaluan Lama Tidak Sama Dengan katalaluan.");
}
if(strcmp($request->get('current-password'), $request->get('new-password')) == 0){
// Current password and new password same
return redirect()->back()->with("error","Katalaluan Baru Tidak Boleh Sama Dengan Katalaluan Lama.");
}
$validatedData = $request->validate([
'current-password' => 'required',
'new-password' => 'required|string|min:8|confirmed',
]);
//Change Password
$user = Auth::user();
$user->password = bcrypt($request->get('new-password'));
$user->save();
return redirect()->back()->with("success","Katalaluan Berjaya Dikemaskini!");
}
}
+13 -4
View File
@@ -99,6 +99,7 @@ class LelongController extends Controller
->select('cawangan.caw_name', 'cawangan.caw_code', 'cawangan.id')
->where('lelong.id', $lelongid)
->get();
// dd($lelongbycaw);
foreach ($lelongbycaw as $index => $data) {
$lelongbycaw[$index]['lelong'] = $lelong->toArray();
@@ -107,13 +108,21 @@ class LelongController extends Controller
->where('lelongbid.caw_id', $data['id'])
->where('status_jual', 1)
->where('lelongbidder.status_bidder', 1)
->where('lelongbidder.status_payment', 1)
// ->where('lelongbidder.status_payment', 1)
->get();
// dd($lelongbid);
foreach ($lelongbid as $index2 => $value) {
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $value['id'])
->get();
foreach ($lelongbid as $index2 => $value)
{
$lelongbidmarhun = LelongBidMarhun::where('lelongbid_id', $value['id'])->get();
$lelongbid[$index2]['lelongbidmarhun'] = $lelongbidmarhun->toArray();
$insertbatchlel = Http::withOptions(['verify' => config('app.api_verify')])
->post(config('app.api_url').'taglel/update',[
'kodcaw'=>$cawsimulasi['cawangan']->caw_code,
'norujukan'=>$data->norujukan
])
->json();
}
$lelongbycaw[$index]['lelongbid'] = $lelongbid->toArray();
}
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Illuminate\Support\Facades\Auth;
use App\Models\Lelong;
use App\Models\CawanganLelong;
use App\Models\Pengesahan;
use Carbon\Carbon;
use App\Models\Cawangan;
use App\Models\LelongBid;
use Hash;
// use Auth;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function logout(Request $request) {
Auth::logout();
return redirect('/login');
}
}
+6 -4
View File
@@ -24,6 +24,7 @@ use App\Models\GadaiMarhun;
use App\Models\ScanSemak;
use App\Models\TangguhLelong;
use Carbon\Carbon;
use App\Models\ScanMarhun;
class MarhunController extends Controller
{
@@ -129,10 +130,11 @@ class MarhunController extends Controller
->where('status_ubah', 6)
->first();
$statusSemakMarhun = ScanMarhun::where('lelongbid_id', $bid['id'])
$statusSemakMarhun = ScanSemak::where('lelongbid_id', $bid['id'])
->whereNotNull('masa_terima')
->whereNull('masa_serah')
->first();
dd($statusSemakMarhun);
if ($statusSemakMarhun) {
$lelongbid[$index1]['statusterimamarhun'] = 1;
}
@@ -839,14 +841,14 @@ class MarhunController extends Controller
$gadai = GadaiMarhun::on($datagadai[0]['kodcaw'])->whereIn('norujukan', $arraygadai)
->get()->toArray();
foreach($gadai as $index1=>$gadai2)
foreach($gadai as $index2=>$gadai2)
{
$listgadai = GadaiMarhun::on($datagadai[0]['kodcaw'])->whereIn('norujukan', $arraygadai)
->get();
$gadai[$index2]['listgadai'] = $listgadai;
}
$gadai[$index1]['listgadai'] = $listgadai;
// $gadai[$index2]['listgadai'] = $listgadai;
// dd($gadai);
$arraylelbidmarhun = [];
$bakilelong = 0;
+47 -19
View File
@@ -215,31 +215,59 @@ class PembidaController extends Controller
public function senlelbelumbayarbidaan(Request $request)
{
//$kodcaw = $request->kodcaw;
// //$kodcaw = $request->kodcaw;
//$arrayinfo = [];
// //$arrayinfo = [];
$lelong = LelongBid::join('cawangan_lelong','lelongbid.lelong_id','=','cawangan_lelong.lelong_id')
->join('lelongbidder','lelongbid.id','=','lelongbidder.lelongbid_id')
->join('lelong','lelong.id','=','lelongbid.lelong_id')
->join('cawangan','cawangan.id','=','lelongbid.caw_id')
->select('lelongbid.lelong_id','lelongbid.caw_id','lelongbid.kodcaw','lelongbid.t_lelong','lelong.sts_lelong','cawangan.caw_name')
->distinct()
->orderBy('lelongbid.lelong_id')
->where('lelongbid.status_jual', 1)
->where('lelong.sts_lelong', 3)
->where(function($query){
$query->whereNull('lelongbidder.status_payment')
->orWhere('lelongbidder.status_payment',2)
->where('lelongbidder.status_bidder', 1);
})
->get();
//->toArray();
// $lelong = LelongBid::join('cawangan_lelong','lelongbid.lelong_id','=','cawangan_lelong.lelong_id')
// ->join('lelongbidder','lelongbid.id','=','lelongbidder.lelongbid_id')
// ->join('lelong','lelong.id','=','lelongbid.lelong_id')
// ->join('cawangan','cawangan.id','=','lelongbid.caw_id')
// ->select('lelongbid.lelong_id','lelongbid.caw_id','lelongbid.kodcaw','lelongbid.t_lelong','lelong.sts_lelong','cawangan.caw_name')
// ->distinct()
// ->orderBy('lelongbid.lelong_id')
// ->where('lelongbid.status_jual', 1)
// ->where('lelong.sts_lelong', 3)
// ->where(function($query){
// $query->whereNull('lelongbidder.status_payment')
// ->orWhere('lelongbidder.status_payment',2)
// ->where('lelongbidder.status_bidder', 1);
// })
// ->get();
// //->toArray();
// dd($lelong);
$kodcaw = $request->kodcaw;
return view('pembida.senlelbelumbayarbidaan', compact('lelong'));
$arrayinfo = [];
$lelong = Lelong::join('cawangan_lelong','lelong.id','=','cawangan_lelong.lelong_id')
->select('lelong_id','tarikh_lelong','lelong.fasa','harga_emas_asas','jbg','cajlelong','sts_lelong')
->distinct()
->orderBy('lelong_id')
->where('lelong.sts_lelong', 3)
->get()
->toArray();
foreach($lelong as $details)
{
$detailsinfo = CawanganLelong::join('cawangan','cawangan_lelong.caw_id','=','cawangan.id')
->select('cawangan_lelong.lelong_id','cawangan_lelong.caw_id','caw_name','caw_code','cawangan_lelong.export_data_sts')
->where('lelong_id',$details['lelong_id'])
->distinct()
->orderBy('lelong_id')
->get()
->toArray();
// dd($detailsinfo);
array_push($arrayinfo,['detail'=>$details, 'detailsinfo'=>$detailsinfo]);
}
return view('pembida.senlelbelumbayarbidaan', compact('lelong','arrayinfo'));
}
public function pembayaranbidaan(Request $request)
+146
View File
@@ -0,0 +1,146 @@
<?php
namespace App\Http\Controllers;
use App\Mail\ResetPassword;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Str;
class UserController extends Controller
{
/**
* Register user
* @param request
* @return response
*/
public function register(Request $request)
{
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'password' => 'required|min:6'
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password)
]);
}
/**
* Login page
* @param NA
* @return view
*/
public function login()
{
return view('auth.login');
}
/**
* User Login
* @param request
* @return response
*/
public function loginValidate(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6'
]);
$user = User::where('email', $request->email)->first();
if ($user) {
if (Hash::check($request->password, $user->password)) {
return back()->with('success', 'Success! You are logged in');
}
return back()->with('failed', 'Failed! Invalid password');
}
return back()->with('failed', 'Failed! Invalid email');
}
/**
* Forgot password
* @param NA
* @return view
*/
public function forgotPassword()
{
return view('auth.forgot-password');
}
/**
* Validate token for forgot password
* @param token
* @return view
*/
public function forgotPasswordValidate($token)
{
$user = User::where('token', $token)->where('is_verified', 0)->first();
// dd($user);
if ($user) {
$email = $user->email;
return view('auth.change-password', compact('email'));
}
return redirect()->route('forgot-password')->with('failed', 'Password reset link is expired');
}
/**
* Reset password
* @param request
* @return response
*/
public function resetPassword(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
]);
$user = User::where('email', $request->email)->first();
// dd($user);
if (!$user) {
return back()->with('failed', 'Gagal! Alamat Ini Belum Didaftarkan.');
}
$token = Str::random(60);
$user['token'] = $token;
$user['is_verified'] = 0;
$user->save();
Mail::to($request->email)->send(new ResetPassword($user->name, $token));
if(Mail::failures() != 0) {
return back()->with('success', 'Berjaya DiHantar! Pautan Lupa Katalaluan Telah Dihantarkan Kepada Alamat Emel Anda.');
}
return back()->with('failed', 'Failed! there is some issue with email provider');
}
/**
* Change password
* @param request
* @return response
*/
public function updatePassword(Request $request) {
$this->validate($request, [
'email' => 'required',
'password' => 'required|min:6',
'confirm_password' => 'required|same:password'
]);
$user = User::where('email', $request->email)->first();
if ($user) {
$user['is_verified'] = 0;
$user['token'] = '';
$user['password'] = Hash::make($request->password);
$user->save();
return redirect()->route('login')->with('success', 'Berjaya! Katalaluan Anda Telah Didaftarkan.');
}
return redirect()->route('forgot-password')->with('failed', 'Gadal! Sila Cuba Lagi...');
}
}
+44
View File
@@ -0,0 +1,44 @@
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ResetPassword extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public $name;
public $token;
public function __construct($name, $token)
{
$this->name = $name;
$this->token = $token;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// return $this->view('view.name');
$user['name'] = $this->name;
$user['token'] = $this->token;
return $this->from("zatizul@gmail.com", "TESTING")
->subject('Password Reset Link')
->view('template.reset-password', ['user' => $user]);
}
}
+2
View File
@@ -24,6 +24,8 @@ class User extends Authenticatable
'username',
'email',
'password',
'token',
'is_verified',
'kodcaw',
'nokp',
'bank_acc_pembeli',
@@ -29,7 +29,9 @@ class CreateUsersTable extends Migration
$table->datetime('t_daftar')->nullable();
$table->integer('online')->nullable(); //set
$table->integer('register_agree')->nullable();
$table->string('email')->nullable();
$table->string('email')->unique();
$table->string('token')->nullable();
$table->tinyInteger('is_verified')->default(0);
$table->datetime('email_verified_at')->nullable();
$table->string('password');
$table->datetime('disahkan_pada')->nullable();
+1 -1
View File
@@ -74,7 +74,7 @@ body {
line-height: 1.8;
color: #efefef;
text-align: left;
background-color: #111; }
background-color: rgb(176, 166, 166); }
[tabindex="-1"]:focus {
outline: 0 !important; }
+4 -4
View File
@@ -5,7 +5,7 @@
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-header">{{ __('Kemaskini Profil') }}</div>
<div class="card-body">
@if (session('status'))
@@ -14,8 +14,8 @@
</div>
@endif
About page->role->
@hasrole('admin')
Kemaskini Maklumat Profil
{{-- @hasrole('admin')
I am a admin!
@endhasrole
@hasrole('khazanah')
@@ -41,7 +41,7 @@
@endhasrole
@hasrole('pengurus-cawangan-khas')
I am a pengurus-cawangan-khas!
@endhasrole
@endhasrole --}}
</div>
</div>
</div>
@@ -0,0 +1,88 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AOS</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/neon.css') }}">
<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}
</style>
<style>
body {
font-family: 'Nunito', sans-serif;
}
</style>
</head>
<body>
<div class="container py-5">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12 m-auto">
<form action="{{ route('reset-password') }}" method="post" autocomplete="off">
@csrf
@method('PUT')
<div class="card shadow">
@if (Session::has("success"))
<div class="alert alert-success alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('success') }}
</div>
@elseif (Session::has("failed"))
<div class="alert alert-danger alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('failed') }}
</div>
@endif
<div class="card-header">
<h4 class="card-title"> Tukar Katalaluan </h4>
</div>
<div class="card-body px-4">
<input type="hidden" name="email" value="{{ $email }} "/>
<div class="form-group py-2">
<label> Katalaluan Baru </label>
<input type="password" name="password" class="form-control {{$errors->first('password') ? 'is-invalid' : ''}}" value="{{ old('password') }}" placeholder="Katalaluan Baru">
{!! $errors->first('password', '<div class="invalid-feedback">:message</div>') !!}
</div>
<div class="form-group py-2">
<label> Ulang Katalaluan Baru </label>
<input type="password" name="confirm_password" class="form-control {{$errors->first('confirm_password') ? 'is-invalid' : ''}}" value="{{ old('confirm_password') }}" placeholder="Ulang Katalaluan Baru">
{!! $errors->first('confirm_password', '<div class="invalid-feedback">:message</div>') !!}
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary"> Tukar Katalaluan</button>
</div>
</div>
</form>
</div>
</div>
</div>
<footer class="text-light" style="">
<div class="py-3">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<p class="mb-0">© Sistem Lelong. All rights reserved</p>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,81 @@
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AOS</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<!-- Styles -->
<link rel="stylesheet" href="{{ asset('css/neon.css') }}">
<style>
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}
</style>
<style>
body {
font-family: 'Nunito', sans-serif;
}
</style>
</head>
<body>
<div class="container py-5">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12 m-auto">
<form action="{{ route('forgot-password') }}" method="post" autocomplete="off">
@csrf
<div class="card shadow">
@if (Session::has("success"))
<div class="alert alert-success alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('success') }}
</div>
@elseif (Session::has("failed"))
<div class="alert alert-danger alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('failed') }}
</div>
@endif
<div class="card-header">
<h4 class="card-title">Lupa Katalaluan </h4>
</div>
<div class="card-body px-4">
<div class="form-group py-2">
<label> Alamat Emel </label>
<input type="email" name="email" class="form-control {{$errors->first('email') ? 'is-invalid' : ''}}" value="{{ old('email') }}" placeholder="contoh@gmail.com">
{!! $errors->first('email', '<div class="invalid-feedback">:message</div>') !!}
</div>
{{-- <div class="form-group text-end"> --}}
<a href="{{ route('login') }}" class="nav-link"> Kembali Ke Log Masuk</a>
{{-- </div> --}}
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary"> Lupa Katalaluan </button>
</div>
</div>
</form>
</div>
</div>
</div>
<footer class="text-light" style="">
<div class="py-3">
<div class="container">
<div class="row">
<div class="col-md-12 text-center">
<p class="mb-0">© Sistem Lelong. All rights reserved</p>
</div>
</div>
</div>
</div>
</footer>
</body>
</html>
+16
View File
@@ -41,6 +41,17 @@
<strong>{{ $message }}</strong>
</span>
@enderror --}}
@if (Session::has("success"))
<div class="alert alert-success alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('success') }}
</div>
@elseif (Session::has("failed"))
<div class="alert alert-danger alert-dismissible fade show">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
{{ Session::get('failed') }}
</div>
@endif
@error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
@@ -60,12 +71,17 @@
<a href="#" class="link-terma text-light"> Sila Baca Terma Dan Syarat&nbsp;Terlebih Dahulu Klik Disini</a>
</small>
</div>
<div class="text-center">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
<div class="form-group text-end">
<a href="{{ route('forgot-password') }}" class="nav-link"> Lupa Katalaluan?</a>
</div>
{{-- <a class="btn navbar-btn text-white mx-2 btn-primary" href="../../lelong-sketch/admin/dashboardadmin.html">Log Masuk</a> --}}
</div>
</form>
</div>
</div>
+10 -1
View File
@@ -24,7 +24,16 @@
<div class="dropdown-menu dropdown-menu-right mr-2">
<div class="dropdown">
<div class="dropdown-item">
<a class="far fa fa-user" href="editprofile">Profile</a>
{{-- <a class="far fa fa-user" href="editprofile">Profile</a> --}}
<a class="dropdown-item" href="{{ route('editprofile') }}">
<i class="far fa fa-user"></i>{{ __('Profile') }}
</a>
</div>
<div class="dropdown-item">
{{-- <a class="far fa fa-key" href="tukarkatalaluan">Tukar Katalaluan</a> --}}
<a class="dropdown-item" href="{{ route('changePasswordGet') }}">
<i class="far fa fa-key"></i>{{ __('Tukar Katalaluan') }}
</a>
</div>
</div>
@@ -10,6 +10,7 @@
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-striped table-xl text-center" id="senarailelongonline" style="width:100%">
<thead class="bg-primary text-white">
<tr>
@@ -17,34 +18,49 @@
<th>ID Lelong</th>
<th>Tarikh Lelong</th>
<th>Cawangan</th>
<th>Status Export</th>
<th>Harga Emas Semasa</th>
<th>Tempoh</th>
<th>Caj Lelong</th>
<th>Status Lelong</th>
<!-- <th>Status Pembayaran</th> -->
</tr>
</thead>
<tbody>
@foreach($lelong as $index=> $lel)
@foreach($arrayinfo as $lel)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $lel['lelong_id']}}</td>
<td>{{ $lel['detail']['lelong_id']}}</td>
<td>@php
$myDateTime = DateTime::createFromFormat('Y-m-d', $lel['t_lelong'] );
$myDateTime = DateTime::createFromFormat('Y-m-d', $lel['detail']['tarikh_lelong'] );
$t_lelong = $myDateTime->format('d-m-Y');
echo($t_lelong);
@endphp</td>
<td class="text-left">
<a href=" {{ route('pembida.belumbayarbidaan', ['lelong_id'=>$lel['lelong_id'], 'kodcaw'=>$lel['kodcaw']]) }} " data-toggle="tooltip" data-placement="top" title="Butiran Bidaan"><i class="far fa-edit"></i></a>
<span class="m-2">{{ $lel['caw_name']}}
@foreach($lel['detailsinfo'] as $details)
<a href=" {{ route('pembida.belumbayarbidaan', ['lelong_id'=>$lel['detail']['lelong_id'], 'kodcaw'=>$lel['detail']['kodcaw']]) }} " data-toggle="tooltip" data-placement="top" title="Butiran Bidaan"><i class="far fa-edit"></i></a>
<span class="m-2">{{ $details['caw_name']}}
</span><br>
@endforeach
</td>
<td class="text-left">
@foreach($lel['detailsinfo'] as $details)
<span class="m-2"> @if($details['export_data_sts'] == '1')
<i class="far fa-flag"></i> Selesai Export
@endif
</span><br>
@endforeach
</td>
<td>{{ $lel['detail']['harga_emas_asas'] }}</td>
<td>{{ $lel['detail']['jbg'] }}</td>
<td>{{ $lel['detail']['cajlelong'] }}</td>
<td>
@if($lel['sts_lelong'] == 3)
@if($lel['detail']['sts_lelong'] == 3)
<button class="btn btn-success btn-sm" disabled>LELONG SELESAI</button>
@endif
</td>
</tr>
@endforeach
</tbody>
@@ -49,6 +49,7 @@
</tr>
</thead>
<tbody>
{{-- {{dd($arraylelbidmarhun)}} --}}
@foreach($arraylelbidmarhun as $index1=>$detail)
<tr>
<td>{{ $loop->iteration }}</td>
@@ -73,7 +74,7 @@
{{-- <td>
{{ number_format($detail[0]['harga_gadai'], 2, '.', ',') }}
</td> --}}
<td>{{ number_format ($gadai[0]['harga'], 2, '.', ',') }}</td>
<td>{{ number_format ($gadai[$index1]['harga'], 2, '.', ',') }}</td>
<td>
@if($detail[0]['old_harga'] != $detail[0]['harga'])
{{ number_format($detail[0]['old_harga'], 2, '.', ',') }} <i class="btn fa fa-arrow-right" aria-hidden="true"></i>
@@ -81,7 +82,8 @@
{{ number_format($detail[0]['harga'], 2, '.', ',') }}
</td>
<td>
{{ number_format($detail[0]['nmarhun_gadai'], 2, '.', ',') }}
{{-- {{ number_format($detail[0]['nmarhun_gadai'], 2, '.', ',') }} --}}
{{ number_format($gadai[$index1]['n_marhun'], 2, '.', ',') }}
</td>
<td>
@if($detail[0]['old_nmarhun'] != $detail[0]['n_marhun'])
+60
View File
@@ -0,0 +1,60 @@
@extends('layouts.app')
@section('content')
<div class="container">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>
{{$error}}
</li>
@endforeach
</ul>
</div>
@endif
@if(session()->get('message'))
<div class="alert alert-success" role="alert">
<strong>Success: </strong>{{session()->get('message')}}
</div>
@endif
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{Auth::user()->name}}'s Profil</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
@if($message = Session::get('success'))
<div class="alert alert-success">
<p>{{$message}}</p>
</div>
@endif
<form action="{{route('home')}}" method="POST">
@csrf
<div class="form-group">
<label for="name"><strong>Nama Penuh Pengguna:</strong></label>
<input type="text" class="form-control" id ="name" name="name" value="{{Auth::user()->name}}">
</div>
<div class="form-group">
<label for="name"><strong>Nama Pengguna:</strong></label>
<input type="text" class="form-control" id ="username" name="username" value="{{Auth::user()->username}}">
</div>
<div class="form-group">
<label for="email"><strong>Email:</strong></label>
<input type="text" class="form-control" id ="email" value="{{Auth::user()->email}}" name="email">
</div>
<button class="btn btn-success" type="submit">Ubah Profil</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="x-apple-disable-message-reformatting">
<title></title>
<style>
table,
td,
div,
h1,
p {
font-weight: 500;
font-family: Arial, sans-serif;
}
.btn {margin: 10px 0px;
border-radius: 4px;
text-decoration: none;
color: #fff !important;
height: 46px;
padding: 10px 20px;
font-size: 16px;
font-weight: 600;
background-image: linear-gradient(to right top, #021d68, #052579, #072d8b, #09369d, #093fb0) !important;
}
.btn:hover {
text-decoration: none;
opacity: .8;
}
</style>
</head>
<body style="margin:0;padding:0;">
<table role="presentation"
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
<tr>
<td align="center" style="padding:0;">
<table role="presentation"
style="width:600px;border-collapse:collapse;border:1px solid #cccccc;border-spacing:0;text-align:left;">
<tr style="border-collapse:collapse;border:1px solid #cccccc;border-spacing:0;">
<td align="left" style="padding:10px 25px;background:#fff; display: flex; align-items: center;">
<span style="font-weight: bold; padding-top: 10px;"> Sistem Lelong Online </span>
</td>
</tr>
<tr>
<td style="padding:36px 30px 42px 30px;">
<table role="presentation"
style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
<tr>
<td style="padding:0 0 36px 0;color:#153643;">
<p style="font-weight:bold;margin:0 0 20px 0;font-family:Arial,sans-serif;">
Hello {{ $user ? $user['name'] : '' }},</h1>
<p
style="margin:0 0 12px 0;font-size:14px;line-height:24px;font-family:Arial,sans-serif;">
Kami telah menerima permintaan untuk menetapkan semula kata laluan.
</p>
<p
style="margin:10px 0 12px 0;font-size:14px;line-height:24px;font-family:Arial,sans-serif;">
Anda boleh menetapkan semula kata laluan anda dengan mengklik butang di bawah:
</p>
<p style="text-align: center;">
<a href="{{'http://lelong2.test/forgot-password/'.$user['token']}}" class="btn">Tukar Katalaluan Anda</a>
</p>
<p style="margin:100px 0 12px 0;font-size:14px;font-family:Arial,sans-serif;">
Terima Kasih, </p>
<p style="margin:0 0 12px 0;font-size:14px;font-family:Arial,sans-serif;">
Sistem Lelong Online </p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
+82
View File
@@ -0,0 +1,82 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-10 offset-2">
<div class="panel panel-default">
<div class="col-md-8">
<div class="card">
<div class="card-header"><h4>Tukar Katalaluan</h4></div>
<div class="card-body">
@if (session('error'))
<div class="alert alert-danger">
{{ session('error') }}
</div>
@endif
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@if($errors)
@foreach ($errors->all() as $error)
<div class="alert alert-danger">{{ $error }}</div>
@endforeach
@endif
<form class="form-horizontal" method="POST" action="{{ route('changePasswordPost') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('current-password') ? ' has-error' : '' }}">
<label for="new-password" class="col-md-4 control-label">Katalaluan Lama</label>
<div class="col-md-6">
<input id="current-password" type="password" class="form-control" name="current-password" required>
@if ($errors->has('current-password'))
<span class="help-block">
<strong>{{ $errors->first('current-password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('new-password') ? ' has-error' : '' }}">
<label for="new-password" class="col-md-4 control-label">Katalaluan Baru</label>
<div class="col-md-6">
<input id="new-password" type="password" class="form-control" name="new-password" required>
@if ($errors->has('new-password'))
<span class="help-block">
<strong>{{ $errors->first('new-password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<label for="new-password-confirm" class="col-md-4 control-label">Ulang Katalaluan Baru</label>
<div class="col-md-6">
<input id="new-password-confirm" type="password" class="form-control" name="new-password_confirmation" required>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-success">
Tukar Katalaluan
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
+3
View File
@@ -64,6 +64,9 @@
<button type="submit" class="btn btn-primary">
{{ __('Log Masuk') }}
</button>
<div class="form-group text-end">
<a href="{{ route('forgot-password') }}" class="nav-link"> Lupa Katalaluan?</a>
</div>
{{-- <a class="btn navbar-btn text-white mx-2 btn-primary" href="../../lelong-sketch/admin/dashboardadmin.html">Log Masuk</a> --}}
</div>
</form>
+13
View File
@@ -26,7 +26,20 @@ Route::get('/test', function () {
Auth::routes();
Route::get('/home','HomeController@index')->name('home');
// Route::get('/loginUser','HomeController@index')->name('login');
Route::get('/about','HomeController@about')->name('about');
Route::get('/editprofile','HomeController@editprofile')->name('editprofile');
Route::post('/editprofile','HomeController@profileUpdate')->name('profileupdate');
Route::get('/tukarkatalaluan','HomeController@tukarkatalaluan')->name('tukarkatalaluan');
Route::get('/changePassword', 'HomeController@showChangePasswordGet')->name('changePasswordGet');
Route::post('/changePassword', 'HomeController@changePasswordPost')->name('changePasswordPost');
Route::get('/logout','LogoutController@logout')->name("logout");
Route::get('forgot-password', 'UserController@forgotPassword')->name('forgot-password');
Route::get('forgot-password/{token}', 'UserController@forgotPasswordValidate');
Route::post('forgot-password', 'UserController@resetPassword')->name('forgot-password');
Route::put('reset-password', 'UserController@updatePassword')->name('reset-password');
Route::get('/pembayaran/response','ApiController@response')->name('pay.paymentStatus');
Route::get('/pembayaran/backend','ApiController@callback')->name('pay.callback');