How to check if the customer is logged in or not in Magento 2?

Jun 12th, 2018 3 min to read

There are some functionalities that we want only the logged-in customers to have access to.  In order to achieve this, there must be some way to check if a customer is logged in or not.

There are two ways by which you can check if a customer is logged in or not:

1) By using Object Manager

It is always a bad practice to use ObjectManager directly.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
	$customerSession = $objectManager->get('Magento\Customer\Model\Session');
	if($customerSession->isLoggedIn()) {
	   // customer login action
	}

2) By Injecting Class (Dependency Injection)

As said earlier, it is one of the worst practices to use the ObjectManager directly. Therefore an alternate way to check if a user is logged in or not is by using the following code in any class except the template files:

You first need to inject the following class in your constructor: 
/Magento/Customer/Model/Session

protected $_session;

	public function __construct(
	    ...
	    \Magento\Customer\Model\Session $session,
	    ...
	) {
	    ...
	    $this->_session = $session;
	    ...
	}

Then you need to use Magento\Customer\Model\Session::isLoggedIn() to check if the customer is logged in or not.

if ($this->_session->isLoggedIn()) {
	    // Customer is logged in 
	} else {
	    // Customer is not logged in
	}

FAQs

How to login customer programmatically in Magento 2?


To log in to the customer programmatically, retrieve the customer object using the customer ID or email using CustomerRepositoryInterface
$customer = $this->_customerRepository->getById($customerId);
                                                   Or
$customer = $this->_customerRepository->get($customerEmail);
Next, use the Magento\Backend\Model\Auth\Session class to set the customer’s session as the current session.
$this->_authSession->setCustomerAsLoggedIn($customer);
Further, redirect the customer to the desired page – $this->_redirect(‘customer/account’);

How can I get customer data using customer ID in Magento 2?


To get customer data by using the customer’s ID, follow the below-mentioned steps –
1. Create an instance of the Magento\Customer\Api\CustomerRepositoryInterface class.
2. Next, use the getById method to retrieve customer data by ID. This method takes one argument, the customer ID, and returns a customer interface object.
3. Further, you can access the customer data using the getter methods provided by the customer interface.

How do I find the customer list in Magento 2?


To find the customer list in Magento 2 use class, follow the below-mentioned steps 
1. Create an instance of the Magento\Customer\Model\ResourceModel\Customer\Collection class.
$customerCollection = $this->_customerCollectionFactory->create();
2. If required, add filters or sorting to the collection by using the following code.
$customerCollection->addFieldToFilter('email', ['like' => '%@example.com']);
$customerCollection->setOrder('created_at', 'DESC');

3. Next, load the collection by calling the load function.
$customerCollection->load();
4. Now, iterate over the collection to get the customer data
foreach ($customerCollection as $customer)
 {
  echo $customer->getId() . '-' . $customer->getName();
}

How can I activate customer account in Magento 2?


To activate a customer account in Magento 2, follow the below-mentioned steps –
1. Log in to the Admin Panel and go to Stores —> Settings —> Configuration.
2. Navigate the left panel & expand Customers.
3. Next, select Login as Customer.
4. Further from the dropdown list, select – 
Yes for Enable Extension 
No for Disable Page Cache For Admin User
Auto-Detection (default) for Set Store View to Log and tick mark Use System Value
5. Thereafter, click on Save Config.

Speak your Mind

Post a Comment

Got a question? Have a feedback? Please feel free to leave your ideas, opinions, and questions in the comments section of our post! ❤️

* This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Grow your online business like 3,207 subscribers

    * This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
    envelope

    Thank You!

    We are reviewing your submission, and will be in touch shortly.