mirror of
https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
synced 2025-05-23 17:52:26 -04:00
Moved, renamed and modified Telegram related files.
- Made functions from ./telegram.php into a class and moved to classes/telegram.php - Renamed check.php to telegram_check.php to make it easier to understand what the file belongs to. - SESSIONS used to control if user is logged on or not - Telegram users will be identified as typeID = 2 in the subscribers table.
This commit is contained in:
parent
cf1f00e9b5
commit
b5c5a2c8cf
12
check.php
12
check.php
@ -1,12 +0,0 @@
|
||||
<?php
|
||||
require_once("config.php");
|
||||
require_once("telegram.php");
|
||||
|
||||
try {
|
||||
$auth_data = checkTelegramAuthorization($_GET);
|
||||
saveTelegramUserData($auth_data);
|
||||
} catch (Exception $e) {
|
||||
die ($e->getMessage());
|
||||
}
|
||||
header('Location: index.php');
|
||||
?>
|
82
classes/telegram.php
Normal file
82
classes/telegram.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
Class Telegram
|
||||
{
|
||||
|
||||
/**
|
||||
* Get telegram user data
|
||||
*
|
||||
* Gets telegram user data from cookie and save it to array
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @author Telegram
|
||||
*
|
||||
*
|
||||
* @since 0.1
|
||||
*/
|
||||
function getTelegramUserData() {
|
||||
if (isset($_COOKIE['tg_user'])) {
|
||||
$auth_data_json = urldecode($_COOKIE['tg_user']);
|
||||
$auth_data = json_decode($auth_data_json, true);
|
||||
return $auth_data;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Check if data is from telegram
|
||||
*
|
||||
* This checks if the data provides is from telegram. It includes a Fix for firefox
|
||||
*
|
||||
* @param mixed $auth_data The Authentication Data
|
||||
*
|
||||
* @return $auth_data
|
||||
*
|
||||
*/
|
||||
function checkTelegramAuthorization($auth_data) {
|
||||
$check_hash = $auth_data['hash'];
|
||||
unset($auth_data['hash']);
|
||||
$data_check_arr = [];
|
||||
foreach ($auth_data as $key => $value) {
|
||||
// $data_check_arr[] = $key . '=' . $value;
|
||||
$data_check_arr[] = $key . '=' . str_replace('https:/t', 'https://t', $value);
|
||||
}
|
||||
sort($data_check_arr);
|
||||
$data_check_string = implode("\n", $data_check_arr);
|
||||
$secret_key = hash('sha256', TG_BOT_API_TOKEN, true);
|
||||
$hash = hash_hmac('sha256', $data_check_string, $secret_key);
|
||||
if (strcmp($hash, $check_hash) !== 0) {
|
||||
throw new Exception('Data is NOT from Telegram');
|
||||
}
|
||||
if ((time() - $auth_data['auth_date']) > 86400) {
|
||||
throw new Exception('Data is outdated');
|
||||
}
|
||||
return $auth_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save telegram userdata
|
||||
*
|
||||
* Save the telegram user data in a cookie
|
||||
* @return void
|
||||
*/
|
||||
function saveTelegramUserData($auth_data) {
|
||||
$auth_data_json = json_encode($auth_data);
|
||||
setcookie('tg_user', $auth_data_json);
|
||||
}
|
||||
|
||||
function get_telegram_subscriberid($user)
|
||||
{
|
||||
global $mysqli;
|
||||
$stmt = $mysqli->prepare("SELECT subscriberID FROM subscribers WHERE typeID=1 AND userID LIKE ? LIMIT 1");
|
||||
$stmt->bind_param("s", $user);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
if ( $result->num_rows) {
|
||||
$row = $result->fetch_assoc();
|
||||
$subscriberID = $row['subscriberID'];
|
||||
return $subscriberID;
|
||||
}
|
||||
return null; // Return null on false
|
||||
}
|
||||
}
|
63
telegram.php
63
telegram.php
@ -1,63 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Get telegram user data
|
||||
*
|
||||
* Gets telegram user data from cookie and save it to array
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @author Telegram
|
||||
*
|
||||
*
|
||||
* @since 0.1
|
||||
*/
|
||||
function getTelegramUserData() {
|
||||
if (isset($_COOKIE['tg_user'])) {
|
||||
$auth_data_json = urldecode($_COOKIE['tg_user']);
|
||||
$auth_data = json_decode($auth_data_json, true);
|
||||
return $auth_data;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Check if data is from telegram
|
||||
*
|
||||
* This checks if the data provides is from telegram. It includes a Fix for firefox
|
||||
*
|
||||
* @param mixed $auth_data The Authentication Data
|
||||
*
|
||||
* @return $auth_data
|
||||
*
|
||||
*/
|
||||
function checkTelegramAuthorization($auth_data) {
|
||||
$check_hash = $auth_data['hash'];
|
||||
unset($auth_data['hash']);
|
||||
$data_check_arr = [];
|
||||
foreach ($auth_data as $key => $value) {
|
||||
// $data_check_arr[] = $key . '=' . $value;
|
||||
$data_check_arr[] = $key . '=' . str_replace('https:/t', 'https://t', $value);
|
||||
}
|
||||
sort($data_check_arr);
|
||||
$data_check_string = implode("\n", $data_check_arr);
|
||||
$secret_key = hash('sha256', TG_BOT_API_TOKEN, true);
|
||||
$hash = hash_hmac('sha256', $data_check_string, $secret_key);
|
||||
if (strcmp($hash, $check_hash) !== 0) {
|
||||
throw new Exception('Data is NOT from Telegram');
|
||||
}
|
||||
if ((time() - $auth_data['auth_date']) > 86400) {
|
||||
throw new Exception('Data is outdated');
|
||||
}
|
||||
return $auth_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save telegram userdata
|
||||
*
|
||||
* Save the telegram user data in a cookie
|
||||
* @return void
|
||||
*/
|
||||
function saveTelegramUserData($auth_data) {
|
||||
$auth_data_json = json_encode($auth_data);
|
||||
setcookie('tg_user', $auth_data_json);
|
||||
}
|
33
telegram_check.php
Normal file
33
telegram_check.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
require_once ("config.php");
|
||||
require_once ("classes/telegram.php");
|
||||
require_once ("classes/subscriber.php");
|
||||
|
||||
$telegram = new Telegram();
|
||||
$subscriber = new Subscriber();
|
||||
|
||||
try {
|
||||
$auth_data = $telegram->checkTelegramAuthorization($_GET);
|
||||
$telegram->saveTelegramUserData($auth_data);
|
||||
} catch (Exception $e) {
|
||||
die($e->getMessage());
|
||||
}
|
||||
|
||||
// Check if user is registered in DB
|
||||
$subscriber->firstname = $auth_data['first_name'];
|
||||
$subscriber->lastname = $auth_data['last_name'];
|
||||
$subscriber->typeID = 1;
|
||||
$subscriber->userID = $auth_data['id'];
|
||||
$subscriber->active = 1; // Telegram user should always be active if they can be validated
|
||||
|
||||
$subscriber_id = $subscriber->get_subscriber_by_userid(true); // If user does not exists, create it
|
||||
$subscriber->id = $subscriber_id;
|
||||
|
||||
// make sure we don't have a logged in email subscriber
|
||||
$subscriber->set_logged_in();
|
||||
//$_SESSION['subscriber_valid'] = true;
|
||||
//$_SESSION['subscriber_typeid'] = 1;
|
||||
//$_SESSION['subscriber_userid'] = $auth_data['id'];
|
||||
//$_SESSION['subscriber_id'] = $subscriber_id;
|
||||
|
||||
header('Location: subscriptions.php');
|
Loading…
x
Reference in New Issue
Block a user