mirror of
https://github.com/KOHGYLW/kiftd-source.git
synced 2025-01-08 12:07:47 +08:00
update to v1.2.0 新增“超级权限”功能
This commit is contained in:
parent
6c98aa6511
commit
5d34917d49
2
TODO.txt
2
TODO.txt
@ -204,7 +204,7 @@ test.auth.xxx=ucd
|
||||
计划中 v1.2.0
|
||||
--------------
|
||||
【已完成】将文件体积的单位精确到Byte,以便用户能够更加精准地获取文件体积。
|
||||
【待实现】在账户配置中新增“超级管理员”身份设置:具备该身份的账户将无视权限和分组设定,可执行一切操作并可访问任何文件夹(包括“仅创建者”文件夹)。
|
||||
【已完成】在账户配置中新增“超级权限”设置:具备该权限的账户将无视权限和分组设定,可执行一切操作并可访问任何文件夹(包括“仅创建者”文件夹)。
|
||||
注:该功能旨在方便系统管理员更为方便快捷的对整个系统进行全权管理。
|
||||
【待实现】新增扩展存储区导出功能:当用户删除某一扩展存储区时,可以选择将该存储区内的文件全部导出至指定位置,便于对其进行归档。
|
||||
【待实现】完善移动“m”权限的安全性:当仅有“m”权限时,用户可执行“复制”操作;若同时具备删除“d”权限,才可以进行“剪切”操作。
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user