mirror of
https://gitee.com/czh-dev/upload-hub
synced 2026-09-07 08:27:00 +08:00
fix:完善权限管理,限制普通用户访问内容
This commit is contained in:
@@ -7,6 +7,7 @@ import cn.czh.service.IStorageConfigService;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@@ -42,7 +43,8 @@ public class ConfigController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/getPassword")
|
@GetMapping("/getPassword")
|
||||||
public Result<?> getPassword() {
|
public Result<?> getPassword(HttpServletRequest request) {
|
||||||
return Result.success(authService.getMainUserPassword());
|
boolean mainUser = authService.isMainUser(request.getRemoteAddr());
|
||||||
|
return Result.success(authService.getMainUserPassword() + (mainUser ? 1 : 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,11 +73,17 @@ export default {
|
|||||||
async getPassword() {
|
async getPassword() {
|
||||||
try {
|
try {
|
||||||
const res = await getPassword();
|
const res = await getPassword();
|
||||||
this.tempPassword = res.data;
|
const dataStr = res.data.toString();
|
||||||
if (res.data) {
|
const password = dataStr.slice(0, -1);
|
||||||
|
const mainUser = dataStr.slice(-1) === '1';
|
||||||
|
|
||||||
|
this.tempPassword = password;
|
||||||
|
if (password) {
|
||||||
this.tempEnablePassword = true;
|
this.tempEnablePassword = true;
|
||||||
this.showPasswordDialog = true;
|
this.showPasswordDialog = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.$emit('main-user', mainUser);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取密码失败:', error);
|
console.error('获取密码失败:', error);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,14 +10,14 @@
|
|||||||
<div class="menu-icon">☰</div>
|
<div class="menu-icon">☰</div>
|
||||||
<div v-show="showMenu" class="dropdown-menu">
|
<div v-show="showMenu" class="dropdown-menu">
|
||||||
<div class="menu-item" @click="openSettings">上传设置</div>
|
<div class="menu-item" @click="openSettings">上传设置</div>
|
||||||
<div class="menu-item" @click="openStorageConfig">存储配置</div>
|
<div class="menu-item" v-if="isAdmin" @click="openStorageConfig">存储配置</div>
|
||||||
<div class="menu-item" @click="openPasswordConfig">密码设置</div>
|
<div class="menu-item" v-if="isAdmin" @click="openPasswordConfig">密码设置</div>
|
||||||
<div class="menu-item" @click="openAbout">关于</div>
|
<div class="menu-item" @click="openAbout">关于</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-bar">
|
<div class="tab-bar">
|
||||||
<div v-for="tab in tabs" :key="tab.value" :class="['tab', { 'active': activeTab === tab.value }]"
|
<div v-for="tab in filteredTabs" :key="tab.value" :class="['tab', { 'active': activeTab === tab.value }]"
|
||||||
@click="switchTab(tab.value)">
|
@click="switchTab(tab.value)">
|
||||||
{{ tab.label }}
|
{{ tab.label }}
|
||||||
<div class="tab-underline"></div>
|
<div class="tab-underline"></div>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
@save="saveSettings" @close="closeSettings" />
|
@save="saveSettings" @close="closeSettings" />
|
||||||
<storage-config-modal :show="showStorageConfig" :storage-options="storageOptions" @close="closeStorageConfig" />
|
<storage-config-modal :show="showStorageConfig" :storage-options="storageOptions" @close="closeStorageConfig" />
|
||||||
<about-modal :show="showAbout" @close="closeAbout" />
|
<about-modal :show="showAbout" @close="closeAbout" />
|
||||||
<password-config :show="showPasswordConfig" @close="closePasswordConfig" />
|
<password-config :show="showPasswordConfig" @close="closePasswordConfig" @main-user="handleMainUser" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -62,15 +62,6 @@ export default {
|
|||||||
return {
|
return {
|
||||||
fileList: [],
|
fileList: [],
|
||||||
activeTab: 'local',
|
activeTab: 'local',
|
||||||
tabs: [
|
|
||||||
{ label: 'Local', value: 'local' },
|
|
||||||
{ label: 'MinIO', value: 'minio' },
|
|
||||||
{ label: 'OSS', value: 'oss' },
|
|
||||||
{ label: 'OBS', value: 'obs' },
|
|
||||||
{ label: 'QiNiu', value: 'qiniu' },
|
|
||||||
{ label: '已上传文件', value: 'gallery' },
|
|
||||||
{ label: '共享文件', value: 'shared' },
|
|
||||||
],
|
|
||||||
showMenu: false,
|
showMenu: false,
|
||||||
showSettings: false,
|
showSettings: false,
|
||||||
showStorageConfig: false,
|
showStorageConfig: false,
|
||||||
@@ -82,10 +73,22 @@ export default {
|
|||||||
{ label: 'Local', value: 'local' },
|
{ label: 'Local', value: 'local' },
|
||||||
{ label: 'MinIO', value: 'minio' },
|
{ label: 'MinIO', value: 'minio' },
|
||||||
{ label: 'OSS', value: 'oss' }
|
{ label: 'OSS', value: 'oss' }
|
||||||
]
|
],
|
||||||
|
isAdmin: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
filteredTabs() {
|
||||||
|
return [
|
||||||
|
{ label: 'Local', value: 'local' },
|
||||||
|
{ label: 'MinIO', value: 'minio' },
|
||||||
|
{ label: 'OSS', value: 'oss' },
|
||||||
|
{ label: 'OBS', value: 'obs' },
|
||||||
|
{ label: 'QiNiu', value: 'qiniu' },
|
||||||
|
{ label: '共享文件', value: 'shared' },
|
||||||
|
...(this.isAdmin ? [{ label: '已上传文件', value: 'gallery' }] : []),
|
||||||
|
];
|
||||||
|
},
|
||||||
isWipTab() {
|
isWipTab() {
|
||||||
return this.activeTab === 'obs' || this.activeTab === 'qiniu';
|
return this.activeTab === 'obs' || this.activeTab === 'qiniu';
|
||||||
}
|
}
|
||||||
@@ -133,6 +136,9 @@ export default {
|
|||||||
},
|
},
|
||||||
closePasswordConfig() {
|
closePasswordConfig() {
|
||||||
this.showPasswordConfig = false;
|
this.showPasswordConfig = false;
|
||||||
|
},
|
||||||
|
handleMainUser(isMainUser) {
|
||||||
|
this.isAdmin = isMainUser;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user