/** * Copyright (c) 2009--2014 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.frontend.action.multiorg; import com.redhat.rhn.common.db.datasource.DataList; import com.redhat.rhn.common.localization.LocalizationService; import com.redhat.rhn.domain.common.SatConfigFactory; import com.redhat.rhn.domain.org.OrgFactory; import com.redhat.rhn.domain.org.usergroup.UserGroupFactory; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.dto.OrgDto; import com.redhat.rhn.frontend.struts.RequestContext; import com.redhat.rhn.frontend.struts.RhnAction; import com.redhat.rhn.frontend.struts.RhnHelper; import com.redhat.rhn.manager.org.OrgManager; import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.apache.struts.util.LabelValueBean; import java.util.LinkedList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * ExtAuthenticationAction */ public class ExtAuthenticationAction extends RhnAction { /** {@inheritDoc} */ @Override public ActionForward execute(ActionMapping mapping, ActionForm formIn, HttpServletRequest request, HttpServletResponse response) { DynaActionForm daForm = (DynaActionForm) formIn; RequestContext ctx = new RequestContext(request); if (ctx.isSubmitted()) { Boolean useOu = (Boolean) daForm.get("use_ou"); // store the value SatConfigFactory.setSatConfigBooleanValue( SatConfigFactory.EXT_AUTH_USE_ORGUNIT, useOu); String toOrgString = daForm.getString("to_org"); if (!StringUtils.isEmpty(toOrgString)) { // just check the org id is valid OrgFactory.lookupById(Long.parseLong(toOrgString)); } // store the value SatConfigFactory.setSatConfigValue(SatConfigFactory.EXT_AUTH_DEFAULT_ORGID, toOrgString); Boolean keepRoles = (Boolean) daForm.get("keep_roles"); if (SatConfigFactory.getSatConfigBooleanValue( SatConfigFactory.EXT_AUTH_KEEP_ROLES) && !BooleanUtils.toBoolean(keepRoles)) { // if the option was turned off, delete temporary roles // across the whole satellite UserGroupFactory.deleteTemporaryRoles(); } // store the value SatConfigFactory.setSatConfigBooleanValue( SatConfigFactory.EXT_AUTH_KEEP_ROLES, keepRoles); createSuccessMessage(request, "message.ext_auth_updated", null); return mapping.findForward("success"); } // not submitted setupForm(request, daForm); return mapping.findForward(RhnHelper.DEFAULT_FORWARD); } private void setupForm(HttpServletRequest request, DynaActionForm form) { RequestContext ctx = new RequestContext(request); User user = ctx.getCurrentUser(); Boolean useOrgUnit = SatConfigFactory.getSatConfigBooleanValue( SatConfigFactory.EXT_AUTH_USE_ORGUNIT); form.set("use_ou", useOrgUnit); DataList<OrgDto> dr = OrgManager.activeOrgs(user); List <LabelValueBean> orgs = new LinkedList<LabelValueBean>(); orgs.add(lv( LocalizationService.getInstance().getMessage("message.ext_auth_disable"), null)); for (OrgDto orgDto : dr) { orgs.add(lv(orgDto.getName(), orgDto.getId().toString())); } request.setAttribute("orgs", orgs); Long actOrgId = SatConfigFactory.getSatConfigLongValue( SatConfigFactory.EXT_AUTH_DEFAULT_ORGID); if (actOrgId != null) { form.set("to_org", actOrgId.toString()); } else { form.set("to_org", null); } Boolean keepRoles = SatConfigFactory.getSatConfigBooleanValue( SatConfigFactory.EXT_AUTH_KEEP_ROLES); form.set("keep_roles", keepRoles); } }