Package com.thinkgem.jeesite.common.web

Source Code of com.thinkgem.jeesite.common.web.CKFinderConfig

/**
* Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.thinkgem.jeesite.common.web;

import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServletRequest;

import org.apache.shiro.SecurityUtils;

import com.ckfinder.connector.ServletContextFactory;
import com.ckfinder.connector.configuration.Configuration;
import com.ckfinder.connector.data.AccessControlLevel;
import com.ckfinder.connector.utils.AccessControlUtil;
import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm.Principal;

/**
* CKFinder配置
* @author ThinkGem
* @version 2013-01-15
*/
public class CKFinderConfig extends Configuration {

  public static final String CK_BASH_URL = "/userfiles/";

  public CKFinderConfig(ServletConfig servletConfig) {
        super(servletConfig)
    }
 
  @Override
    protected Configuration createConfigurationInstance() {
    boolean isView = SecurityUtils.getSubject().isPermitted("cms:ckfinder:view");
    boolean isUpload = SecurityUtils.getSubject().isPermitted("cms:ckfinder:upload");
    boolean isEdit = SecurityUtils.getSubject().isPermitted("cms:ckfinder:edit");
    List<AccessControlLevel> accessControlLevels = this.getAccessConrolLevels();
    if(accessControlLevels.size() > 0){
      AccessControlLevel alc = this.getAccessConrolLevels().get(0);
      alc.setFolderView(isView);
      alc.setFolderCreate(isEdit);
      alc.setFolderRename(isEdit);
      alc.setFolderDelete(isEdit);
      alc.setFileView(isView);
      alc.setFileUpload(isUpload);
      alc.setFileRename(isEdit);
      alc.setFileDelete(isEdit);
    }
//    for (AccessControlLevel a : this.getAccessConrolLevels()){
//      System.out.println(a.getRole()+", "+a.getResourceType()+", "+a.getFolder()
//          +", "+a.isFolderView()+", "+a.isFolderCreate()+", "+a.isFolderRename()+", "+a.isFolderDelete()
//          +", "+a.isFileView()+", "+a.isFileUpload()+", "+a.isFileRename()+", "+a.isFileDelete());
//    }
    AccessControlUtil.getInstance(this).loadACLConfig();
    try {
      Principal principal = (Principal)SecurityUtils.getSubject().getPrincipal();
      this.baseURL = ServletContextFactory.getServletContext().getContextPath()+"/userfiles/"+
          (principal!=null?principal.getId():0)+"/";
      /*Principal principal = (Principal) SecurityUtils.getSubject().getPrincipal();
      String parentDir = principal != null ? principal.getId() : "0";
      this.baseURL = ServletContextFactory.getServletContext().getContextPath() + CK_BASH_URL + parentDir + "/";
      this.baseDir = Global.getCkBaseDir() + parentDir + File.separator;*/
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    return new CKFinderConfig(this.servletConf);
    }

    @Override 
    public boolean checkAuthentication(final HttpServletRequest request) {
        return SecurityUtils.getSubject().getPrincipal()!=null;
    }

}
TOP

Related Classes of com.thinkgem.jeesite.common.web.CKFinderConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.