1

I'm making a call to Magento API and I need to save the current admin id

POST /rest/V1/precart/create HTTP/1.1
Host: magento2.local
Content-Type: application/json
Authorization: Bearer 59f6t7aso8a37g1hxbkd5ol0pem3cd3b
Cache-Control: no-cache
Postman-Token: 7456cf04-634e-4f6f-acb9-c85ca18d849a

{
    "preCart" : {
        "sku": "123",
    }
}

I tried some suggestions, but I think this only work with normal site session. How I do this by API?

protected $_authSession;
public function __construct(
    \Magento\Backend\Model\Auth\Session $authSession,
    ...
)
{
    $this->_authSession = $authSession;
    ...
}

/**
 * Processing data before model save
 *
 * @return $this
 */
public function beforeSave()
{    
    if (empty($this->getUserId()) && $user = $this->getCurrentUser()) {
        $this->setUserId($user->getId());
    }

    return parent::beforeSave();
}
/**
 * @return \Magento\User\Model\User|null
 */
public function getCurrentUser()
{
    return $this->_authSession->getUser();
}

1 Answer 1

3

We can do this using the user context.

User context store all user authentication types and returns the used.

See at: CompositeUserContext.php

How to use:

/**
 * @var \Magento\Authorization\Model\UserContextInterface 
 */
protected $_userContext;

/**
 * constructor.
 * @param \Magento\Authorization\Model\UserContextInterface $userContext
 */
public function __construct(
    \Magento\Authorization\Model\UserContextInterface $userContext,
)
{
    $this->_userContext = $userContext;
    parent::__construct();
}

/**
 * @return int
 */
public function getCurrentUserId()
{
    return $this->_userContext->getUserId();
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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