diff --git a/application/config/autoload.php b/application/config/autoload.php index 7a8bab8..07f208e 100755 --- a/application/config/autoload.php +++ b/application/config/autoload.php @@ -52,7 +52,7 @@ $autoload['packages'] = array(APPPATH.'third_party'); | $autoload['libraries'] = array('database', 'session', 'xmlrpc'); */ -$autoload['libraries'] = array('lang_detect', 'database', 'session'); +$autoload['libraries'] = array('lang_detect', 'database', 'session', 'access'); /* diff --git a/application/controllers/auth.php b/application/controllers/auth.php index 1ba4d35..5b5894b 100755 --- a/application/controllers/auth.php +++ b/application/controllers/auth.php @@ -7,197 +7,200 @@ */ class Auth extends CI_Controller { - /** - * Constructor. - */ - public function __construct() { - parent::__construct(); - $this->load->library('access'); - $this->load->library('form_validation'); - $this->load->model('user'); - } + /** + * Constructor. + */ + public function __construct() { + parent::__construct(); + $this->load->library('access'); + $this->load->library('form_validation'); + $this->load->model('user'); + } - //redirect if needed, otherwise display the user list - public function index() { - if (!$this->access->loggedIn()) { - redirect('auth/login'); - } else { - //set the flash data error message if there is one - $this->data['message'] = validation_errors() ? validation_errors() : $this->session->flashdata('message'); + /** + * Redirects the user if needed, otherwise display the layout. + */ + public function index() { + if (!$this->access->loggedIn()) { + redirect('auth/login'); + } else { + $this->load->view('index'); + } + } - //$this->data['users'] = $this->access->getUsers(); - $this->load->view('index', $this->data); - } - } + /** + * Logs the user in - or not ;-) + */ + public function login() { + if ($this->access->loggedIn()) { + redirect(); + } - /** - * Logs the user in - or not ;-) - */ - public function login() { - if ($this->access->loggedIn()) { - redirect('welcome'); - } + // validate form input + $this->form_validation->set_rules('username', "Benutzername", 'required'); + $this->form_validation->set_rules('password', "Passwort", 'required'); - // validate form input - $this->form_validation->set_rules('username', "Benutzername", 'required'); - $this->form_validation->set_rules('password', "Passwort", 'required'); + if ($this->form_validation->run() == true) { + // check for "remember me" + $remember = (boolean) $this->input->post('remember'); - if ($this->form_validation->run() == true) { - // check for "remember me" - $remember = (boolean) $this->input->post('remember'); + if ($this->access->login($this->input->post('username'), $this->input->post('password'), $remember)) { + $this->data['success'] = true; + } else { // if the login was un-successful + $this->data['success'] = false; + $this->data['message'] = $this->access->errors(); + } - if ($this->access->login($this->input->post('username'), $this->input->post('password'), $remember)) { - $this->data['success'] = true; - } else { // if the login was un-successful - $this->data['success'] = false; - $this->data['message'] = $this->access->errors(); - } + // output JSON data + $this->output->set_content_type('application/json') + ->set_output(json_encode($this->data)); + } else { + $this->data['message'] = validation_errors() ? validation_errors() : null; + $this->data['username'] = $this->form_validation->set_value('username'); - // output json data - $this->output->set_content_type('application/json') - ->set_output(json_encode($this->data)); - } else { - $this->data['message'] = validation_errors() ? validation_errors() : null; - $this->data['username'] = $this->form_validation->set_value('username'); + $this->load->view('auth/login', $this->data); + } + } - $this->load->view('auth/login', $this->data); - } - } + /** + * Logs the user out. + */ + public function logout() { + $logout = $this->access->logout(); - /** - * Logs the user out. - */ - public function logout() { - $logout = $this->access->logout(); - redirect('auth'); - } + // output JSON data + $this->output->set_content_type('application/json') + ->set_output(json_encode(array('success' => true))); + } - /** - * Allows users to register. - */ - public function register() { - if ($this->access->loggedIn()) { - redirect('welcome'); - } + /** + * Allows users to register. + */ + public function register() { + if ($this->access->loggedIn()) { + redirect('welcome'); + } - // validate form input - $this->form_validation->set_rules('username', "Username", 'required'); - $this->form_validation->set_rules('realname', "Realname", 'required'); - $this->form_validation->set_rules('email', "Email address", 'required|valid_email'); - $this->form_validation->set_rules('password', "Password", 'required|min_length[' . $this->config->item('min_password_length', 'access') . ']|max_length[' . $this->config->item('max_password_length', 'access') . ']|matches[password_confirm]'); - $this->form_validation->set_rules('password_confirm', "Password confirmation", 'required'); + // validate form input + $this->form_validation->set_rules('username', "Username", 'required'); + $this->form_validation->set_rules('realname', "Realname", 'required'); + $this->form_validation->set_rules('email', "Email address", 'required|valid_email'); + $this->form_validation->set_rules('password', "Password", 'required|min_length[' . $this->config->item('min_password_length', 'access') . ']|max_length[' . $this->config->item('max_password_length', 'access') . ']|matches[password_confirm]'); + $this->form_validation->set_rules('password_confirm', "Password confirmation", 'required'); - if ($this->form_validation->run() == true) { - $username = $this->input->post('username'); - $email = $this->input->post('email'); - $password = $this->input->post('password'); + if ($this->form_validation->run() == true) { + $username = $this->input->post('username'); + $email = $this->input->post('email'); + $password = $this->input->post('password'); - $additional_data = array( + $additional_data = array( 'realname' => $this->input->post('realname'), - ); - } + ); + } - if ($this->form_validation->run() == true && $this->access->register($username, $password, $email, $additional_data)) { - // redirect them to the login page - $this->session->set_flashdata('message', "Registration successful"); - redirect('auth/register_success'); - } else { - // set the flash data error message if there is one - $this->data['message'] = validation_errors() ? validation_errors() : ($this->access->errors() ? $this->access->errors() : $this->session->flashdata('message')); - $this->data['username'] = $this->form_validation->set_value('username'); - $this->data['email'] = $this->form_validation->set_value('email'); - $this->data['realname'] = $this->form_validation->set_value('realname'); - $this->data['password'] = $this->form_validation->set_value('password'); - $this->data['password_confirm'] = $this->form_validation->set_value('password_confirm'); - $this->load->view('auth/register', $this->data); - } - } + if ($this->form_validation->run() == true && $this->access->register($username, $password, $email, $additional_data)) { + // redirect them to the login page + $this->session->set_flashdata('message', "Registration successful"); + redirect('auth/register_success'); + } else { + // set the flash data error message if there is one + $this->data['message'] = validation_errors() ? validation_errors() : ($this->access->errors() ? $this->access->errors() : $this->session->flashdata('message')); + $this->data['username'] = $this->form_validation->set_value('username'); + $this->data['email'] = $this->form_validation->set_value('email'); + $this->data['realname'] = $this->form_validation->set_value('realname'); + $this->data['password'] = $this->form_validation->set_value('password'); + $this->data['password_confirm'] = $this->form_validation->set_value('password_confirm'); + $this->load->view('auth/register', $this->data); + } + } - public function register_success() { - $this->load->view('auth/register_success', $this->data); - } + /** + * Allows users to edit their settings. + */ + public function settings() { + if (!$this->access->loggedIn()) { + redirect('auth/login', 'refresh'); + } - public function settings() { - if (!$this->access->loggedIn()) { - redirect('auth/login', 'refresh'); - } + // validate the form + $this->form_validation->set_rules('new_password', 'New Password', 'min_length[' . $this->config->item('min_password_length', 'auth') . ']|max_length[' . $this->config->item('max_password_length', 'access') . ']|matches[new_password_confirm]'); - // validate form - $this->form_validation->set_rules('new_password', 'New Password', 'min_length[' . $this->config->item('min_password_length', 'auth') . ']|max_length[' . $this->config->item('max_password_length', 'access') . ']|matches[new_password_confirm]'); + if ($this->form_validation->run() == true) { + // change password if needed + if ($this->input->post('new_password') != '') { + $username = $this->session->userdata('username'); + $change = $this->access->changePassword($username, $this->input->post('old_password'), $this->input->post('new_password')); - if ($this->form_validation->run() == true) { - // change password if needed - if ($this->input->post('new_password') != '') { - $username = $this->session->userdata('username'); - $change = $this->access->changePassword($username, $this->input->post('old_password'), $this->input->post('new_password')); + if ($change) { + $this->logout(); + } + } - if ($change) { - $this->logout(); - } - } - - // update user - $updateData = array( + // update user + $updateData = array( 'firstname' => $this->input->post('firstname'), 'lastname' => $this->input->post('lastname'), 'institution' => $this->input->post('institution'), 'phone' => $this->input->post('phone'), 'email' => $this->input->post('email'), - ); - $this->access->updateUser($this->session->userdata('user_id'), $updateData); + ); + $this->access->updateUser($this->session->userdata('user_id'), $updateData); - echo "{success: true}"; - } else { - $this->data['success'] = true; - $this->data['data'] = $this->access->getCurrentUser(); + // output JSON data + $this->output->set_content_type('application/json') + ->set_output(json_encode(array('success' => true))); + } else { + $data['success'] = true; + $data['data'] = $this->access->getCurrentUser(); - // output json data - $this->output->set_content_type('application/json') - ->set_output(json_encode($this->data)); - } - } + // output JSON data + $this->output->set_content_type('application/json') + ->set_output(json_encode($data)); + } + } - //forgot password - public function forgot_password() { - $this->form_validation->set_rules('email', 'Email Address', 'required'); - if ($this->form_validation->run() == false) { - //setup the input - $this->data['email'] = array('name' => 'email', + /** + * Allows users to request a new password. + */ + public function forgot_password() { + $this->form_validation->set_rules('email', 'Email Address', 'required'); + if ($this->form_validation->run() == false) { + //setup the input + $this->data['email'] = array('name' => 'email', 'id' => 'email', - ); - //set any errors and display the form - $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message'); - $this->load->view('auth/forgot_password', $this->data); - } else { - //run the forgotten password method to email an activation code to the user - $forgotten = $this->access->forgotten_password($this->input->post('email')); + ); + //set any errors and display the form + $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message'); + $this->load->view('auth/forgot_password', $this->data); + } else { + //run the forgotten password method to email an activation code to the user + $forgotten = $this->access->forgotten_password($this->input->post('email')); - if ($forgotten) { //if there were no errors - $this->session->set_flashdata('message', $this->access->messages()); - redirect("auth/login", 'refresh'); //we should display a confirmation page here instead of the login page - } else { - $this->session->set_flashdata('message', $this->access->errors()); - redirect("auth/forgot_password", 'refresh'); - } - } - } + if ($forgotten) { //if there were no errors + $this->session->set_flashdata('message', $this->access->messages()); + redirect("auth/login", 'refresh'); //we should display a confirmation page here instead of the login page + } else { + $this->session->set_flashdata('message', $this->access->errors()); + redirect("auth/forgot_password", 'refresh'); + } + } + } - //reset password - final step for forgotten password - public function reset_password($code) { - $reset = $this->access->forgotten_password_complete($code); + /** + * Final step for forgotten password. + */ + public function reset_password($code) { + $reset = $this->access->forgotten_password_complete($code); - if ($reset) { //if the reset worked then send them to the login page - $this->session->set_flashdata('message', $this->access->messages()); - redirect('auth/login'); - } else { //if the reset didnt work then send them back to the forgot password page - $this->session->set_flashdata('message', $this->access->errors()); - redirect('auth/forgot_password'); - } - } + if ($reset) { //if the reset worked then send them to the login page + $this->session->set_flashdata('message', $this->access->messages()); + redirect('auth/login'); + } else { //if the reset didnt work then send them back to the forgot password page + $this->session->set_flashdata('message', $this->access->errors()); + redirect('auth/forgot_password'); + } + } - public function test() { - echo "{xtype: 'form', title: 'Bla'}"; - } } /* End of file auth.php */ diff --git a/application/views/header.php b/application/views/header.php index d720a47..26f60c7 100644 --- a/application/views/header.php +++ b/application/views/header.php @@ -24,7 +24,7 @@ =img(array('src' => 'assets/images/logo.png', 'style' => 'margin-left: 5px'));?>