Files
zzy 35e79e54f1 refactor(vfs): 重构VFS模块,拆分数据访问逻辑与路径解析逻辑
将原先的 `vfs.go` 文件中的功能进行拆分,创建了独立的 DAO 层文件 `vfs_dao.go`
和路径处理文件 `vfs_path.go`,以提升代码结构清晰度和可维护性。

- 将数据库操作相关方法迁移至 `VfsDAO` 结构体中
- 新增 `vfs_dao.go` 文件用于管理底层数据访问对象
- 新增 `vfs_path.go` 文件专门处理路径解析逻辑
- 移除了原 `vfs.go` 中的数据库初始化、用户及节点操作等冗余代码
2025-09-29 00:42:45 +08:00

83 lines
1.7 KiB
Go

package vfs_service
import (
"crypto/rand"
"fmt"
"log"
"time"
"git.zzyxyz.com/zzy/zzyxyz_go_api/internal/vfs/models"
"github.com/casbin/casbin/v2"
)
type UserService struct {
// vfs *models.VfsService
vfs *models.VfsDAO
enforcer *casbin.Enforcer
// errorHandler *ErrorHandler
}
func NewUserService(vfs *models.VfsDAO, enforcer *casbin.Enforcer) *UserService {
return &UserService{
vfs: vfs,
enforcer: enforcer,
}
}
func generateToken() string {
bytes := make([]byte, 16)
if _, err := rand.Read(bytes); err != nil {
// fallback to time-based token
return fmt.Sprintf("%x", time.Now().UnixNano())
}
return fmt.Sprintf("%x", bytes)
}
func (s *UserService) CreateUser(username string) (*string, *VFSError) {
token := generateToken()
// 创建用户
err := s.vfs.CreateUser(username, token)
if err != nil {
return nil, &VFSError{
Type: ErrorTypeUserCreationFailed,
Error: err,
}
}
// 为新用户添加角色
_, err = s.enforcer.AddRoleForUser(username, "user")
if err != nil {
log.Printf("Failed to add role for user %s: %v", username, err)
}
// 保存策略
s.enforcer.SavePolicy()
// 返回带有token的响应
return &token, nil
}
func (s *UserService) DeleteUser(username string) *VFSError {
// 删除用户
err := s.vfs.DeleteUser(username)
if err != nil {
return &VFSError{
Type: ErrorTypeUserDeletionFailed,
Error: err,
}
}
// 从权限系统中移除用户
// 移除用户的所有角色
_, err = s.enforcer.DeleteRolesForUser(username)
if err != nil {
log.Printf("Failed to delete roles for user %s: %v", username, err)
}
// 保存策略
s.enforcer.SavePolicy()
// 成功删除返回204状态
return nil
}