CodeIgniter_Gforms/application/controllers/Users.php

163 lines
4.8 KiB
PHP

<?php
class Users extends CI_Controller{
// Register user
public function register(){
$data['title'] = 'Sign Up';
$this->form_validation->set_rules('name', 'Name', 'required');
$this->form_validation->set_rules('username', 'Username', 'required|callback_check_username_exists');
$this->form_validation->set_rules('email', 'Email', 'required|callback_check_email_exists');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('password2', 'Confirm Password', 'matches[password]');
if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');
$this->load->view('users/register', $data);
$this->load->view('templates/footer');
} else {
// Encrypt password
$enc_password = md5($this->input->post('password'));
$this->user_model->register($enc_password);
// Set message
$this->session->set_flashdata('user_registered', 'You are now registered and can log in');
redirect('pages');
}
}
// Log in user
public function login($form_id = null) {
$data['title'] = 'Sign In';
$data['form_id'] = $form_id;
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() === FALSE) {
$this->load->view('templates/header');
$this->load->view('users/login', $data);
$this->load->view('templates/footer');
} else {
// Get username
$username = $this->input->post('username');
// Get and encrypt the password
$password = md5($this->input->post('password'));
// Login user
$user_id = $this->user_model->login($username, $password);
if ($user_id) {
// Create session
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true
);
$this->session->set_userdata($user_data);
// Set message
$this->session->set_flashdata('user_loggedin', 'You are now logged in');
// Redirect to the form response page if form ID is provided
if ($form_id) {
redirect('forms/respond/' . $form_id);
} else {
redirect('pages');
}
} else {
// Set message
$this->session->set_flashdata('login_failed', 'Login is invalid');
redirect('users/login');
}
}
}
// Log user out
public function logout(){
// Unset user data
$this->session->unset_userdata('logged_in');
$this->session->unset_userdata('user_id');
$this->session->unset_userdata('username');
// Set message
$this->session->set_flashdata('user_loggedout', 'You are now logged out');
redirect('users/login');
}
// Check if username exists
public function check_username_exists($username){
$this->form_validation->set_message('check_username_exists', 'That username is taken. Please choose a different one');
if($this->user_model->check_username_exists($username)){
return true;
} else {
return false;
}
}
// Check if email exists
public function check_email_exists($email){
$this->form_validation->set_message('check_email_exists', 'That email is taken. Please choose a different one');
if($this->user_model->check_email_exists($email)){
return true;
} else {
return false;
}
}
// Log in user with redirection
// Log in user with redirection
public function login_redirect($form_id = null) {
$data['title'] = 'Sign In';
$data['form_id'] = $form_id;
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() === FALSE) {
$this->load->view('templates/header');
$this->load->view('users/login', $data);
$this->load->view('templates/footer');
} else {
// Get username
$username = $this->input->post('username');
// Get and encrypt the password
$password = md5($this->input->post('password'));
// Login user
$user_id = $this->user_model->login($username, $password);
if ($user_id) {
// Create session
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true
);
$this->session->set_userdata($user_data);
// Set message
$this->session->set_flashdata('user_loggedin', 'You are now logged in');
// Redirect to the form response page if form ID is provided
if ($form_id) {
redirect('forms/respond/' . $form_id);
} else {
redirect('pages');
}
} else {
// Set message
$this->session->set_flashdata('login_failed', 'Login is invalid');
redirect('users/login');
}
}
}
}