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:
82
internal/vfs/services/vfs_user.go
Normal file
82
internal/vfs/services/vfs_user.go
Normal file
@ -0,0 +1,82 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user