93 lines
3.3 KiB
PHP
93 lines
3.3 KiB
PHP
<?php
|
|
session_start();
|
|
|
|
/**
|
|
* PERBAIKAN PATH:
|
|
* Menggunakan __DIR__ agar path selalu absolut dan akurat
|
|
* dari folder 'functions' ke 'config'.
|
|
*/
|
|
$configPath = __DIR__ . '/../config/firebase.php';
|
|
|
|
if (file_exists($configPath)) {
|
|
require_once $configPath;
|
|
} else {
|
|
// Jika masih error, tampilkan pesan bantuan
|
|
echo "<div style='background:#ffeded; border:1px solid red; padding:10px; border-radius:5px; font-family:sans-serif;'>";
|
|
echo "<b>Error:</b> File firebase.php tidak ditemukan!<br>";
|
|
echo "Dicari di: <code style='color:blue'>$configPath</code>";
|
|
echo "</div>";
|
|
die();
|
|
}
|
|
|
|
function isLoggedIn() {
|
|
return isset($_SESSION['user_token']);
|
|
}
|
|
|
|
function registerUser($username, $email, $password) {
|
|
// PROTEKSI: Cek apakah cURL dimuat oleh web server
|
|
if (!function_exists('curl_init')) {
|
|
return [
|
|
'success' => false,
|
|
'error' => 'Modul cURL tidak aktif di browser. Buka XAMPP Control Panel, klik Stop pada Apache, lalu Start kembali. Pastikan php.ini yang diedit benar.'
|
|
];
|
|
}
|
|
|
|
$url = "https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=" . FIREBASE_API_KEY;
|
|
$data = json_encode(['email' => $email, 'password' => $password, 'returnSecureToken' => true]);
|
|
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
|
$response = curl_exec($ch);
|
|
$err = curl_error($ch);
|
|
curl_close($ch);
|
|
|
|
if ($err) return ['success' => false, 'error' => 'Gagal koneksi: ' . $err];
|
|
|
|
$result = json_decode($response, true);
|
|
|
|
if (isset($result['idToken'])) {
|
|
return ['success' => true];
|
|
} else {
|
|
$message = $result['error']['message'] ?? 'Gagal mendaftar';
|
|
if ($message == 'EMAIL_EXISTS') $message = 'Email sudah terdaftar.';
|
|
if ($message == 'WEAK_PASSWORD') $message = 'Password terlalu lemah.';
|
|
return ['success' => false, 'error' => $message];
|
|
}
|
|
}
|
|
|
|
function loginUser($email, $password) {
|
|
// PROTEKSI: Cek apakah cURL dimuat oleh web server
|
|
if (!function_exists('curl_init')) {
|
|
return [
|
|
'success' => false,
|
|
'error' => 'Fitur cURL tidak terbaca oleh Apache. Silakan RESTART Apache di XAMPP Control Panel.'
|
|
];
|
|
}
|
|
|
|
$url = "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=" . FIREBASE_API_KEY;
|
|
$data = json_encode(['email' => $email, 'password' => $password, 'returnSecureToken' => true]);
|
|
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
|
$response = curl_exec($ch);
|
|
$result = json_decode($response, true);
|
|
curl_close($ch);
|
|
|
|
if (isset($result['idToken'])) {
|
|
$_SESSION['user_token'] = $result['idToken'];
|
|
$_SESSION['email'] = $result['email'];
|
|
return ['success' => true];
|
|
} else {
|
|
$message = $result['error']['message'] ?? 'Login Gagal';
|
|
if ($message == 'INVALID_LOGIN_CREDENTIALS') $message = 'Email atau password salah.';
|
|
return ['success' => false, 'error' => $message];
|
|
}
|
|
} |