diff options
Diffstat (limited to 'h-source/Application/Controllers/UsersController.php')
-rw-r--r-- | h-source/Application/Controllers/UsersController.php | 352 |
1 files changed, 0 insertions, 352 deletions
diff --git a/h-source/Application/Controllers/UsersController.php b/h-source/Application/Controllers/UsersController.php deleted file mode 100644 index 741eaf4..0000000 --- a/h-source/Application/Controllers/UsersController.php +++ /dev/null @@ -1,352 +0,0 @@ -<?php - -// h-source, a web software to build a community of people that want to share their hardware information. -// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) -// -// This file is part of h-source -// -// h-source is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// h-source is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with h-source. If not, see <http://www.gnu.org/licenses/>. - -if (!defined('EG')) die('Direct access not allowed!'); - -class UsersController extends BaseController -{ - - public function __construct($model, $controller, $queryString) - { - parent::__construct($model, $controller, $queryString); - - $this->model('UsersModel'); - $this->model('ProfileModel'); - $this->model('HardwareModel'); - - $data['title'] = 'Login'; - $this->append($data); - } - - public function login($lang = 'en') - { - $data = array(); - - if ( strcmp($this->_updating,'no') === 0 ) - { - $data['flag'] = isset($type) ? 'setted' : null; - - $data['title'] = 'Login - '.Website::$generalName; - - $redirect = $this->request->get('redirect','','sanitizeAll'); - - $data['action'] = Url::getRoot("users/login/".$this->lang."?redirect=$redirect"); - - $data['notice'] = null; - - $this->s['registered']->checkStatus(); - - if ($this->s['registered']->status['status']=='logged') { //check if already logged - $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); - die(); - } - if (isset($_POST['username']) and isset($_POST['password'])) - { - $username = ctype_alnum($_POST['username']) ? sanitizeAll($_POST['username']) : ''; - $choice = $this->s['registered']->login($username,$_POST['password']); - - switch($choice) { - case 'logged': - $this->redirect('home/index/'.Lang::$current,3,'You are already logged...'); - break; - case 'accepted': - if (strcmp($redirect,'') !== 0) - { - $redirect = html_entity_decode($redirect,ENT_QUOTES,DEFAULT_CHARSET); - $domainName = rtrim(Url::getRoot(),"/"); - header('Location:'.$domainName."/".$redirect); - } - else - { - $this->redirect('home/index/'.Lang::$current,0); - } - break; - case 'login-error': - $data['notice'] = '<div class="alert">Wrong username or password</div>'; - break; - case 'wait': - $data['notice'] = '<div class="alert">You have to wait 5 seconds before you can try to login another time</div>'; - break; - } - } - } - - $this->append($data); - $this->load('login'); - } - - public function logout($lang = 'en') - { - $res = $this->s['registered']->logout(); - - if ($res === 'not-logged') - { - $data['notice'] = "<div class='alert'>You can't logout because you are not logged...</div>\n"; - } - else if ($res === 'was-logged') - { - $this->redirect('home/index/'.Lang::$current,0); - } - else if ($res === 'error') - { - - } - - $this->append($data); - $this->load('logout'); - } - - public function add($lang = 'en') - { - $data['title'] = 'create account - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - //start session for captcha - session_start(); - - if ( isset($_SESSION['status']) ) unset($_SESSION['status']); - - $this->shift(1); - - $this->m['UsersModel']->strongConditions['insert'] = array( - "checkAlphanum" => "username", - "checkLength|35" => "username", - "checkMail" => "e_mail", - "+checkLength|60" => "e_mail", - "checkEqual" => "password,confirmation", - "checkMatch|/^[a-zA-Z0-9\_\-\!]+$/" => "password,confirmation|characters allowed for the password: a-z A-Z 0-9 - _ !" - ); - - $this->m['UsersModel']->databaseConditions['insert'] = array( - "checkUnique" => "username", - "+checkUnique" => "e_mail" - ); - - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $data['notice'] = null; - - $this->m['UsersModel']->setFields('username:sanitizeAll,e_mail:sanitizeAll,password:sha1','none'); - - $this->m['UsersModel']->updateTable('insert'); - - $data['notice'] = $this->m['UsersModel']->notice; - - $values = $this->m['UsersModel']->getFormValues('insert','sanitizeHtml'); - $values['confirmation'] = ''; - - $data['values'] = $values; - - $this->append($data); - - $this->load('add'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function confirm($lang = 'en', $id_user = 0, $confirmation_token = '') - { - $data['title'] = 'confirm account - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $clean['id_user'] = (int)$id_user; - $clean['confirmation_token'] = sanitizeAlphanum($confirmation_token); - - $data['status_confirm'] = false; - - $res = $this->m['UsersModel']->select('id_user,creation_time')->where(array("id_user"=>$clean['id_user'],"confirmation_token"=>$clean['confirmation_token'],"has_confirmed"=>1,"deleted"=>"no"))->send(); - - // echo $this->m['UsersModel']->getQuery(); - - if (count($res) > 0) - { - $now = time(); - $checkTime = $res[0]['regusers']['creation_time'] + Account::$confirmTime; - if ($checkTime > $now) - { - $this->m['UsersModel']->values = array('has_confirmed' => 0, 'creation_time' => 0); - if ($this->m['UsersModel']->update($clean['id_user'])) - { - $data['status_confirm'] = true; - - //ad a record in the profile table - $this->m['ProfileModel']->values = array('created_by' => $clean['id_user']); - $this->m['ProfileModel']->insert(); - - } - } - } - - // var_dump($data['status_confirm']); - - $this->append($data); - $this->load('confirmation'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function change($lang = 'en', $id_user = 0, $forgot_token = '') - { - session_start(); - - $data['title'] = 'change password - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $clean['id_user'] = (int)$id_user; - $clean['forgot_token'] = sanitizeAlphanum($forgot_token); - - $res = $this->m['UsersModel']->select('username,id_user,forgot_time,e_mail')->where(array("id_user"=>$clean['id_user'],"forgot_token"=>$clean['forgot_token'],"has_confirmed"=>0,"deleted"=>"no"))->send(); - - if (count($res) > 0) - { - $now = time(); - $checkTime = $res[0]['regusers']['forgot_time'] + Account::$confirmTime; - if ($checkTime > $now) - { - $username = $res[0]['regusers']['username']; - $email = $res[0]['regusers']['e_mail']; - - $newPassword = generateString(10); - $this->m['UsersModel']->values = array('password' => sha1($newPassword), 'forgot_time' => 0); - if ($this->m['UsersModel']->update($clean['id_user'])) - { - $result = Account::sendpassword($username,$email,$newPassword); - - if ($result) - { - $_SESSION['status'] = 'sent_new_password'; - } - else - { - $_SESSION['status'] = 'sent_new_password_error'; - } - - $hed = new HeaderObj(DOMAIN_NAME); - $hed->redirect('users/notice/'.Lang::$current,1); - - } - } - } - - $this->append($data); - $this->load('change'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function forgot($lang = 'en') - { - $data['title'] = 'request password - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - session_start(); - - if ( isset($_SESSION['status']) ) unset($_SESSION['status']); - - $this->shift(1); - - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $data['notice'] = null; - - if (isset($_POST['forgotAction'])) - { - if (isset($_POST['username'])) - { - $this->m['UsersModel']->forgot($_POST['username']); - $data['notice'] = $this->m['UsersModel']->notice; - } - } - - $this->append($data); - - $this->load('forgot'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - - public function notice($lang = 'en') - { - $data['title'] = 'notice - '.Website::$generalName; - - if ( strcmp($this->_updating,'no') === 0 ) - { - session_start(); - if ($this->s['registered']->status['status'] === 'logged') - { - $this->redirect('home/index/'.$this->lang,2,'you are already logged..'); - } - else - { - $this->load('notice'); - $this->right(); - } - } - else - { - $this->redirect('users/login/'.$this->lang,0); - } - } - -}
\ No newline at end of file |