Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

CQ Hybris connector always adds to anonymous user cart instead of current logged in CQ user cart.

Avatar

Level 2

Hi Guys,

I am using CQ-Hyrbis connector version 5.6.2 ( cq-commerce-hybris-impl-5.6.2.jar ) and Hybris version is 5.0.4.

When ever I add any thing to cart it always add to anonymous user cart instead of current logged in CQ user cart.

I suspect there is some issue in BasicAuthHandler implemented in connector which is not authenticating users correctly and it always gets anonymous user session from Hybris.

Also authenticateUser method implementation is not calling any web service that actually authenticates user instead it just returns credentials.

    public Map<String, String> authenticateUser(String username, String password) {
      
        final Map<String, String> authData = new HashMap<String, String>();
        authData.put(KEY_SESSION_USERNAME, username);
        try {
            authData.put(KEY_PASSWORD, crypto.protect(password));
        } catch (CryptoException e) {
            log.error("Could not encrypt password!");
            return null;
        }
        return authData;
    }

Appreciate if any one can give some pointers to fix the issue.

Thanks,

Madhav

1 Accepted Solution

Avatar

Correct answer by
Level 10

AFAIK you need custom sling authentication handler at your project to convert anonymous cart to authenticated user.

View solution in original post

3 Replies

Avatar

Employee

Madhav,

If you are using CQ-Hybris Package 5.6.200, please look into OAuthHandler which is the primary AuthenticationHandler which is involved in Authenticating User's (authenticateUser) and Authenticating Sessions (authenticateSession).

The connector currently doesn't transfer a cart from a anonymous user to a authenticated user. To implement this functionality you would need to extend OauthHandler.authenticateUser() to pass in the JSESSIONID of the Hybris Session from DefaultHybrisService.signUp (which also needs to be extended).

Furthermore, make sure to extend OAUthHandler.authenticateSession() to pass the sessionId as JSESSIONID into header of the request.

Cheers

V

Avatar

Level 2

Hi Varun,

Thanks !

Can you please post some code snippets if you have, it would be really helpful.

Thanks,

Madhav

Avatar

Correct answer by
Level 10

AFAIK you need custom sling authentication handler at your project to convert anonymous cart to authenticated user.