-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfetch_users.php
More file actions
115 lines (100 loc) · 3.92 KB
/
fetch_users.php
File metadata and controls
115 lines (100 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
require 'vendor/autoload.php';
use Dotenv\Dotenv;
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');
$logFile = __DIR__ . '/fetch_users_log.txt';
$json = file_get_contents('php://input');
$userDetails = json_decode($json, true);
try {
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
} catch (Exception $e) {
error_log("Could not load .env file: " . $e->getMessage() . "\n", 3, $logFile);
echo json_encode(["status" => "error", "message" => "Could not load .env file"]);
exit;
}
if (!$_ENV['DB_HOST'] || !$_ENV['DB_NAME'] || !$_ENV['DB_PORT'] || !$_ENV['DB_USER'] || !$_ENV['DB_PASS']) {
error_log("Environment variables are missing or failed to load\n", 3, $logFile);
echo json_encode(["status" => "error", "message" => "Environment variables are missing or failed to load"]);
exit;
} else {
error_log("Successfully loaded .env file\n", 3, $logFile);
}
error_log(print_r($userDetails, true), 3, $logFile);
function run_sql($sql, $params = [])
{
global $logFile;
error_log("running_sql\n", 3, $logFile);
$host = $_ENV['DB_HOST'];
$port = $_ENV['DB_PORT'];
$dbname = $_ENV['DB_NAME'];
$user = $_ENV['DB_USER'];
$pass = $_ENV['DB_PASS'];
$dsn = "mysql:host=$host;port=$port;dbname=$dbname";
try {
$dbh = new PDO($dsn, $user, $pass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
error_log("Connection successful\n", 3, $logFile);
} catch (PDOException $e) {
error_log("Connection failed: " . $e->getMessage() . "\n", 3, $logFile);
exit;
}
try {
$stmt = $dbh->prepare($sql);
$success = $stmt->execute($params);
if ($success) {
error_log("Query executed successfully\n", 3, $logFile);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} else {
error_log("Query execution error\n", 3, $logFile);
http_response_code(400);
}
} catch (PDOException $e) {
error_log('Query failed: ' . $e->getMessage() . "\n", 3, $logFile);
http_response_code(500);
}
}
if (!isset($userDetails['Operation'])) {
http_response_code(400);
echo json_encode(["status" => "error", "message" => "Operation was not specified"]);
exit;
}
if ($userDetails['Operation'] == "Fetch") {
$sql = "SELECT email, name, institution, approved_user, admin_rights, approved_at FROM user_details;";
$users = run_sql($sql);
if ($users && count($users) > 0) {
error_log(print_r($users, true), 3, $logFile);
http_response_code(200);
echo json_encode(["status" => "success", "data" => $users]);
} else {
error_log("No users found\n", 3, $logFile);
http_response_code(404);
echo json_encode(["status" => "error", "message" => "No users found"]);
}
} elseif ($userDetails['Operation'] == "Update") {
$email = $userDetails['Email'];
$key = $userDetails['Key'];
$value = $userDetails['Value'];
if ($key == 'approved_user' && $value == 1) {
$sql = "UPDATE user_details SET $key = :value, approved_at = IFNULL(approved_at, NOW()) WHERE email = :email";
} else {
$sql = "UPDATE user_details SET $key = :value WHERE email = :email";
}
$params = [':value' => $value, ':email' => $email];
if (run_sql($sql, $params)) {
echo json_encode(["status" => "success", "message" => "User updated successfully"]);
} else {
echo json_encode(["status" => "error", "message" => "Failed to update user"]);
}
} elseif ($userDetails['Operation'] == "Delete") {
$email = $userDetails['Email'];
$sql = "DELETE FROM user_details WHERE email = :email";
$params = [':email' => $email];
if (run_sql($sql, $params)) {
echo json_encode(["status" => "success", "message" => "User deleted successfully"]);
} else {
echo json_encode(["status" => "error", "message" => "Failed to delete user"]);
}
}
?>