mirror of
				https://github.com/ShaYmez/FreeSTAR-Status-Engine.git
				synced 2025-10-29 19:10:21 -04:00 
			
		
		
		
	- 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.
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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          
 | |
|     }
 | |
| } |