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/snapporder/api/query.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

90 lines
2.5 KiB
PHP

<?php
/*
* Lookup a members phone number and return a member-like object.
*
* Request:
*
* $ curl /snapporder/api/query.php?phone=%2B4748105885 # %2B is a +
*
* Response:
*
* {
* "phone": "+4742345678",
* "membership_status": 1, // 0: registrert, 1: medlem, 2: aktivt medlem
* "expires": "2015-04-23",
* "memberid": "4331",
* "cardno": "12345",
* "firstname": "Jon",
* "lastname": "Hansen",
* "email": "jon@uio.no",
* "birthdate": "1985-03-01",
* "registration_status": "partial" // "partial" means show link
* "registration_url": "/snapporder/register_partial.php?userid=4331&token=lol"
* }
*
*/
set_include_path("../../includes/");
require_once("../../inside/credentials.php");
require_once("../../inside/functions.php");
require_once("../../includes/DB.php");
require_once("../lib/CryptoHelper.php");
require_once("../lib/functions.php");
require_once("../config.php");
$crypt = new CryptoHelper(SNAP_IV, SNAP_KEY);
/* Checks */
if(!isset($_GET['phone'])) {
set_response_code(400);
echo $crypt->json_encode_and_encrypt(array('error' => 'Missing param phone'));
die();
}
$phone = $_GET['phone'];
$phone = clean_phonenumber($phone);
if( !valid_phonenumber($phone) ) {
set_response_code(400);
echo $crypt->json_encode_and_encrypt(array('error' => 'Not a phone number', 'query' => $_GET));
die();
}
/* Connect to database */
$options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ALL );
$conn = DB::connect(getDSN(), $options);
if(DB :: isError($conn)) {
echo $conn->toString();
set_response_code(500);
echo $crypt->json_encode_and_encrypt(array('error' => 'Could not connect to DB'));
die();
}
$conn->setFetchMode(DB_FETCHMODE_ASSOC);
/* Search in phone number table for phone number */
$user_id = getUseridFromPhone($phone);
if( $user_id === false ) {
echo $crypt->json_encode_and_encrypt( array('result' => 'No matching users'));
die();
}
/* Get and format user */
$user = NULL;
try {
$user = get_user($user_id);
} catch(InsideDatabaseException $e) {
set_response_code(500);
echo $crypt->json_encode_and_encrypt(array('error' => 'db_error', 'error_message' => $e->getMessage()));
die();
}
/* Add back phone number from query */
$user['phone'] = $phone;
/* Add register url if needed */
if($user['registration_status'] === "partial") {
$user['registration_url'] = generate_registration_url($user, SECRET_KEY);
}
/* Return encrypted user object */
echo $crypt->json_encode_and_encrypt($user);
//echo json_encode($user);