Search in sources :

Example 1 with LoginRequiredException

use of fi.internetix.smvc.LoginRequiredException in project pyramus by otavanopisto.

the class BinaryRequestController method authorize.

public void authorize(RequestContext requestContext) throws LoginRequiredException, AccessDeniedException {
    UserRole[] roles = getAllowedRoles();
    if (!contains(roles, UserRole.EVERYONE)) {
        if (!requestContext.isLoggedIn())
            throw new LoginRequiredException();
        else {
            Long loggedUserId = requestContext.getLoggedUserId();
            StaffMemberDAO staffDAO = DAOFactory.getInstance().getStaffMemberDAO();
            StaffMember user = staffDAO.findById(loggedUserId);
            UserUtils.checkManagementOrganizationPermission(user, requestContext.getRequest().getLocale());
            UserRole userRole = UserUtils.roleToUserRole(user.getRole());
            if (!contains(roles, userRole)) {
                throw new AccessDeniedException(requestContext.getRequest().getLocale());
            }
        }
    }
}
Also used : LoginRequiredException(fi.internetix.smvc.LoginRequiredException) AccessDeniedException(fi.internetix.smvc.AccessDeniedException) StaffMemberDAO(fi.otavanopisto.pyramus.dao.users.StaffMemberDAO) StaffMember(fi.otavanopisto.pyramus.domainmodel.users.StaffMember)

Example 2 with LoginRequiredException

use of fi.internetix.smvc.LoginRequiredException in project pyramus by otavanopisto.

the class PyramusViewController method throwLoginRequiredException.

protected void throwLoginRequiredException(RequestContext requestContext) {
    HttpServletRequest request = requestContext.getRequest();
    StringBuilder currentUrl = new StringBuilder(request.getRequestURL());
    String queryString = request.getQueryString();
    if (!StringUtils.isBlank(queryString)) {
        currentUrl.append('?');
        currentUrl.append(queryString);
    }
    throw new LoginRequiredException(currentUrl.toString());
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) LoginRequiredException(fi.internetix.smvc.LoginRequiredException)

Example 3 with LoginRequiredException

use of fi.internetix.smvc.LoginRequiredException in project pyramus by otavanopisto.

the class PyramusViewController2 method throwLoginRequiredException.

protected void throwLoginRequiredException(RequestContext requestContext) {
    HttpServletRequest request = requestContext.getRequest();
    StringBuilder currentUrl = new StringBuilder(request.getRequestURL());
    String queryString = request.getQueryString();
    if (!StringUtils.isBlank(queryString)) {
        currentUrl.append('?');
        currentUrl.append(queryString);
    }
    throw new LoginRequiredException(currentUrl.toString());
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) LoginRequiredException(fi.internetix.smvc.LoginRequiredException)

Example 4 with LoginRequiredException

use of fi.internetix.smvc.LoginRequiredException in project pyramus by otavanopisto.

the class AuthorizeClientApplicationViewController method processSend.

@Override
public void processSend(PageRequestContext requestContext) {
    if (!requestContext.isLoggedIn()) {
        HttpServletRequest request = requestContext.getRequest();
        StringBuilder currentUrl = new StringBuilder(request.getRequestURL());
        String queryString = request.getQueryString();
        if (!StringUtils.isBlank(queryString)) {
            currentUrl.append('?');
            currentUrl.append(queryString);
        }
        throw new LoginRequiredException(currentUrl.toString());
    }
    UserDAO userDAO = DAOFactory.getInstance().getUserDAO();
    ClientApplicationDAO clientApplicationDAO = DAOFactory.getInstance().getClientApplicationDAO();
    ClientApplicationAuthorizationCodeDAO clientApplicationAuthorizationCodeDAO = DAOFactory.getInstance().getClientApplicationAuthorizationCodeDAO();
    HttpServletRequest request = requestContext.getRequest();
    HttpSession session = request.getSession();
    Boolean authorized = "Authorize".equals(request.getParameter("authorize"));
    if (authorized) {
        Long userId = (Long) session.getAttribute("loggedUserId");
        String authorizationCode = (String) session.getAttribute("pendingAuthCode");
        String redirectURI = (String) session.getAttribute("pendingOauthRedirectUrl");
        ClientApplication clientApplication = clientApplicationDAO.findByClientId((String) session.getAttribute("clientAppId"));
        if (userId != null && authorizationCode != null && redirectURI != null && clientApplication != null) {
            try {
                OAuthASResponse.OAuthAuthorizationResponseBuilder builder = OAuthASResponse.authorizationResponse(request, HttpServletResponse.SC_FOUND);
                builder.setCode(authorizationCode);
                final OAuthResponse response = builder.location(redirectURI).buildQueryMessage();
                User user = userDAO.findById(userId);
                clientApplicationAuthorizationCodeDAO.create(user, clientApplication, authorizationCode, redirectURI);
                requestContext.setRedirectURL(response.getLocationUri());
            } catch (OAuthSystemException e) {
                requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
                throw new SmvcRuntimeException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
            }
        } else {
            requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
            throw new SmvcRuntimeException(HttpServletResponse.SC_BAD_REQUEST, "Invalid parameters");
        }
    }
}
Also used : LoginRequiredException(fi.internetix.smvc.LoginRequiredException) User(fi.otavanopisto.pyramus.domainmodel.users.User) HttpSession(javax.servlet.http.HttpSession) OAuthSystemException(org.apache.oltu.oauth2.common.exception.OAuthSystemException) SmvcRuntimeException(fi.internetix.smvc.SmvcRuntimeException) OAuthResponse(org.apache.oltu.oauth2.common.message.OAuthResponse) HttpServletRequest(javax.servlet.http.HttpServletRequest) ClientApplicationAuthorizationCodeDAO(fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationAuthorizationCodeDAO) ClientApplication(fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplication) ClientApplicationDAO(fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationDAO) UserDAO(fi.otavanopisto.pyramus.dao.users.UserDAO) OAuthASResponse(org.apache.oltu.oauth2.as.response.OAuthASResponse)

Example 5 with LoginRequiredException

use of fi.internetix.smvc.LoginRequiredException in project pyramus by otavanopisto.

the class AuthorizeClientApplicationViewController method processForm.

@Override
public void processForm(PageRequestContext requestContext) {
    ClientApplicationDAO clientApplicationDAO = DAOFactory.getInstance().getClientApplicationDAO();
    if (!requestContext.isLoggedIn()) {
        HttpServletRequest request = requestContext.getRequest();
        StringBuilder currentUrl = new StringBuilder(request.getRequestURL());
        String queryString = request.getQueryString();
        if (!StringUtils.isBlank(queryString)) {
            currentUrl.append('?');
            currentUrl.append(queryString);
        }
        String clientId = requestContext.getString("client_id");
        if (StringUtils.isNotBlank(clientId)) {
            ClientApplication clientApplication = clientApplicationDAO.findByClientId(clientId);
            if (clientApplication == null) {
                throw new SmvcRuntimeException(HttpServletResponse.SC_FORBIDDEN, "Client application not found");
            }
            throw new LoginRequiredException(currentUrl.toString(), "OAUTHCLIENT", clientId);
        } else {
            throw new SmvcRuntimeException(HttpServletResponse.SC_FORBIDDEN, "Client application not defined");
        }
    }
    HttpServletRequest request = requestContext.getRequest();
    OAuthAuthzRequest oauthRequest;
    OAuthIssuerImpl oauthIssuerImpl = new OAuthIssuerImpl(new MD5Generator());
    try {
        oauthRequest = new OAuthAuthzRequest(request);
        ClientApplication clientApplication = clientApplicationDAO.findByClientId(oauthRequest.getClientId());
        if (clientApplication != null) {
            request.getSession().setAttribute("clientAppId", oauthRequest.getClientId());
            String responseType = oauthRequest.getParam(OAuth.OAUTH_RESPONSE_TYPE);
            if (!responseType.equals(ResponseType.CODE.toString())) {
                requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
                throw new SmvcRuntimeException(HttpServletResponse.SC_NOT_IMPLEMENTED, String.format("Response type: %s not supported", responseType));
            }
            String authorizationCode = oauthIssuerImpl.authorizationCode();
            request.getSession().setAttribute("pendingAuthCode", authorizationCode);
            String redirectURI = oauthRequest.getParam(OAuth.OAUTH_REDIRECT_URI);
            request.getSession().setAttribute("pendingOauthRedirectUrl", redirectURI);
            request.setAttribute("clientAppName", clientApplication.getClientName());
            if (clientApplication.getSkipPrompt()) {
                ClientApplicationAuthorizationCodeDAO clientApplicationAuthorizationCodeDAO = DAOFactory.getInstance().getClientApplicationAuthorizationCodeDAO();
                UserDAO userDAO = DAOFactory.getInstance().getUserDAO();
                HttpSession session = request.getSession();
                Long userId = (Long) session.getAttribute("loggedUserId");
                if (userId != null && authorizationCode != null && redirectURI != null && clientApplication != null) {
                    try {
                        OAuthASResponse.OAuthAuthorizationResponseBuilder builder = OAuthASResponse.authorizationResponse(request, HttpServletResponse.SC_FOUND);
                        builder.setCode(authorizationCode);
                        final OAuthResponse response = builder.location(redirectURI).buildQueryMessage();
                        User user = userDAO.findById(userId);
                        clientApplicationAuthorizationCodeDAO.create(user, clientApplication, authorizationCode, redirectURI);
                        requestContext.setRedirectURL(response.getLocationUri());
                    } catch (OAuthSystemException e) {
                        requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
                        throw new SmvcRuntimeException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
                    }
                } else {
                    requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
                    throw new SmvcRuntimeException(HttpServletResponse.SC_BAD_REQUEST, "Invalid parameters");
                }
            }
        } else {
            requestContext.setIncludeJSP("/templates/generic/errorpage.jsp");
            throw new SmvcRuntimeException(HttpServletResponse.SC_FORBIDDEN, "Client application not found");
        }
    } catch (OAuthProblemException | OAuthSystemException e) {
        throw new SmvcRuntimeException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    }
    // TODO: show auth page only if everything is ok
    requestContext.setIncludeJSP("/templates/users/authorizeclientapp.jsp");
}
Also used : LoginRequiredException(fi.internetix.smvc.LoginRequiredException) User(fi.otavanopisto.pyramus.domainmodel.users.User) HttpSession(javax.servlet.http.HttpSession) OAuthSystemException(org.apache.oltu.oauth2.common.exception.OAuthSystemException) SmvcRuntimeException(fi.internetix.smvc.SmvcRuntimeException) OAuthResponse(org.apache.oltu.oauth2.common.message.OAuthResponse) HttpServletRequest(javax.servlet.http.HttpServletRequest) OAuthProblemException(org.apache.oltu.oauth2.common.exception.OAuthProblemException) OAuthIssuerImpl(org.apache.oltu.oauth2.as.issuer.OAuthIssuerImpl) ClientApplication(fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplication) ClientApplicationAuthorizationCodeDAO(fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationAuthorizationCodeDAO) ClientApplicationDAO(fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationDAO) UserDAO(fi.otavanopisto.pyramus.dao.users.UserDAO) OAuthAuthzRequest(org.apache.oltu.oauth2.as.request.OAuthAuthzRequest) MD5Generator(org.apache.oltu.oauth2.as.issuer.MD5Generator) OAuthASResponse(org.apache.oltu.oauth2.as.response.OAuthASResponse)

Aggregations

LoginRequiredException (fi.internetix.smvc.LoginRequiredException)8 AccessDeniedException (fi.internetix.smvc.AccessDeniedException)4 HttpServletRequest (javax.servlet.http.HttpServletRequest)4 SmvcRuntimeException (fi.internetix.smvc.SmvcRuntimeException)3 UserDAO (fi.otavanopisto.pyramus.dao.users.UserDAO)3 User (fi.otavanopisto.pyramus.domainmodel.users.User)3 HttpSession (javax.servlet.http.HttpSession)3 ClientApplicationAuthorizationCodeDAO (fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationAuthorizationCodeDAO)2 ClientApplicationDAO (fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationDAO)2 StaffMemberDAO (fi.otavanopisto.pyramus.dao.users.StaffMemberDAO)2 ClientApplication (fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplication)2 StaffMember (fi.otavanopisto.pyramus.domainmodel.users.StaffMember)2 OAuthASResponse (org.apache.oltu.oauth2.as.response.OAuthASResponse)2 OAuthSystemException (org.apache.oltu.oauth2.common.exception.OAuthSystemException)2 OAuthResponse (org.apache.oltu.oauth2.common.message.OAuthResponse)2 AlreadyLoggedInException (fi.internetix.smvc.AlreadyLoggedInException)1 InvalidLoginException (fi.internetix.smvc.InvalidLoginException)1 PageNotFoundException (fi.internetix.smvc.PageNotFoundException)1 BinaryRequestContext (fi.internetix.smvc.controllers.BinaryRequestContext)1 BinaryRequestController (fi.internetix.smvc.controllers.BinaryRequestController)1