Featured post

Docker setup for Liferay 7 with MySQL

Tuesday, 15 May 2012

LDAP Group import fails if email address is null for a user


Context: 
We are trying to import users based on specific groups.

Our Import Search Filter is set properly -

The issue one facing is for one user the email address is not set. So the import is failing.

Question :
Ideally it should skip that user and import the other users but the whole process fails.


Answer :
Here is a response to that question.  It is not a bug.  In order for a user to be authenticated in the
Liferay Portal, five pieces of user data are needed.  Without these, user authentication will fail.

They are:

1.  Screen name
2.  First name
3.  Last name
4.  Email
5.  Password



Resolution :
 So in this case, you need to set:

     users.email.address.required=true to "false."
     users.email.address.auto.suffix=@no-emailaddress.com

If require, please take reference from portal.properties in Liferay Source or leave a comment here.

You are just done, Try & Enjoy the function.............:))


Liferay authentication fails for screen name authentication when "mail" attribute is not set in LDAP (AD)



Context : 
1) A valid user in Active Directory exists
2) The "mail" entry is missing in the Active Directory for the user
3) The authentication is set by Screen Name

When tries to login, the authentication fails. This issue is not occurring in other applications using Active Directory

Question :
If it is intended behavior for authentication to fail if email is not configured in LDAP. Is this correct?  If so,

Answer :
Here is a response to that question.  It is not a bug.  In order for a user to be authenticated in the
Liferay Portal, five pieces of user data are needed.  Without these, user authentication will fail.

They are:

1.  Screen name
2.  First name
3.  Last name
4.  Email
5.  Password


Problem :
In My Company all the accounts do not have “mail” attribute set in LDAP. None of the other application has any issue with this. These application can authenticate for all the users. If this is a requirement from liferay that all the users should have their “mail” set in LDAP, that would be a major task.

If the validation is through screen-name. So mail should not be mandatory.

Resolution :
 So in this case, you need to set:

      users.email.address.required=true to "false."
 
    #
        # Set this to false if you want to be able to create users without an email
        # address. An email address will be automatically assigned to a user based
        # on the property "users.email.address.auto.suffix".
        #
        users.email.address.required=true

Also, notice this following property from portal.properties.

You can set the suffix of the email address that you desire to be generated for a user who does not have an email address.  This can only be used if the previous property  is set to false.
 
        #
        # Set the suffix of the email address that will be automatically generated
        # for a user that does not have an email address. This property is not used
        # unless the property "users.email.address.required" is set to false. The
        # autogenerated email address will be the user id plus the specified suffix.
        #

        users.email.address.auto.suffix=@no-emailaddress.com


You are just done, Try & Enjoy the function.............:))

Monday, 9 April 2012

Unable to create friendly url mapping with javascript in Liferay



I've set up friendly URL routing for my Liferay portlet, and it's working fine when I generate URLs with the standard JSP tags like so:
<portlet:renderURL var="resetUrl">
    <portlet:param name="start" value="5" />
</portlet:renderURL>
which, given my mapping, produces a lovely URL like:
localhost:8080/web/guest/welcome/-/myportlet/5
But when I generate URLs using the JavaScript PortletURL module, I get the full unfriendly URL. For instance:
var filterUrl = Liferay.PortletURL.createRenderURL();
filterUrl.setPortletId("<%= portletDisplay.getId() %>");
filterUrl.setParameter("start", "5");
location.href = filterUrl;
will generate
localhost:8080/web/guest/welcome?p_p_id=myportlet_WAR_MyPortletportlet&p_p_lifecycle=0&myportlet_WAR_MyPortletportlet_start=5
So the question is: How can I generate friendly URLs from JavaScript?


Solution : Here is the Hack - Just give it a try
<portlet:renderURL var="resetUrl">
    <portlet:param name="start" value="changeStart" />
</portlet:renderURL>
then write javascript and replace param values like this -
function createStart(copyNavigationPointURL) {
    var start = document.getElementById("navigationPointId").value;

    copyNavigationPointURL = copyNavigationPointURL.replace(/changeStart/i,start);
    submitForm(document.hrefFm, copyNavigationPointURL);
}
And you have your friendly url ....
localhost:8080/web/guest/welcome/-/myportlet/5

Your are just done, Try & Enjoy the function.....:)