This repository has been archived on 2026-10-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
inside/api/cardnumber.php
T
nikolark 2615f7154d API-work for kassa.neuf.no
* Starts /api/register.php as primary endpoint for kassa
* Started work on simple card number updates in cardnumber.php
* Reworded sms/register.php
* Update README with markdown syntax
2015-07-13 23:55:37 +02:00

89 lines
3.0 KiB
PHP

<?php
require_once("api_functions.php");
require_once("../includes/DB.php");
header('Access-Control-Allow-Origin: *', true); // Come fetch!
/* Connect to database */
$conn = get_db_connection(DB_FETCHMODE_ORDERED);
if( !isset($_GET['apikey']) ) {
return_json_response(array('error' => "Missing param apikey."), 400);
}
/* Valid API KEY (defined in credentials.php) ? */
if( $_GET['apikey'] !== USER_API_KEY && $_GET['apikey'] !== USER_API_KEY_KASSA ) {
return_json_response(array('error' => "Invalid apikey: '".$_GET['apikey']."'."), 400);
}
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$body = file_get_contents('php://input');
$data = json_decode($body, true);
/* Validate params */
if( !isset($data['card_number']) ) {
return_json_response(array('error' => "Missing param card_number"), 400);
}
$card_number = $data['card_number'];
if( !is_numeric($card_number) ) {
return_json_response(array('error' => "Value card_number must be numeric: '".$card_number."'"), 400);
}
/* Validate user_id */
if( !isset($data['user_id']) ) {
return_json_response(array('error' => "Missing param user_id"), 400);
}
if( !is_numeric($data['user_id']) ) {
return_json_response(array('error' => "Value user_id must be numeric: '".$data['user_id']."'"), 400);
}
/* TODO: If user does not exist, bail */
/* TODO: If user relationship to card exists, bail */
/* TODO: Either Add card relationship OR remove old relationsip and add new */
return_json_response(array('error' => 'TODO: Not implemented'));
}
else {
/* Validate params */
if( !isset($_GET['card_number']) && !isset($_POST['card_number']) ) {
return_json_response(array('error' => "Missing param card_number: ".var_export($_POST, true)), 400);
}
$card_number = $_GET['card_number'];
if( !is_numeric($card_number) ) {
return_json_response(array('error' => "Value card_number must be numeric: '".$card_number."'"), 400);
}
// Search query
$card_number = $conn->quoteSmart($card_number);
$sql = "SELECT mc.userId FROM din_membercard AS mc
LEFT JOIN din_user AS u ON mc.userId=u.id
WHERE mc.id=$card_number";
$res = $conn->getAll($sql);
if( DB::isError($res) ) {
return_json_response(array('error' => $res->message), 500);
}
$card_number_exists = count($res) === 0;
/* Invalid card number? */
if($card_number_exists) {
return_json_response(array('user' => NULL, 'valid' => false));
}
$user_id = $res[0][0];
/* Free card_number? */
if($user_id === "") {
return_json_response(array('user' => NULL, 'valid' => true));
}
/* Existing user with card_number. */
try{
$user_data = get_user_data($user_id, $conn);
} catch(Exception $e) {
return_json_response(array('error' => $e->getMessage()), 500);
return; // Note: Help IntelliJ code inspection.
}
return_json_response(array('user' => $user_data, 'valid' => $res !== NULL));
}