Как я могу получить пользовательское разрешение для макета в Liferay-7? - PullRequest
0 голосов
/ 15 апреля 2019

Я использую Liferay 7.0 GA5 .Я создал пользовательские роли.

Liferay позволяет пользователю просматривать макет, если у него есть одна из пользовательских ролей.Я должен настроить это поведение, чтобы пользователь мог посещать страницу, только если у него есть определенные роли.

Кроме того, это должно применяться к результатам поиска.

На данный момент я делаю какниже

@Component(
    immediate = true,
    property = {
        "key=servlet.service.events.pre",
        "service.ranking:Integer=1000"
    },
    service = LifecycleAction.class
)
public class CustomPreAction implements LifecycleAction {
    private static final Log LOG = LogFactoryUtil.getLog(CustomPreAction.class);

    @Override
    public void processLifecycleEvent(LifecycleEvent lifecycleEvent) throws ActionException {
        LOG.info("Custom Service : pre-action");

        HttpServletRequest httpServletRequest = lifecycleEvent.getRequest();
        HttpServletResponse httpServletResponse = lifecycleEvent.getResponse();
        User currentUser = getUser(httpServletRequest);

        if(Validator.isNotNull(currentUser) && !hasVewPermission(currentUser, httpServletRequest)) {
            LOG.warn("\n User don't have appropriate permission to view requested page.\n");
            System.out.println("Redirecting user for testing");
            try {
                httpServletResponse.sendRedirect("/dashboard");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private User getUser(HttpServletRequest httpServletRequest) {
        User currentUser = null;
        try {
            currentUser = PortalUtil.getUser(httpServletRequest);
        } catch (PortalException e) {
            e.printStackTrace();
        }
        return currentUser;
    }

    private boolean hasVewPermission(User currentUser, HttpServletRequest httpServletRequest) {
        boolean hasPermission = false;
        /*
         * My custom logic
         * ...
         */
        return hasPermission;
    }
}
...