shiro dynamic menu item loading

 

shiro dynamic menu item loading

 

The essence of ChainDefinitionSectionMetaSource is to traverse all role menus, that is, double traversal of role menus, to realize the corresponding relationship between menus and roles

 

 

 

 

package com.houbank.incoming.web.shrio;

 

import com.alibaba.dubbo.config.annotation.Reference;

import com.houbank.basic.util.response.BaseResponse;

import com.houbank.incoming.api.FinancialSalesFuncFacade;

import com.houbank.incoming.api.FinancialSalesRoleFacade;

import com.houbank.incoming.model.condition.FinancialSalesRoleCondition;

import com.houbank.incoming.model.condition.FinancialSalesUserRoleCondition;

import com.houbank.incoming.model.domain.FinancialSalesFuncRole;

import com.houbank.incoming.model.domain.FinancialSalesRole;

import com.houbank.incoming.web.controller.FinancialSalesUserController;

import org.apache.shiro.config.Ini;

import org.springframework.beans.BeansException;

import org.springframework.beans.factory.FactoryBean;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

 

import java.util. *;

 

//import com.houbank.incoming.web.util.UserDetailsSessionService;

//import core.apps.rbac.login.UserDetailsSessionService;

 

 

public class ChainDefinitionSectionMetaSource implements FactoryBean<Ini.Section>{

 

 

    private String filterChainDefinitions;

    

//    @Autowired(required=false)

//    private UserDetailsSessionService userDetailsSessionService;

    

//    @Autowired(required=false)

//    private DBKeyHelp dBKeyHelp;

//

//    @Autowired(required=false)

//    private DBServerHelp dBServerHelp;

//

 

    @Autowired(required=false)

    private RedisTemplate redisTemplate;

 

    @Reference

    private FinancialSalesFuncFacade financialSalesFuncFacade;

 

    @Reference

    private FinancialSalesRoleFacade financialSalesRoleFacade;

    

    /**

     * Default premission string

     */

    public static final String PREMISSION_STRING="perms[\"{0}\"]";

    

   //Generic type is passed in with the class name plus <>, and the construction parameter is passed in with the class name plus ()

    public Ini.Section getObject() throws BeansException {

 

        //Get all resources

    Map<String,String> a = new HashMap<String,String>();

    try {

//dBKeyHelp.getSerialNo("LC", "1010", "");

//    dBServerHelp.getServerNo("10.100.84.38", "SUPT", "OD", "11");

//    DBKeyHelpBo dBKeyHelpBo= new DBKeyHelpBo();

//    dBKeyHelpBo.setIntypecode("OD");

//    dBKeyHelpBo.setInbranchid("0000");

//    dBKeyHelpBo.setsDateFmt("yy");

//    dBKeyHelpBo.setsNoFmt("0000000000");//000000

//    dBKeyHelpBo.setToday(new Date());

// dBKeyHelpBo.setNum (100);

//    String  serialNo= serialContext.getSerialNo(dBKeyHelpBo);

//    DBServerHelpBo dBServerHelpBo= new DBServerHelpBo();

//    dBServerHelpBo.setIpStr("10.100.84.38");

//    dBServerHelpBo.setServerType("SUPT");

// dBServerHelpBo.setBussType ("OD");

//    dBServerHelpBo.setBatchSaveSize("11");

//    dBServerHelpBo.setToday(new Date());

//    dBServerHelpBo.setsDateFmt("yyMMddHHmmss");

//    dBServerHelpBo.setsNoFmt("00000");

// dBServerHelpBo.setNum (100);

//    String serverSerialNo= serialContext.getSerialNo(dBServerHelpBo);

//    System.out.println("serialNo=="+serialNo+"======serverSerialNo===="+serverSerialNo);

//    serialNo= serialContext.getSerialNo(dBKeyHelpBo);

//    serverSerialNo= serialContext.getSerialNo(dBServerHelpBo);

//    System.out.println("serialNo=="+serialNo+"======serverSerialNo===="+serverSerialNo);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace ();

}

//        int n=0;

//        RedisLock lock = new RedisLock(redisTemplate, "quarz_key", 10000, 20000);

//        try {

//            if(lock.lock()) {

// //Code that needs to be locked

//                n++;

//                System.out.println("=========reirs======="+n);

//                System.out.println("=========reirs======="+lock.getLockKey());

//                System.out.println("=========reirs======="+lock.get("quarz_key_lock"));

//

//            }

//        }catch (InterruptedException e) {

// e.printStackTrace ();

//    }finally {

//        lock.unlock();

//    }

// financialSalesUserController.getweixinBaseInfoList();

        return  getSectionService(filterChainDefinitions) ;

    }

 

public Ini.Section getSectionService(String filterChainDefinitions) {

List<FinancialSalesFuncRole> list =new ArrayList<FinancialSalesFuncRole>();

        List<FinancialSalesFuncRole> listAll =new ArrayList<FinancialSalesFuncRole>();

//        list=this.baseService.findAll(RoleSkillBTEntity.class);

        FinancialSalesUserRoleCondition financialSalesRoleCondition =new FinancialSalesUserRoleCondition();

 

        list =  financialSalesRoleFacade.selectAll();

//        String sql = "SELECT b.*,s.URL from s_rbac_roleskillb  b ,s_rbac_skill s WHERE b.SKILLID=s.SKILLID";

        List <Map> branchArr = financialSalesRoleFacade.getRoleFuncUrl (financialSalesRoleCondition); // this.baseService.queryForJDBCList (sql);

//        SkillMenuEntity item = new SkillMenuEntity();

//        List<SkillMenuEntity> items =this.baseService.findAll(SkillMenuEntity.class);

//        SkillInfoEntity opmMenuitemlimit = new SkillInfoEntity();

//        List<SkillInfoEntity> opmMenuitemlimits =this.baseService.findAll(SkillInfoEntity.class);//opmMenuitemlimitService.getOpmMenuitemlimit(opmMenuitemlimit);

//        List<SkillMenuEntity> itemsb =new ArrayList<SkillMenuEntity>();

//        List<SkillInfoEntity> opmMenuitemlimitsb =new ArrayList<SkillInfoEntity>();

        Set<String> itms= new HashSet<String>();

        Set<String> itmls= new HashSet<String>();

        for (Iterator<Map> it1 = branchArr.iterator(); it1.hasNext();) {

        Map resource = (Map)it1.next();////Character menu information

//        if("1".equals(resource.get("validFlag"))){

        itmls.add(resource.get("funcId")+"");

//        }

        }

// for(String im :itmls){//The string is converted into an entity

//        SkillInfoEntity o = new SkillInfoEntity();

//        o.setSkillId(im);

//        opmMenuitemlimitsb.add(o);

//        }

        This this = new This();

        ini.load(filterChainDefinitions);

        This.Section section = ini.getSection(This.DEFAULT_SECTION_NAME);

        Map<String,Set<String>> mapr = new HashMap<String,Set<String>>();

        Set<String> roleIds=null;

        Set<String> mlroleIds=null;

        if(list!=null&&list.size()>0){

//Double loop speaks about the correspondence between roles and corresponding menus

        for(int i = 0; i < branchArr.size(); i++){// Traverse the character menu

        Map r = (Map)branchArr.get(i);

        roleIds=new HashSet<String>();

            mlroleIds=new HashSet<String>();

             for (Iterator<Map> it = branchArr.iterator(); it.hasNext();) {// Traverse the role menu

            Map resource = it.next();

        if(r.get("funcId").equals(resource.get("funcId"))){

            //If it is not empty, add it to the section

//            if("1".equals(resource.get("validFlag"))) {

            roleIds.add(resource.get("roleId")+"");

//            }

             }

        }

            if(!"".equals(r.get("url")) && null!=r.get("url")){

         mapr.put(r.get("url")+"", roleIds);

             }

        }

        }

        StringBuffer au=null;

        String st="";

//The matched is converted into the required format

        for(Map.Entry<String, Set<String>> en:mapr.entrySet()){

        au = new StringBuffer();

        au.append("authc,role[");

        for(String a :en.getValue()){

        au.append("\""+a+"\",");

        }

        String strau=au.substring(0,au.lastIndexOf(","));

        strau+="]";

        st+=en.getKey()+">>>>"+strau+"\n";

//         section.put(en.getKey()+"**",strau);

         section.put(en.getKey(),strau);

        }

        System.out.println(st);

return section;

}

 

    /**

     * Define the default url filter by filterChainDefinitions

     * 

     * @param filterChainDefinitions Default url filter definitions

     */

    public void setFilterChainDefinitions(String filterChainDefinitions) {

        this.filterChainDefinitions = filterChainDefinitions;

    }

 

    public Class<?> getObjectType() {

        return this.getClass();

    }

 

    public boolean isSingleton() {

        return false;

    }

 

    public FinancialSalesFuncFacade getFinancialSalesFuncFacade() {

        return financialSalesFuncFacade;

    }

 

    public void setFinancialSalesFuncFacade(FinancialSalesFuncFacade financialSalesFuncFacade) {

        this.financialSalesFuncFacade = financialSalesFuncFacade;

    }

 

    public FinancialSalesRoleFacade getFinancialSalesRoleFacade() {

        return financialSalesRoleFacade;

    }

 

    public void setFinancialSalesRoleFacade(FinancialSalesRoleFacade financialSalesRoleFacade) {

        this.financialSalesRoleFacade = financialSalesRoleFacade;

    }

}

 

 

 

 

 

 

 

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326067373&siteId=291194637