cancel
Showing results for 
Search instead for 
Did you mean: 

User not getting saved in MongoDb using UserManager service

Ritesh_Kumar
Champ in-the-making
Champ in-the-making

I have made a custom login plugin, where for the time being I am testing user creation in the handleRetrieveIdentity() method of the Authenticator.

I am currently doing the following to save a user.

UserManager userManager = Framework.getService(UserManager.class);
NuxeoPrincipal principal = userManager.getPrincipal(user.getEmail());
if (principal == null) {
    logger.debug("principal was null. creating a new user for email id {}",user.getEmail());
    DocumentModel userDocModel = userManager.getBareUserModel();
    userDocModel.setProperty("user", "username", user.getEmail());
    userDocModel.setProperty("user", "email", user.getEmail());
    userDocModel.setProperty("user", "password", "fakepassword" + new Random().nextInt());
    //userDocModel.setProperty("user", "groups", groups);
    userManager.createUser(userDocModel);
}

But this is not saving the user in the mongo collection userDirectory where the other predefined users reside. What could I be doing wrong here?

Edit:

I debugged the code and saw that the error was at createUser(userDocModel) call. To create a user the MongoDbSession's inherited method createEntry() checks for permission with the call checkPermission(SecurityConstants.WRITE);, which goes to this piece of code.

public void checkPermission(String permission) {    
	if (hasPermission(permission)) {       
		 return;    
	}    
	if (permission.equals(SecurityConstants.WRITE) && isReadOnly()) { 
	       throw new DirectorySecurityException("Directory is read-only");    
	} else {        
		NuxeoPrincipal user = ClientLoginModule.getCurrentPrincipal();    
	        throw new DirectorySecurityException("User " + user + " does not    have " + permission + " permission");    
}

In my case, the control goes to the line NuxeoPrincipal user = ClientLoginModule.getCurrentPrincipal(); which returns null and then exception is thrown. Thus, since the null user is denied to create any user entry. So, now I know the problem, but how do I fix it. Since I am trying to login, I wont have any user logged-in in the first place. Any help is highly appreciated.

0 REPLIES 0
Getting started

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.