All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.internet2.middleware.grouper.grouperUi.serviceLogic.UiV2AuthenticationConfig Maven / Gradle / Ivy

There is a newer version: 5.15.3
Show newest version
package edu.internet2.middleware.grouper.grouperUi.serviceLogic;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import edu.internet2.middleware.grouper.GrouperSession;
import edu.internet2.middleware.grouper.authentication.WsTrustedJwtConfiguration;
import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiResponseJs;
import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiScreenAction;
import edu.internet2.middleware.grouper.grouperUi.beans.json.GuiScreenAction.GuiMessageType;
import edu.internet2.middleware.grouper.grouperUi.beans.ui.AuthenticationContainer;
import edu.internet2.middleware.grouper.grouperUi.beans.ui.GrouperRequestContainer;
import edu.internet2.middleware.grouper.grouperUi.beans.ui.GuiWsTrustedJwtConfiguration;
import edu.internet2.middleware.grouper.grouperUi.beans.ui.TextContainer;
import edu.internet2.middleware.grouper.ui.GrouperUiFilter;
import edu.internet2.middleware.grouper.util.GrouperUtil;
import edu.internet2.middleware.subject.Subject;

public class UiV2AuthenticationConfig {
  
  protected static Log LOG = edu.internet2.middleware.grouper.util.GrouperUtil.getLog(UiV2AuthenticationConfig.class);
  
  /**
   * if allowed to view authentication
   * @return true if allowed to view authentication
   */
  private boolean allowedToViewAuthentication() {

    Map debugMap = null;
    
    if (LOG.isDebugEnabled()) {
      debugMap = new LinkedHashMap();
      debugMap.put("method", "allowedToViewAuthentication");
    }
    try {
      
      GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();

      final boolean canViewAuthentication = GrouperRequestContainer.retrieveFromRequestOrCreate().getAuthenticationContainer().isCanViewAuthentication();

      if (debugMap != null) {
        debugMap.put("canViewAuthentication", canViewAuthentication);
      }

      if (!canViewAuthentication) {
        guiResponseJs.addAction(GuiScreenAction.newMessage(GuiMessageType.error, 
            TextContainer.retrieveFromRequest().getText().get("authenticationNotAllowedToView")));
        return false;
      }
      
      return true;
    } finally {
      if (LOG.isDebugEnabled()) {
        LOG.debug(GrouperUtil.mapToString(debugMap));
      }
    }

  }
  
  
  /**
   * configure
   * @param request
   * @param response
   */
  public void index(HttpServletRequest request, HttpServletResponse response) {
  
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
  
    GrouperSession grouperSession = null;
  
    try {
  
      grouperSession = GrouperSession.start(loggedInSubject);
  
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
  
      guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId", 
          "/WEB-INF/grouperUi2/authentication/authenticationIndex.jsp"));
    
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  public void viewWsTrustedJwts(HttpServletRequest request, HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      AuthenticationContainer authenticationContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getAuthenticationContainer();
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      List wsTrustedJwtConfigs = WsTrustedJwtConfiguration.retrieveAllWsTrustedJwtConfigs();
      
      List guiWsTrustedJwtConfigs = GuiWsTrustedJwtConfiguration.convertFromWsTrustedJwtConfiguration(wsTrustedJwtConfigs);
      
      authenticationContainer.setGuiWsTrustedJwtConfigs(guiWsTrustedJwtConfigs);
      
      guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
          "/WEB-INF/grouperUi2/authentication/wsTrustedJwts.jsp"));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
    
  }
  
  
  public void addWsTrustedJwt(HttpServletRequest request, HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      AuthenticationContainer authenticationContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getAuthenticationContainer();
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      String configType = request.getParameter("wsTrustedJwtConfigType");
      
      if (StringUtils.isNotBlank(configType)) {
        
        Class klass = (Class) GrouperUtil.forName(configType);
        WsTrustedJwtConfiguration wsTrustedJwtConfiguration = (WsTrustedJwtConfiguration) GrouperUtil.newInstance(klass);
        
        if (StringUtils.isBlank(configId)) {
          guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, 
              "#wsTrustedJwtConfigId",
              TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtErrorConfigIdRequired")));
          return;
        }
        
        wsTrustedJwtConfiguration.setConfigId(configId);
        wsTrustedJwtConfiguration.populateConfigurationValuesFromUi(request);
        
        GuiWsTrustedJwtConfiguration guiWsTrustedJwtConfig = GuiWsTrustedJwtConfiguration.convertFromWsTrustedJwtConfiguration(wsTrustedJwtConfiguration);
        authenticationContainer.setGuiWsTrustedJwtConfiguration(guiWsTrustedJwtConfig);
        
      }

      guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId", 
          "/WEB-INF/grouperUi2/authentication/wsTrustedJwtConfigAdd.jsp"));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  
  /**
   * insert a new gsh template in db
   * @param request
   * @param response
   */
  public void addWsTrustedJwtSubmit(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, 
            "#wsTrustedJwtConfigId",
            TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtErrorConfigIdRequired")));
        return;
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);
      wsTrustedJwtConfiguration.populateConfigurationValuesFromUi(request);
      
      StringBuilder message = new StringBuilder();
      List errorsToDisplay = new ArrayList();
      Map validationErrorsToDisplay = new HashMap();
      
      wsTrustedJwtConfiguration.insertConfig(true, message, errorsToDisplay, validationErrorsToDisplay, new ArrayList());
      
      if (errorsToDisplay.size() > 0 || validationErrorsToDisplay.size() > 0) {

        for (String errorToDisplay: errorsToDisplay) {
          guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.error, errorToDisplay));
        }
        for (String validationKey: validationErrorsToDisplay.keySet()) {
          guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, validationKey, 
              validationErrorsToDisplay.get(validationKey)));
        }

        return;

      }
      
      guiResponseJs.addAction(GuiScreenAction.newScript("guiV2link('operation=UiV2AuthenticationConfig.viewWsTrustedJwts')"));
      
      guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.success, 
          TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtConfigAddEditSuccess")));
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  /**
   * show edit jwt config page
   * @param request
   * @param response
   */
  public void editWsTrustedJwtConfig(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      AuthenticationContainer authenticationContainer = GrouperRequestContainer.retrieveFromRequestOrCreate().getAuthenticationContainer();
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, 
            "#wsTrustedJwtConfigId",
            TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtErrorConfigIdRequired")));
        return;
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);
      
      String previousWsTrustedJwtConfigId = request.getParameter("previousWsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(previousWsTrustedJwtConfigId)) {
        // first time loading the screen. let's get values from config files/database
        GuiWsTrustedJwtConfiguration guiWsTrustedJwtConfiguration = GuiWsTrustedJwtConfiguration.convertFromWsTrustedJwtConfiguration(wsTrustedJwtConfiguration);
        authenticationContainer.setGuiWsTrustedJwtConfiguration(guiWsTrustedJwtConfiguration);
      } else {
        // change was made on the form
        wsTrustedJwtConfiguration.populateConfigurationValuesFromUi(request);
        GuiWsTrustedJwtConfiguration guiWsTrustedJwtConfiguration = GuiWsTrustedJwtConfiguration.convertFromWsTrustedJwtConfiguration(wsTrustedJwtConfiguration);
        authenticationContainer.setGuiWsTrustedJwtConfiguration(guiWsTrustedJwtConfiguration);
      }
      
      guiResponseJs.addAction(GuiScreenAction.newInnerHtmlFromJsp("#grouperMainContentDivId",
          "/WEB-INF/grouperUi2/authentication/editWsTrustedJwtConfigDetails.jsp"));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  /**
   * save edited ws trusted jwt config into db
   * @param request
   * @param response
   */
  public void editWsTrustedJwtConfigSubmit(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, 
            "#wsTrustedJwtConfigId",
            TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtErrorConfigIdRequired")));
        return;
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);  
      
      wsTrustedJwtConfiguration.populateConfigurationValuesFromUi(request);
      
      StringBuilder message = new StringBuilder();
      List errorsToDisplay = new ArrayList();
      Map validationErrorsToDisplay = new HashMap();
      List actionsPerformed = new ArrayList();

      wsTrustedJwtConfiguration.editConfig(true, message, errorsToDisplay, validationErrorsToDisplay, actionsPerformed);
      
      if (errorsToDisplay.size() > 0 || validationErrorsToDisplay.size() > 0) {

        for (String errorToDisplay: errorsToDisplay) {
          guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.error, errorToDisplay));
        }
        for (String validationKey: validationErrorsToDisplay.keySet()) {
          guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, validationKey, 
              validationErrorsToDisplay.get(validationKey)));
        }

        return;

      }
      
      guiResponseJs.addAction(GuiScreenAction.newScript("guiV2link('operation=UiV2AuthenticationConfig.viewWsTrustedJwts')"));
      
      guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.success, 
          TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtConfigAddEditSuccess")));
   
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  /**
   * delete gsh template
   * @param request
   * @param response
   */
  public void deleteWsTrustedJwtConfig(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, 
            "#wsTrustedJwtConfigId",
            TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtErrorConfigIdRequired")));
        return;
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);  
      
      wsTrustedJwtConfiguration.deleteConfig(true);
      
      guiResponseJs.addAction(GuiScreenAction.newScript("guiV2link('operation=UiV2AuthenticationConfig.viewWsTrustedJwts')"));
      
      guiResponseJs.addAction(GuiScreenAction.newMessage(GuiMessageType.success,
          TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtConfigDeleteSuccess")));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  /**
   * disable ws trusted jwt config
   * @param request
   * @param response
   */
  public void disableWsTrustedJwtConfig(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        throw new RuntimeException("wsTrustedJwtConfigId cannot be blank");
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);  
      
      StringBuilder message = new StringBuilder();
      List errorsToDisplay = new ArrayList();
      Map validationErrorsToDisplay = new HashMap();
      
      wsTrustedJwtConfiguration.changeStatus(false, message, errorsToDisplay, validationErrorsToDisplay);
      
      if (errorsToDisplay.size() > 0 || validationErrorsToDisplay.size() > 0) {

        for (String errorToDisplay: errorsToDisplay) {
          guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.error, errorToDisplay));
        }
        for (String validationKey: validationErrorsToDisplay.keySet()) {
          guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, validationKey, 
              validationErrorsToDisplay.get(validationKey)));
        }

        return;

      }
      
      guiResponseJs.addAction(GuiScreenAction.newScript("guiV2link('operation=UiV2AuthenticationConfig.viewWsTrustedJwts')"));
      
      guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.success,
          TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtConfigChangeStatusSuccess")));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }
  
  /**
   * enable ws trusted jwt config
   * @param request
   * @param response
   */
  public void enableWsTrustedJwtConfig(final HttpServletRequest request, final HttpServletResponse response) {
    
    final Subject loggedInSubject = GrouperUiFilter.retrieveSubjectLoggedIn();
    
    GrouperSession grouperSession = null;
    
    final GuiResponseJs guiResponseJs = GuiResponseJs.retrieveGuiResponseJs();
    
    try {
      
      grouperSession = GrouperSession.start(loggedInSubject);
      
      if (!allowedToViewAuthentication()) {
        return;
      }
      
      String configId = request.getParameter("wsTrustedJwtConfigId");
      
      if (StringUtils.isBlank(configId)) {
        throw new RuntimeException("wsTrustedJwtConfigId cannot be blank");
      }
      
      WsTrustedJwtConfiguration wsTrustedJwtConfiguration = new WsTrustedJwtConfiguration();
      
      wsTrustedJwtConfiguration.setConfigId(configId);  
      
      StringBuilder message = new StringBuilder();
      List errorsToDisplay = new ArrayList();
      Map validationErrorsToDisplay = new HashMap();
      
      wsTrustedJwtConfiguration.changeStatus(true, message, errorsToDisplay, validationErrorsToDisplay);
      
      if (errorsToDisplay.size() > 0 || validationErrorsToDisplay.size() > 0) {

        for (String errorToDisplay: errorsToDisplay) {
          guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.error, errorToDisplay));
        }
        for (String validationKey: validationErrorsToDisplay.keySet()) {
          guiResponseJs.addAction(GuiScreenAction.newValidationMessage(GuiMessageType.error, validationKey, 
              validationErrorsToDisplay.get(validationKey)));
        }

        return;

      }
      
      guiResponseJs.addAction(GuiScreenAction.newScript("guiV2link('operation=UiV2AuthenticationConfig.viewWsTrustedJwts')"));
      
      guiResponseJs.addAction(GuiScreenAction.newMessageAppend(GuiMessageType.success,
          TextContainer.retrieveFromRequest().getText().get("wsTrustedJwtConfigChangeStatusSuccess")));
      
    } finally {
      GrouperSession.stopQuietly(grouperSession);
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy