diff --git a/.gitignore b/.gitignore index 3302008..4a52bdf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ credentials.php inside/tmp inside/migration/config.php +snapporder/config.php migration.log error_log *.swp diff --git a/inside/includes.php b/inside/includes.php index 1e814df..58d848b 100644 --- a/inside/includes.php +++ b/inside/includes.php @@ -101,7 +101,7 @@ require_once "WeekPrograms.php"; //Errors if (isAdmin()){ - error_reporting(E_ALL); + error_reporting(E_ALL & ~E_STRICT); }else { error_reporting(0); } diff --git a/snapporder/api/query.php b/snapporder/api/query.php index ee984c4..2f9b564 100644 --- a/snapporder/api/query.php +++ b/snapporder/api/query.php @@ -1,4 +1,11 @@ 'Missing param phone')); + die(); +} +$phone = mysql_real_escape_string($_GET['phone']); +if(!is_numeric($phone) || strlen($phone) !== 8 ) { + http_response_code(400); + echo json_encode(array('error' => 'Not a phone number')); + die(); +} + +/* Connect to database */ +$options = array( 'debug' => 2, 'portability' => DB_PORTABILITY_ALL ); +$conn = DB::connect(getDSN(), $options); +if(DB :: isError($conn)) { + echo $conn->toString(); + http_response_code(500); + echo json_encode(array('error' => 'Could not connect to DB')); + die(); +} + +/* Search in phone number table for phone number */ +$conn->setFetchMode(DB_FETCHMODE_ASSOC); +$sql = "SELECT user_id FROM din_userphonenumber WHERE number='$phone'"; +$res = $conn->query($sql); +if( DB::isError($res) ) { + http_response_code(500); + echo json_encode( array('error' => 'db_error', 'error_message' => $res->toString() ) ); + die(); +} +// empty? +if( $res->numRows() == 0) { + echo json_encode( array('result' => 'No matching users')); + die(); +} +$res->fetchInto($row); +$user_id = $row['user_id']; + +/* Get user object with group ids and membership status */ +$cols = array('id', 'firstname', 'lastname', 'email', 'expires', 'cardno'); +$sql = "SELECT ".implode($cols, ",").",GROUP_CONCAT(group_id) AS group_ids,expires > NOW() OR expires IS NULL AS is_member FROM din_user AS u, din_usergrouprelationship AS ug WHERE u.id=$user_id AND u.id=ug.user_id GROUP BY user_id"; +$res = $conn->query($sql); +if( DB::isError($res) ) { + echo json_encode( array('error' => 'db_error', 'error_message' => $res->toString() ) ); + die(); +} +$res->fetchInto($user); + +/* Membership status according to spec. + * Status codes: + * 0 - Registered + * 1 - Member + * 2 - Active member + */ +$groups = explode(",", $user['group_ids']); +$user['membership_status'] = 0; + +if($user['is_member'] !== "0") { + // Group id mappings 1:dns-alle, 2: dns-aktiv, 3:administrator, 4+:orgunits/special groups + if(in_array("2", $groups)) { + $user['membership_status'] = 2; + } else { + $user['membership_status'] = 1; + } +} +/* Add back phone number from query */ +$user['phone'] = $phone; + +/* Clean up user object */ +unset($user['is_member']); +unset($user['group_ids']); + +/* Return encrypted user object */ +echo json_encode($user); +//echo $crypt->encrypt(json_encode($user)); + +?> diff --git a/snapporder/api/register.php b/snapporder/api/register.php index 3f975af..0093dcd 100644 --- a/snapporder/api/register.php +++ b/snapporder/api/register.php @@ -30,4 +30,8 @@ * - register user in temp user db * - return result */ +/* Decrypt body */ +$crypt = new CryptoHelper(SNAP_IV, SNAP_KEY); +var_dump($crypt->decrypt($crypt->encrypt("lol"))); + ?> diff --git a/snapporder/lib/CryptoHelper.php b/snapporder/lib/CryptoHelper.php index 582d5f2..8fd2a8e 100644 --- a/snapporder/lib/CryptoHelper.php +++ b/snapporder/lib/CryptoHelper.php @@ -10,8 +10,8 @@ class CryptoHelper function __construct($iv, $key) { - $this->$iv = $iv; - $this->$key = $key; + $this->iv = $iv; + $this->key = $key; } diff --git a/snapporder/lib/functions.php b/snapporder/lib/functions.php index e69de29..88a0100 100644 --- a/snapporder/lib/functions.php +++ b/snapporder/lib/functions.php @@ -0,0 +1,18 @@ + 2, + 'portability' => DB_PORTABILITY_ALL, +); +$db = DB::connect(getDSN(), $options); +if(DB :: isError($conn)) { + echo $conn->toString(); +} +$db->setFetchMode(DB_FETCHMODE_ASSOC); + + +?>