FsSecurityCheckForAll.java
package sk.iway.iwcm.system.elfinder;
import cn.bluejoe.elfinder.service.FsItem;
import cn.bluejoe.elfinder.service.FsSecurityChecker;
import cn.bluejoe.elfinder.service.FsService;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.SetCharacterEncodingFilter;
import sk.iway.iwcm.users.UsersDB;
public class FsSecurityCheckForAll implements FsSecurityChecker
{
boolean _locked = false;
boolean _readable = true;
boolean _writable = true;
public boolean isLocked()
{
return _locked;
}
@Override
public boolean isLocked(FsService fsService, FsItem fsi)
{
return _locked;
}
public boolean isReadable()
{
return _readable;
}
@Override
public boolean isReadable(FsService fsService, FsItem fsi)
{
return _readable;
}
public boolean isWritable()
{
return _writable;
}
@Override
public boolean isWritable(FsService fsService, FsItem fsi)
{
if (fsi.getVolume() instanceof IwcmActualPageFsVolume)
{
return ((IwcmActualPageFsVolume)fsi.getVolume()).isWritable(fsi);
}
//zistim ci ma user pravo na zapis do tohto adresara
if (fsi instanceof IwcmFsItem)
{
if (SetCharacterEncodingFilter.getCurrentRequestBean()!=null&&SetCharacterEncodingFilter.getCurrentRequestBean().getUserId()>0)
{
Identity user = sk.iway.iwcm.system.elfinder.FsService.getCurrentUser();
if (user!=null)
{
String virtualPath = ((IwcmFsItem)fsi).getFile().getVirtualPath();
if ("/".equals(virtualPath) && fsi.getVolume() instanceof IwcmLibraryFsVolume)
{
//pre library nie je mozne zapisovat do rootu
return false;
}
return UsersDB.isFolderWritable(user.getWritableFolders(), virtualPath);
}
}
}
return _writable;
}
public void setLocked(boolean locked)
{
_locked = locked;
}
public void setReadable(boolean readable)
{
_readable = readable;
}
public void setWritable(boolean writable)
{
_writable = writable;
}
}