2

I have the following code in my module:

<?php

function MODULENAME_init() {
        if (!user_is_logged_in()) {
                global $user;
                $user = user_load(31);
                user_login_finalize();
        }
}

Purpose of this code is to log in all anonymous user as user with id 31. But with this code i can't even logout correctly:

if (user_is_logged_in() && request_uri() == '/user') {
    user_logout();
}

After i am visiting http://ggames.kz/user i am getting redirected back to the main page and so i am logged again as user 31. I want to log out any user when he's requesting http://ggames.kz/user and show a login form in order to log in as user with id 1.

3
  • I guess, your code in hook_init is the reason you can't log out. Because once you logout, it log in you back. Feb 2 '16 at 6:21
  • 1
    The really interesting question is, why the auto-login is necessary? Maybe it's possible to find a better solution for this, once being able to understand your intentions on auto-login. Feb 2 '16 at 6:53
  • Also, notice that ggames.kz/user is used from users to access their user page.
    – apaderno
    Feb 2 '16 at 6:54
8

You need to change your hook code.

function MODULENAME_init() {
  if (!user_is_logged_in() && request_uri() != '/user') {
    // Log in the user as user #31.
  }
  elseif (user_is_logged_in() && request_uri() == '/user') {
    module_load_include('pages.inc', 'user');
    user_logout();
  }
}

Since user_logout() is defined in modules/user/user.pages.inc, you need to first load that file, and then call that function, or you will get an error about a not defined function. You don't need to first check the file has been already included, since it will not be included twice.

Keep in mind that http://ggames.kz/user could be directly accessed from users to see their user page, and that Drupal redirect logged-in users who try to access http://ggames.kz/user/login to http://ggames.kz/user.

4
  • Thanks, i am awared about this. Now when i visit ggames.kz/user (first time it loads as expected - auth form) second time - i am getting an error "Fatal error: Call to undefined function user_logout()" Feb 2 '16 at 8:04
  • Right, I forgot the function is not defined in a module.
    – apaderno
    Feb 2 '16 at 8:08
  • @kiamlaluno Your load is off a bit, should be module_load_include('inc', 'user', 'user.pages');
    – Clive
    Feb 2 '16 at 8:52
  • @Clive Yep, I inverted two arguments. But I could also use module_load_include('pages.inc', 'user').
    – apaderno
    Feb 2 '16 at 9:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.