main
Ilham Wara Nugroho 2025-10-15 13:59:37 +07:00
parent 4f8ace8130
commit bf16e26032
4 changed files with 121 additions and 23 deletions

View File

@ -11,25 +11,105 @@ use App\Models\Master\Sekolah;
use App\Models\Penilaian; use App\Models\Penilaian;
use App\Models\Kuesioner; use App\Models\Kuesioner;
use App\Models\User; use App\Models\User;
use Hash;
class AjaxController extends Controller class AjaxController extends Controller
{ {
function authApi() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://10.50.50.74/api/login',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"email" : "ilhamwara@gmail.com",
"password": "@Dinaslhdki123"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
function sendEmail($to,$subject,$name,$kode,$token) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://10.50.50.74/api/email/send',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"ApiKey" : "sk-25e88e0dfa73013ff5529d6c5e00462b",
"To" : "'.$to.'",
"Subject" : "'.$subject.'",
"Html": "<!DOCTYPE html><html lang=\'id\'><head><meta charset=\'UTF-8\' /><meta name=\'viewport\' content=\'width=device-width, initial-scale=1.0\' /><title>SIDIA Jakarta</title><style>body{background-color:#f6f7fb;margin:0;padding:0;font-family:Arial,sans-serif;color:#333}.container{max-width:600px;margin:40px auto;background-color:#fff;border:1px solid #e5e5e5;border-radius:8px;overflow:hidden}.header{text-align:center;padding:30px 20px 10px 20px;border-bottom:1px solid #eee}.header img{width:90px;height:auto}.app-name{font-weight:bold;font-size:20px;margin-top:8px;color:#222}.body{padding:30px 40px}.body p{line-height:1.6;font-size:15px;margin:0 0 15px 0}.code-box{background-color:#f3f3f3;text-align:center;font-size:32px;font-weight:bold;padding:15px 0;border-radius:5px;letter-spacing:2px;margin:20px 0}.footer{font-size:13px;color:#888;text-align:center;padding:15px 20px 25px 20px;background-color:#fafafa;border-top:1px solid #eee}a{color:#0078d7;text-decoration:none}</style></head><body><div class=\'container\'><div class=\'header\'><img src=\'https://adiwiyata.dinaslhdki.id/assets/logo-dinas.ico\' alt=\'SIDIA Jakarta Logo\'/><div class=\'app-name\'>SIDIA Jakarta</div></div><div class=\'body\'><p>Hai <b>'.@$name.'</b>,</p><p>Gunakan kode di bawah ini untuk mereset kata sandi akun Anda.</p><div class=\'code-box\'>'.$kode.'</div><p>Kode ini akan kedaluwarsa dalam <b>15 menit</b>.</p><p>Tidak meminta reset kata sandi ini? Abaikan email ini atau <a href=\''.url('/#helpdesk').'\'>hubungi kami</a>.</p></div><div class=\'footer\'>&copy; '.date('Y').' SIDIA Jakarta. Semua hak dilindungi.</div></div></body></html>"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: '.$token
),
));
$response = curl_exec($curl);
curl_close($curl);
}
function sendCode(Request $request) { function sendCode(Request $request) {
// $request->validate(['email' => 'required|email']); // $request->validate(['email' => 'required|email']);
if($request->email){ if(@$request->email){
$user = User::where('email', $request->email)->first();
if(@$user){
$user->code_change_password = \Str::random(5);
$user->save();
return response()->json(['status' => true,'code' => true]);
}else{
return response()->json(['status' => false,'message' => 'Email Tidak Valid']);
}
}
if(@$request->password){
$user = User::where('email', $request->email)->where('code_change_password', $request->kode)->first();
$user->password = Hash::make($request->password);
$user->save();
return response()->json(['status' => true,'code' => false,'password' => false,'redirect' => true]);
}elseif(@$request->kode){
$user = User::where('code_change_password', $request->kode)->first();
if(@$user){
return response()->json(['status' => true,'code' => false,'password' => true]);
}else{
return response()->json(['status' => false,'message' => 'Kode Tidak Valid']);
}
}else{
$user = User::where('email', $request->email)->first();
// dd();
if(@$user){
$response = json_decode($this->authApi());
// dd();
$user->code_change_password = \Str::random(5);
$user->save();
//send email
$this->sendEmail($user->email,'Lupa Password',$user->name,$user->code_change_password,$response->data->token);
return response()->json(['status' => true,'code' => true,'password' => false]);
}else{
return response()->json(['status' => false,'message' => 'Email Tidak Valid']);
}
}
}
} }
function checkEmail(Request $request){ function checkEmail(Request $request){
$request->validate(['email' => 'required|email']); $request->validate(['email' => 'required|email']);

View File

@ -52,9 +52,10 @@
<div class="form-group divEmail"> <div class="form-group divEmail">
<label class="form-label">Email</label> <label class="form-label">Email</label>
<div class="input-group"> <div class="input-group">
<input type="text" required name="email" class="form-control" placeholder="Masukan Email Anda" id="email"> <input type="text" required name="email" class="form-control" placeholder="Masukan Email Anda" id="email">
<div class="input-group-append"> <div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button" id="togglePassword"><i class="fal fa-envelope"></i></button> <button class="btn btn-default waves-effect waves-themed" type="button" id="togglePassword"><i class="fal fa-envelope"></i></button>
</div>
</div> </div>
</div> </div>
<div class="form-group divKode mb-2 d-none"> <div class="form-group divKode mb-2 d-none">
@ -64,17 +65,19 @@
</div> </div>
<div class="form-group divKode d-none"> <div class="form-group divKode d-none">
<label class="form-label">Kode</label> <label class="form-label">Kode</label>
<input type="text" required name="kode" class="form-control" placeholder="Masukan Kode Anda" id="kode"> <input type="text" required name="kode" disabled class="form-control" placeholder="Masukan Kode Anda" id="kode">
</div> </div>
<div class="form-group divPassword d-none"> <div class="form-group divPassword d-none">
<label class="form-label">Kata Sandi</label> <label class="form-label">Kata Sandi Baru</label>
<div class="input-group"> <div class="input-group">
<input type="password" required id="password" name="password" class="form-control" placeholder="Masukan Kata Sandi"> <input type="password" required id="password" disabled name="password" class="form-control" placeholder="Masukan Kata Sandi">
<div class="input-group-append"> <div class="input-group-append">
<button class="btn btn-default waves-effect waves-themed" type="button" id="togglePassword"><i class="fal fa-eye"></i></button> <button class="btn btn-default waves-effect waves-themed" type="button" id="togglePassword"><i class="fal fa-eye"></i></button>
</div> </div>
</div> </div>
<div id="emailFeedback" class="mt-2 text-sm"></div> <div class="help-block">
Kata Sandi harus mengandung Minimal 8 karakter, maksimal 15 karakter, <br>setidaknya 1 huruf kecil dan huruf besar, angka dan simbol
</div>
</div> </div>
<div class="row no-gutters"> <div class="row no-gutters">
<div class="col-lg-12 pr-lg-1 my-2"> <div class="col-lg-12 pr-lg-1 my-2">
@ -153,25 +156,40 @@
$('.btnProses').on('click',function(){ $('.btnProses').on('click',function(){
let base_url = "{{ url('/') }}"; let base_url = "{{ url('/') }}";
let email = $('#email').val(); let email = $('#email').val();
let kode = $('#kode').val();
let password = $('#password').val();
$.ajax({ $.ajax({
url: base_url+'/sendCode', url: base_url+'/sendCode',
method: 'POST', method: 'POST',
data: { data: {
email: email, email: email,
kode: kode,
password:password,
_token: $('meta[name="csrf-token"]').attr('content') _token: $('meta[name="csrf-token"]').attr('content')
}, },
success: function(response) { success: function(response) {
if (response.status == true) { if (response.status == true) {
if(response.code == true){ if(response.code == true){
$('.divKode').removeClass('d-none'); $('.divKode').removeClass('d-none');
$('#kode').removeAttr('disabled');
$('.divEmail').addClass('d-none'); $('.divEmail').addClass('d-none');
} }
if(response.password == true){ if(response.password == true){
$('.divPassword').removeClass('d-none'); $('.divPassword').removeClass('d-none');
$('#kode').removeAttr('disabled');
$('#password').removeAttr('disabled');
$('.divKode').addClass('d-none'); $('.divKode').addClass('d-none');
$('.divEmail').addClass('d-none'); $('.divEmail').addClass('d-none');
} }
if(response.redirect == true){
toastr.success('Berhasil Update Password Baru', 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
setTimeout(function() {
window.location.href = base_url+"/login";
}, 3000);
}
// toastr.success("Berhasil Request Ubah Kata Sandi", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'}); // toastr.success("Berhasil Request Ubah Kata Sandi", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
} else { } else {

View File

@ -160,7 +160,7 @@
<div class="container mx-auto p-12 md:py-12"> <div class="container mx-auto p-12 md:py-12">
<div class="flex flex-col md:flex-row items-center justify-between"> <div class="flex flex-col md:flex-row items-center justify-between">
<div class="flex flex-col gap-1"> <div class="flex flex-col gap-1">
<h4 class="md:text-left text-center text-white">Ada Kendala Terkait Sekolah Adiwiyata ?</h4> <h4 class="md:text-left text-center text-white">Ada Kendala Terkait Sekolah Adiwiyata Jakarta ?</h4>
<h4 class="md:text-left text-center text-3xl md:text-4xl font-extrabold text-white">Hubungi Helpdesk Kami</h4> <h4 class="md:text-left text-center text-3xl md:text-4xl font-extrabold text-white">Hubungi Helpdesk Kami</h4>
</div> </div>
<div class="flex flex-col mt-5 md:mt-0 md:flex-row gap-2"> <div class="flex flex-col mt-5 md:mt-0 md:flex-row gap-2">

View File

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>@yield('title',@$title) | Sekolah Adiwiyata DKI Jakarta</title> <title>@yield('title',@$title) | SIDIA Jakarta</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="keywords" content="Sekolah Adiwiyata" /> <meta name="keywords" content="Sekolah Adiwiyata" />
@ -100,12 +100,12 @@
</a> </a>
</div> </div>
<div> <div>
<h5 class="text-white font-bold mb-0">Sistem Informasi Sekolah Adiwiyata</h5> <h5 class="text-white font-bold mb-0">Sistem Informasi Sekolah Adiwiyata Jakarta</h5>
<span class="text-white text-xs">Dinas Lingkungan Hidup DKI Jakarta</span> <span class="text-white text-xs">Dinas Lingkungan Hidup DKI Jakarta</span>
</div> </div>
</div> </div>
<div> <div>
<span class="text-white text-xs">© 2025 </span> <span class="text-white text-xs">© {{ date('Y') }} </span>
</div> </div>
</div> </div>