update to v1.2.0 新增“超级权限”功能

This commit is contained in:
kohgylw 2023-12-24 18:05:44 +08:00
parent 6c98aa6511
commit 5d34917d49
4 changed files with 40 additions and 6 deletions

View File

@ -204,7 +204,7 @@ test.auth.xxx=ucd
计划中 v1.2.0
--------------
【已完成】将文件体积的单位精确到Byte以便用户能够更加精准地获取文件体积。
待实现】在账户配置中新增“超级管理员”身份设置:具备该身份的账户将无视权限和分组设定,可执行一切操作并可访问任何文件夹(包括“仅创建者”文件夹)。
已完成】在账户配置中新增“超级权限”设置:具备该权限的账户将无视权限和分组设定,可执行一切操作并可访问任何文件夹(包括“仅创建者”文件夹)。
注:该功能旨在方便系统管理员更为方便快捷的对整个系统进行全权管理。
【待实现】新增扩展存储区导出功能:当用户删除某一扩展存储区时,可以选择将该存储区内的文件全部导出至指定位置,便于对其进行归档。
【待实现】完善移动“m”权限的安全性当仅有“m”权限时用户可执行“复制”操作若同时具备删除“d”权限才可以进行“剪切”操作。

View File

@ -195,6 +195,9 @@ public class ConfigureReader {
* @return boolean 是否具备该操作的权限若具备返回true否则返回false
*/
public boolean authorized(final String account, final AccountAuth auth, List<String> folders) {
if (hasSuperAuth(account)) {
return true;// 对于具备超级权限的账户判定其在任何文件夹内具备任何权限
}
if (account != null && account.length() > 0) {
final StringBuffer auths = new StringBuffer();
for (String id : folders) {
@ -1019,12 +1022,17 @@ public class ConfigureReader {
if (f == null) {
return false;// 访问不存在的文件夹肯定是没权限
}
if (hasSuperAuth(account)) {
return true;// 如果账户具备超级权限则可无视访问级别对任意文件夹进行访问
}
// 否则根据文件夹访问级别判定该账户是否具备访问权限
int cl = f.getFolderConstraint();
if (cl == 0) {
return true;
return true;// 若是公开的0文件夹任何账户均可访问
} else {
if (account != null) {
if (cl == 1) {
// 若是仅小组1文件夹只允许创建者和同组账户访问
if (f.getFolderCreator().equals(account)) {
return true;
}
@ -1046,12 +1054,13 @@ public class ConfigureReader {
}
}
if (cl == 2) {
// 若是仅创建者2文件夹只允许创建者访问
if (f.getFolderCreator().equals(account)) {
return true;
}
}
}
return false;
return false;// 除了公开的文件夹外匿名账户均无法访问
}
}
@ -1575,15 +1584,40 @@ public class ConfigureReader {
public boolean isEnableWebDAV() {
return enableWebDAV;
}
/**
*
* <h2>获取删除留档路径</h2>
* <p>该方法返回删除留档路径绝对路径用以将删除的文件归档至该文件夹内</p>
* <p>
* 该方法返回删除留档路径绝对路径用以将删除的文件归档至该文件夹内
* </p>
*
* @author 青阳龙野(kohgylw)
* @return java.lang.String 归档文件夹的绝对路径如果未启用此功能则返回null
*/
public String getRecycleBinPath() {
return recycleBinPath;
}
/**
*
* <h2>判断某一账户是否具备超级权限</h2>
* <p>
* 该方法用于判断某一账户是否具备超级权限该权限在账户配置文件中由{账户名}.privilege=S指定
* </p>
*
* @param account 要检查的账户名例如admin
* @author 青阳龙野(kohgylw)
* @version 1.0
* @return boolean 该账户若具备超级权限则返回true否则返回false若账户名为null也返回false
*
*/
private boolean hasSuperAuth(String account) {
if (account != null) {
if ("S".equals(accountp.getProperty(account + ".privilege"))) {
return true;
}
}
return false;
}
}

View File

@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
#Sun Dec 24 12:07:00 CST 2023
#Sun Dec 24 17:41:48 CST 2023
m2e.projectLocation=/Users/kohgylw/Programs/java_workspace/kiftd
m2e.projectName=kiftd
groupId=kohgylw