forked from datawhale/whale-town-front
feat:实现登录系统和用户认证功能
- 添加登录场景(login_scene.tscn)和主菜单场景(main_menu_scene.tscn) - 实现认证管理器(AuthManager)用于用户登录和会话管理 - 添加核心服务:加密服务、存储服务、网络服务 - 配置项目主场景为登录场景 - 添加自动加载服务到项目配置 - 添加开发环境配置(VSCode、Claude) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
66
scripts/data/UserData.gd
Normal file
66
scripts/data/UserData.gd
Normal file
@@ -0,0 +1,66 @@
|
||||
class_name UserData
|
||||
|
||||
## 用户数据类
|
||||
## 用于存储用户的基本信息
|
||||
|
||||
var id: String = ""
|
||||
var username: String = ""
|
||||
var nickname: String = ""
|
||||
var email: String = ""
|
||||
var phone: String = ""
|
||||
var avatarUrl: String = ""
|
||||
var role: int = 1
|
||||
var createdAt: String = ""
|
||||
|
||||
# 兼容旧字段
|
||||
var level: int = 1
|
||||
var exp: int = 0
|
||||
var createTime: int = 0
|
||||
|
||||
## 从字典创建 UserData 对象
|
||||
static func fromDict(data: Dictionary) -> UserData:
|
||||
var userData = UserData.new()
|
||||
|
||||
# 新字段(处理可能为 null 的值)
|
||||
userData.id = str(data.get("id", ""))
|
||||
userData.username = _getStringOrEmpty(data, "username")
|
||||
userData.nickname = _getStringOrEmpty(data, "nickname")
|
||||
userData.email = _getStringOrEmpty(data, "email")
|
||||
userData.phone = _getStringOrEmpty(data, "phone")
|
||||
userData.avatarUrl = _getStringOrEmpty(data, "avatar_url", _getStringOrEmpty(data, "avatarUrl"))
|
||||
userData.role = int(data.get("role", 1))
|
||||
userData.createdAt = _getStringOrEmpty(data, "created_at", _getStringOrEmpty(data, "createdAt"))
|
||||
|
||||
# 兼容旧字段
|
||||
userData.level = data.get("level", 1)
|
||||
userData.exp = data.get("exp", 0)
|
||||
userData.createTime = data.get("create_time", data.get("createTime", 0))
|
||||
|
||||
return userData
|
||||
|
||||
## 辅助方法:从字典中获取字符串,如果为 null 则返回空字符串
|
||||
static func _getStringOrEmpty(data: Dictionary, key: String, defaultValue: String = "") -> String:
|
||||
var value = data.get(key, defaultValue)
|
||||
if value == null:
|
||||
return ""
|
||||
return str(value)
|
||||
|
||||
## 转换为字典
|
||||
func toDict() -> Dictionary:
|
||||
return {
|
||||
"id": id,
|
||||
"username": username,
|
||||
"nickname": nickname,
|
||||
"email": email,
|
||||
"phone": phone,
|
||||
"avatar_url": avatarUrl,
|
||||
"role": role,
|
||||
"created_at": createdAt,
|
||||
"level": level,
|
||||
"exp": exp,
|
||||
"create_time": createTime
|
||||
}
|
||||
|
||||
## 打印用户信息(用于调试)
|
||||
func toString() -> String:
|
||||
return "UserData(id=%s, username=%s, nickname=%s, role=%d)" % [id, username, nickname, role]
|
||||
Reference in New Issue
Block a user