Foren

PermissionThreadLocal.getPermissionChecker() returns null

Markus awdawdawd, geändert vor 10 Jahren.

PermissionThreadLocal.getPermissionChecker() returns null

New Member Beitrag: 1 Beitrittsdatum: 18.03.14 Neueste Beiträge
Hello i have a problem while deleting portlets programmatically
The following code runs as expected until the line layoutTypePortlet.removePortletId(defaultUser, iterNext) stops with a nullpointer exception.

LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();
				List<string> portletsIds = layoutTypePortlet.getPortletIds();
				_log.info("Start page portlet ids: " + portletsIds.size());
				Iterator<string> iter = portletsIds.iterator();
				long defaultUser = UserLocalServiceUtil.getDefaultUserId(companyId);
				try {
					while (iter.hasNext()) {
						String iterNext = (String) iter.next();
						[b]layoutTypePortlet.removePortletId(defaultUser, iterNext)[/b]
					}
</string></string>
;

I debugged the liferay code and found that the removePortletId method in class com.liferay.portal.model.impl.LayoutTypeImpl calls
 
PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker();
if (!LayoutPermissionUtil.contains(permissionChecker, getLayout(), ActionKeys.UPDATE) &amp;&amp; !isCustomizable()) {
reutrn; }


The problem is that PermissionThreadLocal.getPermissionChecker(); returns null and the next line fails.

What could be the reason for that behavior ?
thumbnail
Zsigmond Rab, geändert vor 10 Jahren.

RE: PermissionThreadLocal.getPermissionChecker() returns null

Liferay Master Beiträge: 727 Beitrittsdatum: 05.01.10 Neueste Beiträge
Hi Markus,

from where do you call that removePortletId method exactly? What is the context?

I'm asking because it counts for the permissionChecker.

Regards,
Zsigmond
Abderrazak Abidallah, geändert vor 8 Jahren.

RE: PermissionThreadLocal.getPermissionChecker() returns null

New Member Beiträge: 4 Beitrittsdatum: 05.06.13 Neueste Beiträge
Hi,
I have the same problem and the context is on a service builder call.

I set the permissioncheker like this
Role adminRole = RoleLocalServiceUtil.getRole(sc.getCompanyId(), "Administrator");
List<User> adminUsers = UserLocalServiceUtil.getRoleUsers(adminRole.getRoleId());

PrincipalThreadLocal.setName(adminUsers.get(0).getUserId());
PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(adminUsers.get(0));

PermissionThreadLocal.setPermissionChecker(permissionChecker);

Did you have a issue ?

Regards