File indexing completed on 2024-12-22 05:33:23

0001 <?php
0002 
0003 /*
0004  *   GFX 4
0005  * 
0006  *   support: happy.snizzo@gmail.com
0007  *   website: http://trt-gfx.googlecode.com
0008  *   credits: Claudio Desideri
0009  *   
0010  *   This software is released under the MIT License.
0011  *   http://opensource.org/licenses/mit-license.php
0012  */ 
0013 
0014 class OCSUser{
0015   
0016   //ocs mandatory user attributes
0017   private static  $login;
0018   private static  $password;
0019   private static  $firstname;
0020   private static  $lastname;
0021   private static  $email;
0022   
0023   private static  $logged = false; //some kind of log
0024   private static  $id;
0025   
0026   private static  $persons;
0027   
0028   public static function server_load(){
0029     //storing root object
0030     OCSUser::$persons = new EModel("ocs_person");
0031   }
0032   
0033   
0034   public static function version()
0035   {
0036     return '1.6';
0037   }
0038   /*
0039    * getters/setters
0040    */
0041   public static  function id(){
0042     return OCSUser::$id;
0043   }
0044   
0045   public static function login(){
0046     return OCSUser::$login;
0047   }
0048   
0049   public static  function is_logged(){
0050     return OCSUser::$logged;
0051   }
0052 
0053   public static function client_login() {
0054 
0055     $login = EHeaderDataParser::secure_post("login");
0056     $password = EHeaderDataParser::secure_post("password");
0057     OCSUser::$login= $login;
0058 
0059     if($login==false && $password==false) {
0060       $login = EHeaderDataParser::get_cookie("login");
0061       $password = EHeaderDataParser::get_cookie("password");
0062       OCSUser::$login= $login;
0063     }
0064     $postdata = array(
0065       "login" => $login,
0066       "password" => $password
0067     );
0068     $client = new OCSClient(EConfig::$data["ocs"]["host"]);
0069     $check = $client->post("v1/person/check",$postdata);
0070 
0071     if($check["ocs"]["meta"]["statuscode"]=="100"){
0072       OCSUser::$logged=true;
0073       EHeaderDataParser::set_cookie("login", $login);
0074       EHeaderDataParser::set_cookie("password", $password);
0075     }
0076 
0077   }
0078 
0079   public static function client_logout() {
0080     $login = EHeaderDataParser::get_cookie("login");
0081     $password = EHeaderDataParser::get_cookie("password");
0082     EHeaderDataParser::del_cookie("login");
0083     EHeaderDataParser::del_cookie("password");
0084   }
0085 
0086   public static function get_login(){
0087     return OCSUser::$login;
0088   }
0089   
0090   
0091   /*
0092    * attempt an authentication trough nickname:password
0093    * and populates object data if successfull
0094    */
0095   public static  function server_checklogin($login,$passwd){
0096     //autoload if necessary
0097     if(is_null(OCSUser::$persons)){ OCSUser::server_load(); }
0098     //checklogin
0099     $r = OCSUser::$persons->count("login", "login='$login' and password='$passwd'");
0100     if($r==0){
0101       OCSUser::$logged = false;
0102       return false;
0103     } else {
0104       OCSUser::$logged = true;
0105       
0106       $data = OCSUser::$persons->find("*","where login='$login' and password='$passwd'");
0107       OCSUser::$id = $data[0]["id"];
0108       OCSUser::$login = $data[0]["login"];
0109       OCSUser::$firstname = $data[0]["firstname"];
0110       OCSUser::$lastname = $data[0]["lastname"];
0111       OCSUser::$email = $data[0]["email"];
0112       
0113       return $login;
0114     }
0115   }
0116   
0117   /*
0118    * Some utils functions regarding users
0119    */
0120   
0121   public static  function server_exists($user){
0122     //autoload if necessary
0123     if(is_null(OCSUser::$persons)){ OCSUser::server_load(); }
0124     
0125     $user = EDatabase::safe($user);
0126     $r = OCSUser::$persons->is_there("login","login='$user'");
0127     return $r;
0128   }
0129   
0130   public static  function server_get_user_info($username=""){
0131     //autoload if necessary
0132     if(is_null(OCSUser::$persons)){ OCSUser::server_load(); }
0133     
0134     if($username==OCSUser::$login){
0135       $user_info["id"] = OCSUser::$id;
0136       $user_info["login"] = OCSUser::$login;
0137       $user_info["firstname"] = OCSUser::$firstname;
0138       $user_info["lastname"] = OCSUser::$lastname;
0139       $user_info["email"] = OCSUser::$email;
0140       
0141       return $user_info;
0142     } else {
0143       $user_info = OCSUser::$persons->find("*","where login='$username' limit 1");
0144       return $user_info;
0145     }
0146   }
0147   
0148   public static  function server_register($login,$passwd,$firstname,$lastname,$email){
0149     //autoload if necessary
0150     if(is_null(OCSUser::$persons)){ OCSUser::server_load(); }
0151     
0152     $login = EDatabase::safe($login);
0153     $passwd = EDatabase::safe($passwd);
0154     $firstname = EDatabase::safe($firstname);
0155     $lastname = EDatabase::safe($lastname);
0156     $email = EDatabase::safe($email);
0157     
0158     EDatabase::q("INSERT INTO ocs_person (login,password,firstname,lastname,email) VALUES ('$login','$passwd','$firstname','$lastname','$email')");
0159   }
0160   
0161   /*
0162    * TODO: utils function which are semantically in the wrong place. Inspect and fix.
0163    */
0164   //TODO: ask for more infos about password validation
0165   public static  function isvalidpassword($pass){
0166     if(strlen($pass)>=8){
0167       return true;
0168     } else {
0169       return false;
0170     }
0171   }
0172   
0173   public static  function isloginname($login){
0174     if(preg_match("([A-Za-z0-9]*)",$login)){
0175       return true;
0176     } else {
0177       return false;
0178     }
0179   }
0180   
0181   public static  function server_countusersbyemail($email){
0182     //autoload if necessary
0183     if(is_null(OCSUser::$persons)){ OCSUser::server_load(); }
0184     
0185     $email = EDatabase::safe($email);
0186     $r = OCSUser::$persons->count("login", "email='$email'");
0187     return $r;
0188   }
0189   
0190   /*
0191    * Obscure magic string told me by the elders.
0192    * If modified, I don't guarantee you'll be safe anymore.
0193    */
0194   public static  function isvalidemail($email){
0195     if(preg_match("/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i", $email)){
0196       return true;
0197     } else {
0198       return false;
0199     }
0200   }
0201 }
0202 
0203 ?>