/plugins/userdata-widget/src/main/java/pl/net/bluesoft/rnd/pt/ext/userdata/widget/LiferayUserDataWidget.java

https://github.com/bluesoft-rnd/aperte-workflow-core · Java · 160 lines · 131 code · 26 blank · 3 comment · 3 complexity · 48cfa940349ff17356db3cd53ee5a588 MD5 · raw file

  1. package pl.net.bluesoft.rnd.pt.ext.userdata.widget;
  2. import com.liferay.portal.model.Role;
  3. import com.liferay.portal.model.User;
  4. import com.liferay.portal.security.permission.PermissionChecker;
  5. import com.liferay.portal.security.permission.PermissionThreadLocal;
  6. import com.liferay.portal.service.RoleServiceUtil;
  7. import com.liferay.portal.service.UserServiceUtil;
  8. import com.liferay.portal.util.PortalUtil;
  9. import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AliasName;
  10. import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AperteDoc;
  11. import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AutoWiredProperty;
  12. import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.WidgetGroup;
  13. import javax.portlet.PortletRequest;
  14. import java.util.Collection;
  15. import java.util.HashSet;
  16. /**
  17. * @author tlipski@bluesoft.net.pl
  18. */
  19. @AliasName(name="LiferayUserData")
  20. @WidgetGroup("userdata-widget")
  21. public class LiferayUserDataWidget extends UserDataWidget {
  22. @AutoWiredProperty
  23. @AperteDoc(
  24. humanNameKey = "userdata.widget.liferay.liferayRoleName",
  25. descriptionKey = "userdata.widget.liferay.liferayRoleName.description"
  26. )
  27. public String liferayRoleName = "User";
  28. @Override
  29. protected Collection<UserData> getUsers() {
  30. try {
  31. final PermissionChecker oldChecker = PermissionThreadLocal.getPermissionChecker();
  32. try {
  33. PermissionThreadLocal.setPermissionChecker(new PermissionChecker() { //TODO not the best way to do it?
  34. @Override
  35. public long getCompanyId() {
  36. return oldChecker.getCompanyId();
  37. }
  38. @Override
  39. public long getOwnerRoleId() {
  40. return oldChecker.getOwnerRoleId();
  41. }
  42. @Override
  43. public long[] getRoleIds(long userId, long groupId) {
  44. return oldChecker.getRoleIds(userId, groupId);
  45. }
  46. @Override
  47. public long getUserId() {
  48. return oldChecker.getUserId();
  49. }
  50. @Override
  51. public boolean hasOwnerPermission(long companyId, String name, long primKey, long ownerId, String actionId) {
  52. return true;
  53. }
  54. @Override
  55. public boolean hasOwnerPermission(long companyId, String name, String primKey, long ownerId, String actionId) {
  56. return true;
  57. }
  58. @Override
  59. public boolean hasPermission(long groupId, String name, long primKey, String actionId) {
  60. return true;
  61. }
  62. @Override
  63. public boolean hasPermission(long groupId, String name, String primKey, String actionId) {
  64. return true;
  65. }
  66. @Override
  67. public boolean hasUserPermission(long groupId, String name, String primKey, String actionId, boolean checkAdmin) {
  68. return true;
  69. }
  70. @Override
  71. public void init(User user, boolean checkGuest) {
  72. oldChecker.init(user, checkGuest);
  73. }
  74. @Override
  75. public boolean isCommunityAdmin(long groupId) {
  76. return true;
  77. }
  78. @Override
  79. public boolean isCommunityOwner(long groupId) {
  80. return true;
  81. }
  82. @Override
  83. public boolean isCompanyAdmin() {
  84. return true;
  85. }
  86. @Override
  87. public boolean isCompanyAdmin(long companyId) {
  88. return true;
  89. }
  90. @Override
  91. public boolean isOmniadmin() {
  92. return true;
  93. }
  94. @Override
  95. public void resetValues() {
  96. oldChecker.resetValues();
  97. }
  98. @Override
  99. public void setCheckGuest(boolean checkGuest) {
  100. oldChecker.setCheckGuest(true);
  101. }
  102. @Override
  103. public void setValues(PortletRequest portletRequest) {
  104. oldChecker.setValues(portletRequest);
  105. }
  106. });
  107. Role role = RoleServiceUtil.getRole(PortalUtil.getDefaultCompanyId(), liferayRoleName);
  108. if (role == null) return new HashSet<UserData>();
  109. long[] roleUserIds = UserServiceUtil.getRoleUserIds(role.getRoleId());
  110. HashSet<UserData> users = new HashSet<UserData>();
  111. for (long roleUserId : roleUserIds) {
  112. User userById = UserServiceUtil.getUserById(roleUserId);
  113. UserData ud = new UserData();
  114. ud.setLogin(userById.getLogin());
  115. ud.setDescription(userById.getFullName());
  116. ud.setBpmLogin(userById.getScreenName());
  117. users.add(ud);
  118. }
  119. return users;
  120. }
  121. finally {
  122. PermissionThreadLocal.setPermissionChecker(oldChecker);
  123. }
  124. } catch (Exception e) {
  125. throw new RuntimeException(e);
  126. }
  127. }
  128. public String getLiferayRoleName() {
  129. return liferayRoleName;
  130. }
  131. public void setLiferayRoleName(String liferayRoleName) {
  132. this.liferayRoleName = liferayRoleName;
  133. }
  134. }