views:

198

answers:

2

in the project I'm creating I need to check if the user is logged in or not, the tutorials I have seen do explain how to authenticate in the controllers and give access to a page or not. But I want all the pages to be visible to everyone but only show certain options if a user is logged in or not.

something like this in the views

if(is_logged_in()):
//some options here
else:
echo "you need to login to have more options";
endif;

so where should I add this code? in the helper folder?

EDIT: I'm now checking in the views like this, it works but I don't know if it's a best practice. The 'is_logged_in' is something I set to true when the credentials were validated

if($this->session->userdata('is_logged_in'))

EDIT:

so if I make a helper to call that function. Can I check using the userdata function?

this is the function that creates the session

$data = array(
    'username' => $this->input->post('username'),
    //usertype toevoegen hier
    //email toevoegen
    //deposit money
    'is_logged_in' => true
    );
$this->session->set_userdata($data);

How could I used the session data in the function in my helper file?

A: 

It would be fine to add it into the view, and this is presentation logic.

GSto
yes but the function to authenticate, where should I put it so it's available everywhere??
krike
ah, then either in the helper folder, or as a function of the session/user model.
GSto
+2  A: 

If you want to have it as a stand-alone function that you can call from anywhere then you are best making it an helper. It might be helpful to think of helpers as the blades of a swiss army knife in your CodeIgniter toolbox.

That way you can change your checks later, move things all around, and still be making calls to isloggedin(). However, both ways work. $this->user->isloggedin() is slightly more verbose, but presents the same useful separation of concerns.

EDIT:

If you want to make calls to your session data in a helper, the way to do that is via get_instance().

In the beginning of your helper file, do this: $CI =& get_instance();

function user_logged_in() {
    $CI =& get_instance();
    // Do what you want to do with session.
    // Simply replace $this->session ... etc. with
    // $CI->session ... etc.
...
}
Sean Vieira
thanks, but I just check in the views because in the helper I get a warning that I cant use $this in a non-object... so this is the code I use in the views; if($this->session->userdata('is_logged_in'))
krike
I updated my question, if you could help me on that matter. thanks
krike
@krike -- I've updated it. Let me know if this helps.
Sean Vieira