How can I determine programatically whether the current user is anonymous or authenticated?
For the sake of more robust and descriptive code, you can make use of the handy User::isAnonymous()
method, e.g.
if (\Drupal::currentUser()->isAnonymous()) {
// Anonymous user...
}
-
2Whenever possible, use methods like this: program to the interface not the implementation. Using an IDE w/ code completion is invaluable for Drupal 8 work. – mpdonadio♦ Feb 2 '15 at 15:39
-
3For anyone else who comes across this, note that \Drupal::currentUser()->isAuthenticated() is the equivalent of D7 user_is_logged_in() – Jaypan Jan 16 '17 at 8:13
-
I created a custom module and I can't get this function to work. Is there something additional I need to add in my module? Thank you in advance. – SuperTony May 30 '19 at 23:04
$current= \Drupal::currentUser();
if (!$current->id()) {
// is visitor
}
else {
// is logged
}
isAnonymous()
holds the danger of not working when a site is saving data (for example in forms) in PrivateTempStore
. Therefore, i prefer the following:
if (\Drupal::currentUser()->isAuthenticated()) {
// This user is logged in.
} else {
// This user is anonymous.
}
U can use this code::
global $user;
if ($user->uid == 0) {
//user is not logged in
}else{
//user is logged in
}
-
2
-
1Yeah and use === for strict comparison and put space before and after your else for coding standards :/ – klidifia Jul 9 '19 at 4:45