/*
 * Copyright (c) 2004 N2 Broadband, Inc.  All Rights Reserved.
 *
 * This module contains unpublished, confidential, proprietary
 * material.  The use and dissemination of this material are
 * governed by a license.  The above copyright notice does not
 * evidence any actual or intended publication of this material.
 *
 * Created: Apr 1, 2004
 */
package com.n2bb.security;

import java.io.IOException;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.n2bb.action.N2bbAction;
import com.n2bb.action.AbstractAction;
import com.n2bb.action.ListPagerAction;
import com.n2bb.util.N2bbException;
import com.n2bb.util.N2bbSettings;
import com.n2bb.util.ActionConstants;
import com.n2bb.web.util.ListPage;
import com.n2bb.web.util.Sort;
import com.n2bb.web.util.ListPager;
import org.apache.struts.action.*;

/**
 * Modify N2 roles (aka 'big roles') as defined in security framework.
 *
 * @author kmatsuoka
 * @version $Id: ModifyRolesAction.java,v 1.2 2006/08/28 20:57:36 rao Exp $
 */
public class ModifyRolesAction extends AbstractAction {

    protected ActionForward executeAction(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        log.debug("enter");
        String method = request.getParameter(ActionConstants.METHOD_NAME);
        if (method == null) {
            method = "";
        }
        List<String> unDeletedRoles = new ArrayList<String>();
        String[] ids = request.getParameterValues("ids");
        if (ids != null) {
            for (int i = 0; i < ids.length; i++) {
                String roleName = ids[i];
                log.debug("name... " + roleName);
                if (roleName.equalsIgnoreCase(N2bbSettings.N2BB_ADMIN_ROLE)) {
                    continue;
                }
                if (method.equals(ActionConstants.delete)) {
                	if (SecurityManager.getInstance().userExistsForRole(roleName)){
                		unDeletedRoles.add(roleName);
                	} else {
                		SecurityManager.getInstance().deleteRole(roleName);
                	}
                    
                }
            }
        }
        if(unDeletedRoles.size() > 0){
        	request.setAttribute(ActionConstants.UNDELETED_ROLES,unDeletedRoles);
        }
        return mapping.findForward("success");
    }
}



