users = getJSON('users.php'); $this->actives = getJSON('active.php'); } ////////////////////////////////////////////////////////////////// // Authenticate ////////////////////////////////////////////////////////////////// public function Authenticate() { $pass = false; $this->EncryptPassword(); $users = getJSON('users.php'); foreach ($users as $user) { if ($user['username']==$this->username && $user['password']==$this->password) { $pass = true; $_SESSION['user'] = $this->username; $_SESSION['lang'] = $this->lang; $_SESSION['theme'] = $this->theme; if ($user['project']!='') { $_SESSION['project'] = $user['project']; } } } if ($pass) { echo formatJSEND("success", array("username"=>$this->username)); } else { echo formatJSEND("error", "Incorrect Username or Password"); } } ////////////////////////////////////////////////////////////////// // Create Account ////////////////////////////////////////////////////////////////// public function Create() { $this->EncryptPassword(); $pass = $this->checkDuplicate(); if ($pass) { $this->users[] = array("username"=>$this->username,"password"=>$this->password,"project"=>""); saveJSON('users.php', $this->users); echo formatJSEND("success", array("username"=>$this->username)); } else { echo formatJSEND("error", "The Username is Already Taken"); } } ////////////////////////////////////////////////////////////////// // Delete Account ////////////////////////////////////////////////////////////////// public function Delete() { // Remove User $revised_array = array(); foreach ($this->users as $user => $data) { if ($data['username']!=$this->username) { $revised_array[] = array("username"=>$data['username'],"password"=>$data['password'],"project"=>$data['project']); } } // Save array back to JSON saveJSON('users.php', $revised_array); // Remove any active files foreach ($this->actives as $active => $data) { if ($this->username==$data['username']) { unset($this->actives[$active]); } } saveJSON('active.php', $this->actives); // Remove access control list (if exists) if (file_exists(BASE_PATH . "/data/" . $this->username . '_acl.php')) { unlink(BASE_PATH . "/data/" . $this->username . '_acl.php'); } // Response echo formatJSEND("success", null); } ////////////////////////////////////////////////////////////////// // Change Password ////////////////////////////////////////////////////////////////// public function Password() { $this->EncryptPassword(); $revised_array = array(); foreach ($this->users as $user => $data) { if ($data['username']==$this->username) { $revised_array[] = array("username"=>$data['username'],"password"=>$this->password,"project"=>$data['project']); } else { $revised_array[] = array("username"=>$data['username'],"password"=>$data['password'],"project"=>$data['project']); } } // Save array back to JSON saveJSON('users.php', $revised_array); // Response echo formatJSEND("success", null); } ////////////////////////////////////////////////////////////////// // Set Project Access ////////////////////////////////////////////////////////////////// public function Project_Access() { // Access set to all projects if ($this->projects==0) { if (file_exists(BASE_PATH . "/data/" . $this->username . '_acl.php')) { unlink(BASE_PATH . "/data/" . $this->username . '_acl.php'); } // Access set to restricted list } else { // Save array back to JSON saveJSON($this->username . '_acl.php', $this->projects); } // Response echo formatJSEND("success", null); } ////////////////////////////////////////////////////////////////// // Set Current Project ////////////////////////////////////////////////////////////////// public function Project() { $revised_array = array(); foreach ($this->users as $user => $data) { if ($this->username==$data['username']) { $revised_array[] = array("username"=>$data['username'],"password"=>$data['password'],"project"=>$this->project); } else { $revised_array[] = array("username"=>$data['username'],"password"=>$data['password'],"project"=>$data['project']); } } // Save array back to JSON saveJSON('users.php', $revised_array); // Response echo formatJSEND("success", null); } ////////////////////////////////////////////////////////////////// // Check Duplicate ////////////////////////////////////////////////////////////////// public function CheckDuplicate() { $pass = true; foreach ($this->users as $user => $data) { if ($data['username']==$this->username) { $pass = false; } } return $pass; } ////////////////////////////////////////////////////////////////// // Verify Account Exists ////////////////////////////////////////////////////////////////// public function Verify() { $pass = 'false'; foreach ($this->users as $user => $data) { if ($this->username==$data['username']) { $pass = 'true'; } } echo($pass); } ////////////////////////////////////////////////////////////////// // Encrypt Password ////////////////////////////////////////////////////////////////// private function EncryptPassword() { $this->password = sha1(md5($this->password)); } ////////////////////////////////////////////////////////////////// // Clean username ////////////////////////////////////////////////////////////////// public static function CleanUsername($username) { return preg_replace('#[^A-Za-z0-9'.preg_quote('-_@. ').']#', '', $username); } }