refactor(vfs): 重构VFS模块,拆分数据访问逻辑与路径解析逻辑
将原先的 `vfs.go` 文件中的功能进行拆分,创建了独立的 DAO 层文件 `vfs_dao.go` 和路径处理文件 `vfs_path.go`,以提升代码结构清晰度和可维护性。 - 将数据库操作相关方法迁移至 `VfsDAO` 结构体中 - 新增 `vfs_dao.go` 文件用于管理底层数据访问对象 - 新增 `vfs_path.go` 文件专门处理路径解析逻辑 - 移除了原 `vfs.go` 中的数据库初始化、用户及节点操作等冗余代码
This commit is contained in:
@ -30,7 +30,7 @@ func (v *VfsImpl) PermissionMiddleware(handler api.StrictHandlerFunc, operation
|
||||
token := ctx.GetHeader("X-VFS-Token")
|
||||
|
||||
// Admin token 拥有所有权限
|
||||
if token == v.config.AdminToken && len(token) != 0 {
|
||||
if token == v.Config.AdminToken && len(token) != 0 {
|
||||
return handler(ctx, request)
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ func (v *VfsImpl) PermissionMiddleware(handler api.StrictHandlerFunc, operation
|
||||
switch operation {
|
||||
case "CreateUser":
|
||||
// 只有admin或register token可以创建用户
|
||||
if token != v.config.RegisterToken {
|
||||
if token != v.Config.RegisterToken {
|
||||
return api.CreateUser403JSONResponse{
|
||||
ForbiddenErrorJSONResponse: api.ForbiddenErrorJSONResponse{
|
||||
Errtype: api.ErrorErrtypeForbidden,
|
||||
@ -57,8 +57,8 @@ func (v *VfsImpl) PermissionMiddleware(handler api.StrictHandlerFunc, operation
|
||||
}
|
||||
|
||||
// 验证token对应的用户是否存在
|
||||
user, err := v.vfs.GetUserByToken(token)
|
||||
if err != nil || (user.Name != username && token != v.config.AdminToken) {
|
||||
user, err := v.DAO.GetUserByToken(token)
|
||||
if err != nil || (user.Name != username && token != v.Config.AdminToken) {
|
||||
return api.DeleteUser403JSONResponse{
|
||||
ForbiddenErrorJSONResponse: api.ForbiddenErrorJSONResponse{
|
||||
Errtype: api.ErrorErrtypeForbidden,
|
||||
@ -155,12 +155,12 @@ func (v *VfsImpl) PermissionMiddleware(handler api.StrictHandlerFunc, operation
|
||||
// FIXME: using casbin to check it
|
||||
func (v *VfsImpl) CheckPermission(token, path, method string) (bool, error) {
|
||||
// Admin token 拥有所有权限
|
||||
if token == v.config.AdminToken && len(token) != 0 {
|
||||
if token == v.Config.AdminToken && len(token) != 0 {
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// 根据 token 获取用户信息
|
||||
user, err := v.vfs.GetUserByToken(token)
|
||||
user, err := v.DAO.GetUserByToken(token)
|
||||
if err != nil {
|
||||
// 匿名用户
|
||||
user = &models.VfsUser{Name: "", Token: ""}
|
||||
@ -180,7 +180,7 @@ func (v *VfsImpl) CheckPermission(token, path, method string) (bool, error) {
|
||||
// sub: 用户名 (匿名用户为空字符串)
|
||||
// obj: 路径
|
||||
// act: HTTP方法
|
||||
allowed, err := v.enfocer.Enforce(user.Name, path, method)
|
||||
allowed, err := v.Enfocer.Enforce(user.Name, path, method)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user