Search in sources :

Example 1 with WFDescriptions

use of com.tremolosecurity.provisioning.service.util.WFDescriptions in project OpenUnison by TremoloSecurity.

the class ListWorkflows method doGet.

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    try {
        String uuid = req.getParameter("uuid");
        ConfigManager cfgMgr = GlobalEntries.getGlobalEntries().getConfigManager();
        List<WorkflowType> wfs = GlobalEntries.getGlobalEntries().getConfigManager().getCfg().getProvisioning().getWorkflows().getWorkflow();
        ArrayList<WFDescription> workflows = new ArrayList<WFDescription>();
        for (WorkflowType wf : wfs) {
            if (wf.isInList() != null && wf.isInList().booleanValue()) {
                if (wf.getOrgid() == null || wf.getOrgid().equalsIgnoreCase(uuid)) {
                    if (wf.getDynamicConfiguration() != null && wf.getDynamicConfiguration().isDynamic()) {
                        HashMap<String, Attribute> params = new HashMap<String, Attribute>();
                        if (wf.getDynamicConfiguration().getParam() != null) {
                            for (ParamType p : wf.getDynamicConfiguration().getParam()) {
                                Attribute attr = params.get(p.getName());
                                if (attr == null) {
                                    attr = new Attribute(p.getName());
                                    params.put(p.getName(), attr);
                                }
                                attr.getValues().add(p.getValue());
                            }
                        }
                        DynamicWorkflow dwf = (DynamicWorkflow) Class.forName(wf.getDynamicConfiguration().getClassName()).newInstance();
                        List<Map<String, String>> wfParams = dwf.generateWorkflows(wf, GlobalEntries.getGlobalEntries().getConfigManager(), params);
                        StringBuffer b = new StringBuffer();
                        b.append('/').append(URLEncoder.encode(wf.getName(), "UTF-8"));
                        String uri = b.toString();
                        for (Map<String, String> wfParamSet : wfParams) {
                            DateTime now = new DateTime();
                            DateTime expires = now.plusHours(1);
                            LastMile lm = new LastMile(uri, now, expires, 0, "");
                            for (String key : wfParamSet.keySet()) {
                                String val = wfParamSet.get(key);
                                Attribute attr = new Attribute(key, val);
                                lm.getAttributes().add(attr);
                            }
                            WFDescription desc = new WFDescription();
                            desc.setUuid(UUID.randomUUID().toString());
                            desc.setName(wf.getName());
                            ST st = new ST(wf.getLabel(), '$', '$');
                            for (String key : wfParamSet.keySet()) {
                                st.add(key.replaceAll("[.]", "_"), wfParamSet.get(key));
                            }
                            desc.setLabel(st.render());
                            st = new ST(wf.getDescription(), '$', '$');
                            for (String key : wfParamSet.keySet()) {
                                st.add(key.replaceAll("[.]", "_"), wfParamSet.get(key));
                            }
                            desc.setDescription(st.render());
                            desc.setEncryptedParams(lm.generateLastMileToken(cfgMgr.getSecretKey(cfgMgr.getCfg().getProvisioning().getApprovalDB().getEncryptionKey())));
                            workflows.add(desc);
                        }
                    } else {
                        WFDescription desc = new WFDescription();
                        desc.setUuid(UUID.randomUUID().toString());
                        desc.setName(wf.getName());
                        desc.setLabel(wf.getLabel());
                        desc.setDescription(wf.getDescription());
                        workflows.add(desc);
                    }
                }
            }
        }
        WFDescriptions descs = new WFDescriptions();
        descs.setWorkflows(workflows);
        Gson gson = new Gson();
        ProvisioningResult pres = new ProvisioningResult();
        pres.setSuccess(true);
        pres.setWfDescriptions(descs);
        resp.getOutputStream().print(gson.toJson(pres));
    } catch (Exception e) {
        logger.error("Could not load workflows", e);
        Gson gson = new Gson();
        ProvisioningResult pres = new ProvisioningResult();
        pres.setSuccess(false);
        pres.setError(new ProvisioningError("Could not load workflows"));
        resp.getOutputStream().print(gson.toJson(pres));
    }
}
Also used : ST(org.stringtemplate.v4.ST) Attribute(com.tremolosecurity.saml.Attribute) HashMap(java.util.HashMap) ProvisioningResult(com.tremolosecurity.provisioning.service.util.ProvisioningResult) ArrayList(java.util.ArrayList) Gson(com.google.gson.Gson) ConfigManager(com.tremolosecurity.config.util.ConfigManager) ParamType(com.tremolosecurity.config.xml.ParamType) DateTime(org.joda.time.DateTime) ServletException(javax.servlet.ServletException) IOException(java.io.IOException) LastMile(com.tremolosecurity.lastmile.LastMile) WFDescription(com.tremolosecurity.provisioning.service.util.WFDescription) ProvisioningError(com.tremolosecurity.provisioning.service.util.ProvisioningError) WorkflowType(com.tremolosecurity.config.xml.WorkflowType) DynamicWorkflow(com.tremolosecurity.provisioning.util.DynamicWorkflow) HashMap(java.util.HashMap) Map(java.util.Map) WFDescriptions(com.tremolosecurity.provisioning.service.util.WFDescriptions)

Aggregations

Gson (com.google.gson.Gson)1 ConfigManager (com.tremolosecurity.config.util.ConfigManager)1 ParamType (com.tremolosecurity.config.xml.ParamType)1 WorkflowType (com.tremolosecurity.config.xml.WorkflowType)1 LastMile (com.tremolosecurity.lastmile.LastMile)1 ProvisioningError (com.tremolosecurity.provisioning.service.util.ProvisioningError)1 ProvisioningResult (com.tremolosecurity.provisioning.service.util.ProvisioningResult)1 WFDescription (com.tremolosecurity.provisioning.service.util.WFDescription)1 WFDescriptions (com.tremolosecurity.provisioning.service.util.WFDescriptions)1 DynamicWorkflow (com.tremolosecurity.provisioning.util.DynamicWorkflow)1 Attribute (com.tremolosecurity.saml.Attribute)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 ServletException (javax.servlet.ServletException)1 DateTime (org.joda.time.DateTime)1 ST (org.stringtemplate.v4.ST)1