有思俱乐部学习园地

网盘权限接口

案例尝试前提:

           需要载入以下js,css调用user的UI方法,才可以进行使用
           <script type="text/javascript" charset="utf-8" src="http://www.1473.cn/uform.js "></script>
           <link href="http://www.1473.cn/css/Disk/Disk.css" rel="stylesheet" type="text/css">
           <script src="http://disk.1473.cn/js/Disk/Disk.js" type="text/javascript"></script>
            

用户权限关系图:

用户权限关系图

用户权限方法流程图:

用户权限方法流程图

代码解释:

                
/**
* 判断是否具有添加网盘的操作权限 判断是否有添加的权限 和 获取的权限
* @param  {string}  操作的目录id
* @param  {array}  用户的网盘信息
* @param  {object}  在该目录下操作的文件
* @return  {array}  得到操作权限数组
*           0 判断该目录是否允许上传  1、自己建立的目录是可以下载的 2、没有限制只允许上传的可以下载
*           1 判断该目录是否允许下载   1、自己建立的目录是可以上传的 2、ftp中没有限制只允许上传的是可以下载
*           2 判断是否具有添加网盘的操作权限 判断是否有添加的权限 和 获取的权限
*           3 获取上传的目录用户对应的临时目录
*           4 判断操作的文件是否有本人有关 包含是本人创建、本人网盘里、在本人创建的群里
*/
U.MD.DK.C.getDirectoryPermissions = function (fileordirid, diskinfo) {
    diskinfo = diskinfo || US.disk.UserDisk; //需要操作的当前用户的网盘信息
    var _isftp, //是否操作ftp
        _ismyself, //是否操作本人网盘内容
        _isuserdisk, //是否在自己的网盘中
        _isgroup, //是否在群里
        _isgroupmain,
        _permissions = US.permission.getDiskPermission(), //调用方法,从权限变量文件中获取克隆一份权限
        _permissioninfo = U.MD.DK.C.readWritePermission(fileordirid, diskinfo), //获取权限
        _dirinfo = _permissioninfo[0][_permissioninfo[0].length - 1], //所操作的文件或者是文件夹所操作的目录
        _currentfileordir = _permissioninfo[0][0], //当前操作的文件或者文件夹
        _readwrite = _permissioninfo.splice(1) //得到文件的读写权限和祖先元素
    ;


    //如果是未登录、群、最新文档,协同文档,则没有权限操作
    if (_currentfileordir && !US.userInfo.UserId || _currentfileordir.UserDirectoryID == diskinfo.directoryOrFiles[0].UserDirectoryID || _currentfileordir.UserDirectoryID == diskinfo.directoryOrFiles[1].UserDirectoryID || _currentfileordir.UserDirectoryID == diskinfo.directoryOrFiles[2].UserDirectoryID) {

            _permissions.isopen=false; //是否允许打开, 现在所有的文件都有打开权限
            _permissions.isupadte= false; //是否允许修改, 只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
            _permissions.isdelete= false; //是否允许删除, 只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
            _permissions.iscopy= false; //是否允许复制,现在所有的文件都有复制权限
            _permissions.isshear= false; //是否允许剪切,只有自己的文件,他人添加文件或者文件夹到我的ftp中,或者是我作为群主的群文件
            _permissions.isencryption= false; //是否允许加密,展示取消这个功能。
            _permissions.isreply= false; //是否允许加密,展示取消这个功能。
            _permissions.isdownload= false; //是否允许下载,只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
            _permissions.isnew= false; //是否允许新建, 只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
            _permissions.ispaste= false; //是否允许粘贴,只有自己的文件夹,或者是任何人的ftp文件夹下及下的文件夹,或者是群里
            _permissions.isrefresh= false; //是否允许刷新, 现在所有的文件都有刷新权限
            _permissions.isupload= false; //是否允许上传,文件夹设置了不允许下载的文件夹和文件夹下的所有文件都不允许下载,其他都有权限
            _permissions.isview= false; //是否允许视图切换,所有的文件夹都支持
            _permissions.isedit=false; //是否允许编辑,只有拥有可修改权限的文本文件才能修改
    }
    else {
        //在我的ftp中,我可以操作所有人的东西,我具备所有的权限
        _isgroup = _dirinfo.GroupID != ""; //是否是群文件
        _isftp = diskinfo.userInfo.UserId == _currentfileordir.GroupID; //判断是否为ftp目录下的文件
        _isuserdisk = (diskinfo.userInfo.UserId == diskinfo.operator); //是否是属于自己的网盘
        _isgroupmain = U.Json.select(diskinfo.groups, { "UserDirectoryID": _dirinfo.GroupID, "UserId": diskinfo.operator }).length > 0; //判断自己是否是群主
        _ismyself = _currentfileordir.UserId == diskinfo.operator; //判断是否是操作本人的文件,群里的文件非本人创建的或者不是自己的群都不为自己的文件
        //在我的ftp中,我可以操作所有人的东西,我具备所有的权限
        //判断是否为本人操作
        if (!_isuserdisk) {
            //如果不是,为外来访客

            //判断是否为ftp文件,如果不是
            if (!_isftp) {
                _permissions.isnew = false; //不允许新建
                _permissions.isopen = false; //不允许打开
            }
            //判断是否为本人文件,如果不是
            if (!_ismyself) {
                _permissions.isupadte = false; //不允许修改
                _permissions.isdelete = false; //不允许删除
                _permissions.isshear = false; //不允许剪切
                _permissions.isencryption = false; //不允许加密
                _permissions.ispaste = false; //不允许粘贴
                _permissions.isedit = false; //不允许编辑
            }

        } else {
            //如果是自己的文件夹中
            //判断是否为他人邀请文件夹,如果是
            //判断是否为自己的文件,如果不是
            if (_isgroup && !_ismyself && !_isgroupmain) {
                _permissions.isupadte = false; //不允许修改
                _permissions.isdelete = false; //不允许删除
                _permissions.isshear = false; //不允许剪切
                _permissions.isencryption = false; //不允许加密
                _permissions.ispaste = false; //不允许粘贴
                _permissions.isedit = false; //不允许编辑
            }
            //判断是否为协同文档的第一层,协同群,如果是
            if (_isgroup && _currentfileordir.UserDirectoryDeep == 1) {
                _permissions.isupadte = false; //不允许修改
                _permissions.isdelete = false; //不允许删除
                _permissions.isshear = false; //不允许剪切
                _permissions.isencryption = false; //不允许加密
                _permissions.ispaste = false; //不允许粘贴
                _permissions.isedit = false; //不允许编辑
                _permissions.iscopy = false; //不予许复制
                _permissions.isdownload = false; //不予许下载
            }

        }

        //1只允许上传
        if (!_ismyself && _readwrite.indexOf("1") > -1) {
            _permissions.isdownload = false; //不允许下载
            _permissions.copy = false; //不允许复制
            _permissions.isshear = false; //不允许剪切
        }
        //2只允许下载
        if (!_ismyself && _readwrite.indexOf("2") > -1) {
            _permissions.isnew = false; //不允许新建
            _permissions.isupload = false; //不允许上传
            _permissions.ispaste = false; //不允许粘贴

        }
        //如果是文件的话就没有视图模式
        if (fileordirid && fileordirid.filetype == 1) {
            _permissions.isview = false;
        }
        else {
            _permissions.isreply = false;
        }
        if (!diskinfo.pasteDirOrFile) {
            _permissions.ispaste = false; //不允许粘贴
        }
    }
    //选择了多目录的处理
    if (diskinfo.selectElement && diskinfo.selectElement.length > 1) {
        _permissions.isopen = false; //取消同时打开的功能
        _permissions.isupadte = false; //取消修改的功能
    }
    diskinfo.permissions = _permissions; //设置权限

    return _permissions;
}

                

工作人员

 
作者:周琳恒
信息录入:周琳恒