Chief Makii
Chief Makii

Reputation: 121

Codeigniter 3 MY_Controller

I have this on my MY_Controller that was located on my core folder.

<?php
class MY_Controller extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
    }

    public function is_logged_in($data){    
        $session = $this->session->userdata();
        if($session['isloggedin']['username'] == ''){ 
        return isset($session); 
        }else{ 
        return FALSE;}  
    }
}
?>

I'm pretty sure i copy pasted the above code from some tutorial and i haven't gotten to editing it based on my needs.

Any case i have questions.

So i have a pages controller that will be responsible for giving access to some views depending on the account_type of the logged in user.

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class pages extends MY_Controller {


}?>

this is my session whenever a user logs in.

    $new_session = array( 'username' => $this->input->post('username'),
                          'email' => $this->input->post('email'),
                          'type' => $this->input->post('type'),
                          'logged_in' => TRUE);
    $this->session->set_userdata($new_session);

How do i call the MY_controller function is_logged_in() from the pages controller or is the 'extends MY_Controller' automatically also calls the function is_logged_in() or do i have to basically just put it in a __construct so it automatically calls the function?

Also, how do i go about checking if a user is logged in and seeing their details?

Do i pass session_data from my controller to MY_Controller? if so, how?

Or should i just put a $this->session->userdata(); line inside the is_logged_in() function?

P.S. i have tried using Authentication Libraries but they include far too much to what i need, i just need a basic authentication. Any suggestions? that is still maintained right now.

Upvotes: 1

Views: 2640

Answers (1)

loki9
loki9

Reputation: 625

you can directly call is_logged_in() function from your pages controller. just like this:

Pages.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Pages extends MY_Controller {
    function __construct() {
       parent::__construct(); // this will trigger the __construct() of MY_Controller 
    }

}

MY_Controller.php

<?php
class MY_Controller extends CI_Controller{
    public function __construct() {
      parent::__construct();
      if( $this->is_logged_in() ) {
         // do something if user is allowed to access.
      }
      else {
        // do something if user is not allowed to access
      }

    }
}

Upvotes: 2

Related Questions