TKK_E32232338/functions/auth.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];
}
}