daily pastebin goal
13%
SHARE
TWEET

Untitled

a guest Jun 18th, 2017 86 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace Revolution;
  4. if(!defined('IN_INDEX')) { die('Sorry, you cannot access this file.'); }
  5. class users implements iUsers
  6. {
  7.    
  8.     /*-------------------------------Authenticate-------------------------------------*/
  9.    
  10.     final public function isLogged()
  11.     {
  12.         if(isset($_SESSION['user']['id']))
  13.         {
  14.             return true;
  15.         }
  16.        
  17.         return false;
  18.     }
  19.    
  20.     /*-------------------------------Checking of submitted data-------------------------------------*/
  21.    
  22.     final public function validName($username)  
  23.     {
  24.         if(strlen($username) <= 25 && ctype_alnum($username))      
  25.         {          
  26.             return true;       
  27.         }              
  28.        
  29.         return false;  
  30.     }      
  31.          
  32.     final public function validEmail($email)    
  33.     {      
  34.         return preg_match("/^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$/i", $email);  
  35.     }      
  36.    
  37.     final public function validSecKey($seckey)
  38.     {
  39.         if(is_numeric($seckey) && strlen($seckey) == 4)
  40.         {
  41.             return true;
  42.         }
  43.        
  44.         return false;
  45.     }
  46.    
  47.     final public function nameTaken($username)  
  48.     {      
  49.         global $engine;        
  50.        
  51.         if($engine->num_rows("SELECT * FROM users WHERE username = '" . $username . "' LIMIT 1") > 0)
  52.         {
  53.             return true;
  54.         }  
  55.        
  56.         return false;
  57.     }
  58.    
  59.     final public function emailTaken($email)
  60.     {
  61.         global $engine;
  62.        
  63.         if($engine->num_rows("SELECT * FROM users WHERE mail = '" . $email . "' LIMIT 1") > 0)
  64.         {
  65.             return true;
  66.         }
  67.        
  68.         return false;
  69.     }
  70.        
  71.     final public function userValidation($username, $password)
  72.     {      
  73.         global $engine;
  74.         if($engine->num_rows("SELECT * FROM users WHERE username = '" . $username . "' AND password = '" . $password . "' LIMIT 1") > 0)
  75.         {
  76.             return true;
  77.         }  
  78.          
  79.         return false;
  80.     }      
  81.    
  82.     /*-------------------------------Stuff related to bans-------------------------------------*/
  83.    
  84.     final public function isBanned($value)
  85.     {
  86.         global $engine;
  87.         if($engine->num_rows("SELECT * FROM bans WHERE value = '" . $value . "' LIMIT 1") > 0)
  88.         {
  89.             return true;
  90.         }
  91.            
  92.         return false;
  93.     }
  94.    
  95.     final public function getReason($value)
  96.     {
  97.         global $engine;
  98.         return $engine->result("SELECT reason FROM bans WHERE value = '" . $value . "' LIMIT 1");
  99.     }
  100.    
  101.     final public function hasClones($ip)
  102.     {
  103.         global $engine;
  104.         if($engine->num_rows("SELECT * FROM users WHERE ip_reg = '" . $_SERVER['HTTP_X_FORWARDED_FOR'] . "' or ip_last = '" . $_SERVER['HTTP_X_FORWARDED_FOR'] . "'") ==  2)
  105.         {
  106.             return true;
  107.         }
  108.        
  109.         return false;
  110.     }
  111.    
  112.     /*-------------------------------Login or Register user-------------------------------------*/
  113.    
  114.   final public function register()
  115.     {
  116.         global $core, $template, $_CONFIG;
  117.    
  118.         if(isset($_POST['register']))
  119.         {
  120.             unset($template->form->error);
  121.        
  122.             $template->form->setData();
  123.            
  124.             if($this->validName($template->form->reg_username))
  125.             {
  126.                 if(!$this->nameTaken($template->form->reg_username))
  127.                 {
  128.                     if($this->validEmail($template->form->reg_email))
  129.                     {
  130.                         if(!$this->emailTaken($template->form->reg_email))
  131.                         {
  132.                             if(strlen($template->form->reg_password) > 6)
  133.                             {
  134.                                 if($template->form->reg_password == $template->form->reg_rep_password)
  135.                                 {
  136.                                     if(isset($template->form->reg_seckey))
  137.                                     {
  138.                                         if($this->validSecKey($template->form->reg_seckey))
  139.                                         {
  140.                                             //Continue
  141.                                         }
  142.                                         else
  143.                                         {
  144.                                             $template->form->error = 'Secret key must only have 4 numbers';
  145.                                             return;
  146.                                         }
  147.                                     }
  148.                                     if($this->isBanned($_SERVER['REMOTE_ADDR']) == false)
  149.                                     {
  150.                                             if(!isset($template->form->reg_gender)) { $template->form->reg_gender = 'M'; }
  151.                                             if(!isset($template->form->reg_figure)) { $template->form->reg_figure = $_CONFIG['hotel']['figure']; }
  152.                                    
  153.                                             $this->addUser($template->form->reg_username, $core->hashed($template->form->reg_password), $template->form->reg_email, $_CONFIG['hotel']['motto'], $_CONFIG['hotel']['credits'], $_CONFIG['hotel']['pixels'], 1, $template->form->reg_figure, $template->form->reg_gender, $core->hashed($template->form->reg_key));
  154.                        
  155.                                             $this->turnOn($template->form->reg_username);
  156.                                            
  157.                                             mysql_query("UPDATE users SET ip_reg='".$_SERVER['REMOTE_ADDR']."' WHERE username='". $template->form->reg_username."'");
  158.                                             mysql_query("UPDATE users SET ip_last='".$_SERVER['REMOTE_ADDR']."' WHERE username='". $template->form->reg_username."'");
  159.                                            
  160.                                
  161.                                             header('Location: ' . $_CONFIG['hotel']['url'] . '/me');
  162.                                             exit;
  163.                                     }
  164.                                     else
  165.                                     {
  166.                                         $template->form->error = 'Olet saanut porttikiellon.<br />';
  167.                                         $template->form->error .= 'Syy: ' . $this->getReason($_SERVER['REMOTE_ADDR']);
  168.                                         return;
  169.                                     }
  170.                                 }
  171.                                 else
  172.                                 {
  173.                                     $template->form->error = 'Password does not match repeated password';
  174.                                     return;
  175.                                 }
  176.  
  177.                             }
  178.                             else
  179.                             {
  180.                                 $template->form->error = 'Salasanan pit&auml;&auml; olla ainakin 6-merkki&auml; pitk&auml;';
  181.                                 return;
  182.                             }
  183.                         }
  184.                         else
  185.                         {
  186.                             $template->form->error = 'Email: <b>' . $template->form->reg_email . '</b> is already registered';
  187.                             return;
  188.                         }
  189.                     }
  190.                     else
  191.                     {
  192.                         $template->form->error = 'Email is not valid';
  193.                         return;
  194.                     }
  195.                 }
  196.                 else
  197.                 {
  198.                     $template->form->error = 'Username is already registered';
  199.                     return;
  200.                 }
  201.             }
  202.             else
  203.             {
  204.                 $template->form->error = 'Username is invalid';
  205.                 return;
  206.             }
  207.         }
  208.     }
  209.    
  210.     final public function login()
  211.     {
  212.         global $template, $_CONFIG, $core;
  213.        
  214.         if(isset($_POST['login']))
  215.         {
  216.             $template->form->setData();
  217.             unset($template->form->error);
  218.            
  219.             if($this->nameTaken($template->form->log_username))
  220.             {
  221.                 if($this->isBanned($template->form->log_username) == false || $this->isBanned($_SERVER['HTTP_X_FORWARDED_FOR']) == false)
  222.                 {
  223.                     if($this->userValidation($template->form->log_username, $core->hashed($template->form->log_password)))
  224.                     {
  225.                         $this->turnOn($template->form->log_username);
  226.                         $this->updateUser($_SESSION['user']['id'], 'ip_last', $_SERVER['REMOTE_ADDR']);
  227.                         $template->form->unsetData();
  228.                         header('Location: ' . $_CONFIG['hotel']['url'] . '/me');
  229.                         exit;
  230.                     }
  231.                     else
  232.                     {
  233.                         $template->form->error = 'Details do not match';
  234.                         return;
  235.                     }
  236.                 }
  237.                 else
  238.                 {
  239.                     $template->form->error = 'Sorry, it appears this user is banned<br />';
  240.                     $template->form->error .= 'Reason: ' . $this->getReason($template->form->log_username);
  241.                     return;
  242.                 }
  243.             }
  244.             else
  245.             {
  246.                 $template->form->error = 'Username does not exist';
  247.                 return;
  248.             }
  249.         }
  250.     }
  251.    
  252.  final public function loginHK()
  253.         {
  254.                 global $template, $_CONFIG, $core;
  255.                
  256.                 if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['HTTP_X_FORWARDED_FOR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; }
  257.  
  258.                
  259.                 if(isset($_POST['login']))
  260.                 {      
  261.                         $template->form->setData();
  262.                         unset($template->form->error);
  263.                        
  264.                         if(isset($template->form->username) && isset($template->form->password) && isset($template->form->pincode))
  265.                         {
  266.                                 if($this->nameTaken($template->form->username))
  267.                                 {        
  268.                                         if($this->userValidation($template->form->username, $core->hashed($template->form->password)))
  269.                                         {
  270.                                                                              
  271.                                                         if(($this->getInfo($_SESSION['user']['id'], 'rank')) >= 5)
  272.                                                         {
  273.                                                                 mysql_query("INSERT INTO `cms_housekeeping_logs` (userid,ip_address,page,time,extra_data) VALUES ('".$_SESSION['user']['id']."', '".$_SERVER['HTTP_X_FORWARDED_FOR']."', 'Housekeeping Login', '".time()."', 'Success Login: Username: ".$template->form->username."')") or die(mysql_error());
  274.                                                                 $_SESSION["in_hk"] = true;
  275.                                                                 $_SESSION["pincode_set"] = true;
  276.                                                                 header("Location:".$_CONFIG['hotel']['url']."/ase/index.php?url=main");
  277.                                                                 exit;
  278.                                                         }
  279.                                                         else
  280.                                                         {
  281.                                                                 mysql_query("INSERT INTO `cms_housekeeping_logs` (userid,ip_address,page,time,extra_data) VALUES ('".$_SESSION['user']['id']."', '".$_SERVER['HTTP_X_FORWARDED_FOR']."', 'Housekeeping Login', '".time()."', 'Failed to login: Incorrect level.')") or die(mysql_error());
  282.                                                                 $template->form->error = 'Incorrect access level.';
  283.                                                                 return;
  284.                                                         }
  285.                                                
  286.                                                
  287.                                         }
  288.                                         else
  289.                                         {
  290.                                                 mysql_query("INSERT INTO `cms_housekeeping_logs` (userid,ip_address,page,time,extra_data) VALUES ('".$_SESSION['user']['id']."', '".$_SERVER['HTTP_X_FORWARDED_FOR']."', 'Housekeeping Login', '".time()."', 'Failed to login: Wrong Password')") or die(mysql_error());
  291.                                                 $template->form->error = 'Incorrect password.';
  292.                                                 return;
  293.                                         }              
  294.                                 }
  295.                                 else
  296.                                 {
  297.                                         mysql_query("INSERT INTO `cms_housekeeping_logs` (userid,ip_address,page,time,extra_data) VALUES ('".$_SESSION['user']['id']."', '".$_SERVER['HTTP_X_FORWARDED_FOR']."', 'Housekeeping Login', '".time()."', 'Failed to login: No such user')") or die(mysql_error());
  298.                                         $template->form->error = 'User does not exist.';
  299.                                         return;
  300.                                 }
  301.                         }
  302.                         else
  303.                         {
  304.                                 mysql_query("INSERT INTO `cms_housekeeping_logs` (userid,ip_address,page,time,extra_data) VALUES ('".$_SESSION['user']['id']."', '".$_SERVER['HTTP_X_FORWARDED_FOR']."', 'Housekeeping Login', '".time()."', 'Failed to login: Missing fields.')") or die(mysql_error());
  305.                                 $template->form->error = 'Something was missing..';
  306.                                 return;
  307.                         }
  308.        
  309.                         $template->form->unsetData();
  310.                 }
  311.         }
  312.         final public function pinValidation($username, $password, $pincode)
  313.         {              
  314.                 global $engine;
  315.                 if($engine->num_rows("SELECT * FROM users WHERE username = '" . $username . "' AND password = '" . $password . "' AND housekeeping_pin = '" . $pincode . "' LIMIT 1") > 0)
  316.                 {
  317.                         return true;
  318.                 }      
  319.                  
  320.                 return false;
  321.         }  
  322.    
  323.     final public function help()
  324.     {
  325.         global $template, $_CONFIG;
  326.         $template->form->setData();
  327.        
  328.         if(isset($template->form->help))
  329.         {
  330.             $to = $_CONFIG['hotel']['email'];
  331.             $subject = "Help from RevCMS user - " . $this->getInfo($_SESSION['user']['id'], 'username');
  332.             $body = $template->form->question;
  333.                
  334.             if (mail($to, $subject, $body))
  335.             {
  336.                 $template->form->error = 'Message successfully sent! We will answer you shortly!';
  337.             }
  338.             else
  339.             {
  340.                  $template->form->error = 'Message delivery failed.';
  341.             }
  342.         }
  343.     }
  344.  
  345.     /*-------------------------------Account settings-------------------------------------*/
  346.    
  347.     final public function updateAccount()
  348.     {
  349.         global $template, $_CONFIG, $core, $engine;
  350.        
  351.         if(isset($_POST['account']))
  352.         {  
  353.             if(!empty($_POST['acc_old_password']) && !empty($_POST['acc_new_password']))
  354.             {
  355.                 if($this->userValidation($this->getInfo($_SESSION['user']['id'], 'username'), $core->hashed($_POST['acc_old_password'])))
  356.                 {
  357.                     if(strlen($_POST['acc_new_password']) >= 6)
  358.                     {
  359.                         $template->form->error = '<div class="rounded rounded-green"><center>Your password has been successfully updated</center></div>';
  360.                         $this->updateUser($_SESSION['user']['id'], 'password', $core->hashed($_POST['acc_new_password']));
  361.                         header('Location: '.$_CONFIG['hotel']['url'].'/logout');
  362.                         exit;
  363.                     }
  364.                     else
  365.                     {
  366.                         $template->form->error = '<div class="rounded rounded-red"><center>The password you entered is too short</center></div>';
  367.                         return;
  368.                     }
  369.                 }
  370.                 else
  371.                 {
  372.                     $template->form->error = '<div class="rounded rounded-red"><center>The password you entered is incorrect</center></div>';
  373.                     return;
  374.                 }
  375.             }
  376.            
  377.             if(!empty($_POST['acc_motto']) && $_POST['acc_motto'] != $_SESSION['user']['motto'])
  378.             {
  379.                 $this->updateUser($_SESSION['user']['id'], 'motto', $_POST['acc_motto']);
  380.                 $template->form->error = '<div class="rounded rounded-green"><center>Your password has successfully been updated</center></div>';
  381.                 return;
  382.             }
  383.            
  384.             if(!empty($_POST['acc_email']))
  385.             {
  386.                 if($_POST['acc_email'] != $this->getInfo($_SESSION['user']['id'], 'mail'))
  387.                 {
  388.                     if($this->validEmail($_POST['acc_email']))
  389.                     {
  390.                         $this->updateUser($_SESSION['user']['id'], 'mail', $engine->secure($_POST['acc_email']));
  391.                         $template->form->error = '<div class="rounded rounded-green"><center>Your email address has successfully been updated</center></div>';
  392.                         return;
  393.                     }
  394.                     else
  395.                     {
  396.                         $template->form->error = '<div class="rounded rounded-red"><center>The email address you entered is not a valid email</center></div>';
  397.                         return;
  398.                     }
  399.                 }
  400.             }          
  401.         }      
  402.     }
  403.        
  404.     final public function turnOn($k)
  405.     {  
  406.         $j = $this->getID($k);
  407.         $this->createSSO($j);
  408.         $_SESSION['user']['id'] = $j;  
  409.         $this->cacheUser($j);  
  410.         unset($j);
  411.     }
  412.    
  413.     /*-------------------------------Create SSO auth_ticket-------------------------------------*/
  414.    
  415.     final public function createSSO($k)    
  416.     {      
  417.         $sessionKey = 'RevCMS-'.rand(9,999).'/'.substr(sha1(time()).'/'.rand(9,9999999).'/'.rand(9,9999999).'/'.rand(9,9999999),0,33);
  418.        
  419.         $this->updateUser($k, 'auth_ticket', $sessionKey);
  420.        
  421.         unset($sessionKey);
  422.     }    
  423.        
  424.     /*-------------------------------Adding/Updating/Deleting users-------------------------------------*/
  425.    
  426.     final public function addUser($username, $password, $email, $motto, $credits, $pixels, $rank, $figure, $gender, $seckey)    
  427.     {      
  428.         global $engine;                                
  429.         $sessionKey = 'RevCMS-'.rand(9,999).'/'.substr(sha1(time()).'/'.rand(9,9999999).'/'.rand(9,9999999).'/'.rand(9,9999999),0,33);
  430.         $engine->query("INSERT INTO users (username, password, mail, motto, credits, activity_points, rank, look, gender, seckey, ip_last, ip_reg, account_created, last_online, auth_ticket) VALUES('" . $username . "', '" . $password . "', '" . $email . "', '" . $motto . "', '" . $credits . "', '" . $pixels . "', '" . $rank . "', '" . $figure . "', '" . $gender . "', '" . $seckey . "', '" . $_SERVER['HTTP_X_FORWARDED_FOR'] . "', '" . $_SERVER['HTTP_X_FORWARDED_FOR'] . "', '" . time() . "', '" . time() . "', '" . $sessionKey . "')");  
  431.         unset($sessionKey);
  432.                      
  433.     }              
  434.          
  435.     final public function deleteUser($k)    
  436.     {      
  437.         global $engine;                
  438.         $engine->query("DELETE FROM users WHERE id = '" . $k . "' LIMIT 1");       
  439.         $engine->query("DELETE FROM items WHERE userid = '" . $k . "' LIMIT 1");       
  440.         $engine->query("DELETE FROM rooms WHERE ownerid = '" . $k . "' LIMIT 1");  
  441.     }  
  442.        
  443.     final public function updateUser($k, $key, $value)  
  444.     {      
  445.         global $engine;                
  446.         $engine->query("UPDATE users SET " . $key . " = '" . $engine->secure($value) . "' WHERE id = '" . $k . "' LIMIT 1");
  447.         $_SESSION['user'][$key] = $engine->secure($value);     
  448.     }
  449.    
  450.     /*-------------------------------Handling user information-------------------------------------*/    
  451.    
  452.     final public function cacheUser($k)
  453.     {
  454.         global $engine;            
  455.         $userInfo = $engine->fetch_assoc("SELECT username, rank, motto, mail, credits, activity_points, look, auth_ticket, ip_last FROM users WHERE id = '" . $k . "' LIMIT 1");
  456.        
  457.         foreach($userInfo as $key => $value)
  458.         {
  459.             $this->setInfo($key, $value);
  460.         }
  461.     }  
  462.    
  463.     final public function setInfo($key, $value)
  464.     {
  465.         global $engine;
  466.         $_SESSION['user'][$key] = $engine->secure($value);
  467.     }
  468.  
  469.     final public function getInfo($k, $key)
  470.     {
  471.         global $engine;
  472.         if(!isset($_SESSION['user'][$key]))
  473.         {
  474.             $value = $engine->result("SELECT $key FROM users WHERE id = '" . $engine->secure($k) . "' LIMIT 1");
  475.             if($value != null)
  476.             {          
  477.                 $this->setInfo($key, $value);
  478.             }
  479.         }
  480.            
  481.         return $_SESSION['user'][$key];
  482.     }
  483.    
  484.    
  485.    
  486.     /*-------------------------------Get user ID or Username-------------------------------------*/
  487.    
  488.     final public function getID($k)    
  489.     {      
  490.         global $engine;        
  491.         return $engine->result("SELECT id FROM users WHERE username = '" . $engine->secure($k) . "' LIMIT 1");  
  492.     }      
  493.    
  494.     final public function getUsername($k)
  495.     {
  496.         global $engine;
  497.         return $this->getInfo($_SESSION['user']['id'], 'username');
  498.     }
  499.    
  500. }
  501. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top