DCS/ruiyiweiUX/Assets/Scripts/Services/AuthenticationService.cs

375 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// using System;
// using System.Collections.Generic;
// using System.IO;
// using UnityEngine;
// /// <summary>
// /// 认证服务实现类 - 支持跨平台持久化存储
// /// 使用 persistentDataPath 确保在 Android 系统上正常读写
// /// </summary>
// public class AuthenticationService : IAuthenticationService
// {
// private readonly string _dataFilePath;
// private UserDatabase _userDatabase;
// private const string DATA_FILE_NAME = "users.json";
// public bool IsLoggedIn { get; private set; }
// public string CurrentUsername { get; private set; }
// public UserRole CurrentRole { get; private set; }
// public CurrentUser CurrentUser { get; private set; }
// private UserLogService _userLogService;
// public AuthenticationService()
// {
// // 使用 persistentDataPath 而不是 streamingAssetsPath
// // persistentDataPath 在所有平台上都是可读写的,包括 Android
// _dataFilePath = Path.Combine(Application.persistentDataPath, DATA_FILE_NAME);
// // 初始化日志服务
// _userLogService = ServiceLocator.Get<UserLogService>();
// if (_userLogService == null)
// {
// _userLogService = new UserLogService();
// ServiceLocator.Register(_userLogService);
// }
// LoadUserDatabase();
// }
// public bool Login(string username, string password, out UserRole role)
// {
// role = UserRole.User;
// if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
// {
// return false;
// }
// var user = _userDatabase.FindUser(username);
// if (user != null && user.Password == password)
// {
// IsLoggedIn = true;
// CurrentUsername = username;
// CurrentRole = user.Role;
// CurrentUser = new CurrentUser { Username = username, Role = user.Role };
// role = user.Role;
// // 更新最后登录时间
// user.LastLoginTime = DateTime.Now;
// SaveUserDatabase();
// // 记录登录日志
// _userLogService?.LogUserOperation(username, "用户登录", $"角色: {user.Role}", true);
// Debug.Log($"用户 {username} 登录成功,角色: {user.Role}");
// return true;
// }
// // 记录登录失败日志
// _userLogService?.LogUserOperation(username, "用户登录", "密码错误或用户不存在", false);
// IsLoggedIn = false;
// CurrentUsername = null;
// CurrentRole = UserRole.User;
// CurrentUser = null;
// return false;
// }
// public bool ValidCurrentPassword(string password)
// {
// if (CurrentUser != null && CurrentUser.Username != null)
// {
// var user = _userDatabase.FindUser(CurrentUser.Username);
// if (user != null && user.Password == password)
// {
// Debug.Log("当前密码验证成功");
// return true;
// }
// }
// Debug.LogError("当前密码验证失败");
// return false;
// }
// public void Logout()
// {
// string logoutUser = CurrentUsername;
// // 记录登出日志
// if (!string.IsNullOrEmpty(logoutUser))
// {
// _userLogService?.LogUserOperation(logoutUser, "用户登出", "正常登出", true);
// }
// Debug.Log($"用户 {logoutUser} 登出");
// IsLoggedIn = false;
// CurrentUsername = null;
// CurrentRole = UserRole.User;
// CurrentUser = null;
// }
// /// <summary>
// /// 添加新用户
// /// </summary>
// public bool AddUser(string username, string password, UserRole role)
// {
// if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
// {
// Debug.LogError("用户名和密码不能为空");
// return false;
// }
// if (_userDatabase.FindUser(username) != null)
// {
// Debug.LogError($"用户 {username} 已存在");
// return false;
// }
// var newUser = new UserInfo
// {
// Username = username,
// Password = password,
// Role = role,
// CreatedTime = DateTime.Now,
// IsActive = true
// };
// _userDatabase.Users.Add(newUser);
// SaveUserDatabase();
// // 记录添加用户日志
// _userLogService?.LogUserOperation(CurrentUsername ?? "system", "添加用户",
// $"新用户: {username}, 角色: {role}", true);
// Debug.Log($"成功添加用户 {username},角色: {role}");
// return true;
// }
// /// <summary>
// /// 删除用户
// /// </summary>
// public bool RemoveUser(string username)
// {
// if (string.IsNullOrEmpty(username))
// {
// return false;
// }
// // 不能删除admin用户
// if (username.Equals("admin", StringComparison.OrdinalIgnoreCase))
// {
// Debug.LogError("不能删除管理员账户");
// return false;
// }
// var user = _userDatabase.FindUser(username);
// if (user != null)
// {
// _userDatabase.Users.Remove(user);
// SaveUserDatabase();
// // 记录删除用户日志
// _userLogService?.LogUserOperation(CurrentUsername ?? "system", "删除用户",
// $"被删除用户: {username}", true);
// Debug.Log($"成功删除用户 {username}");
// return true;
// }
// Debug.LogError($"用户 {username} 不存在");
// return false;
// }
// /// <summary>
// /// 修改用户密码 - 支持管理员重置和用户自改密码
// /// </summary>
// public bool ChangePassword(string username, string oldPassword, string newPassword)
// {
// if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(newPassword))
// {
// Debug.LogError("用户名和新密码不能为空");
// return false;
// }
// var user = _userDatabase.FindUser(username);
// if (user == null)
// {
// Debug.LogError($"用户 {username} 不存在");
// return false;
// }
// // 检查操作权限
// bool isAdmin = CurrentRole == UserRole.Admin;
// bool isSelfChange = username.Equals(CurrentUsername, StringComparison.OrdinalIgnoreCase);
// // 如果是管理员操作且不是修改自己的密码,可以跳过旧密码验证
// if (isAdmin && !isSelfChange)
// {
// user.Password = newPassword;
// user.PasswordChangedTime = DateTime.Now;
// SaveUserDatabase();
// // 记录管理员重置密码日志
// _userLogService?.LogUserOperation(CurrentUsername, "重置密码",
// $"重置用户 {username} 的密码", true);
// Debug.Log($"管理员重置用户 {username} 密码成功");
// return true;
// }
// // 其他情况需要验证旧密码
// if (string.IsNullOrEmpty(oldPassword))
// {
// Debug.LogError("修改密码需要提供旧密码");
// return false;
// }
// if (user.Password != oldPassword)
// {
// Debug.LogError("旧密码错误");
// return false;
// }
// user.Password = newPassword;
// user.PasswordChangedTime = DateTime.Now;
// SaveUserDatabase();
// // 记录修改密码日志
// _userLogService?.LogUserOperation(username, "修改密码",
// isSelfChange ? "用户自己修改" : "管理员代为修改", true);
// Debug.Log($"用户 {username} 密码修改成功");
// return true;
// }
// /// <summary>
// /// 获取所有用户信息(不包含密码)
// /// </summary>
// public List<UserInfo> GetAllUsers()
// {
// var result = new List<UserInfo>();
// foreach (var user in _userDatabase.Users)
// {
// result.Add(new UserInfo
// {
// Username = user.Username,
// Role = user.Role,
// CreatedTime = user.CreatedTime,
// LastLoginTime = user.LastLoginTime,
// IsActive = user.IsActive
// // 不返回密码信息
// });
// }
// return result;
// }
// /// <summary>
// /// 加载用户数据库
// /// </summary>
// private void LoadUserDatabase()
// {
// try
// {
// if (File.Exists(_dataFilePath))
// {
// string json = File.ReadAllText(_dataFilePath);
// _userDatabase = JsonUtility.FromJson<UserDatabase>(json);
// if (_userDatabase == null || _userDatabase.Users == null)
// {
// Debug.LogWarning("用户数据库格式错误,创建新的数据库");
// CreateDefaultUserDatabase();
// }
// else
// {
// Debug.Log($"成功加载用户数据库,共 {_userDatabase.Users.Count} 个用户");
// }
// }
// else
// {
// // 创建默认用户数据库
// CreateDefaultUserDatabase();
// }
// }
// catch (Exception ex)
// {
// Debug.LogError($"加载用户数据库失败: {ex.Message}");
// CreateDefaultUserDatabase();
// }
// // 确保数据库不为空
// if (_userDatabase == null)
// {
// CreateDefaultUserDatabase();
// }
// }
// /// <summary>
// /// 保存用户数据库
// /// </summary>
// private void SaveUserDatabase()
// {
// try
// {
// // 确保目录存在persistentDataPath 通常已存在)
// string directory = Path.GetDirectoryName(_dataFilePath);
// if (!Directory.Exists(directory))
// {
// Directory.CreateDirectory(directory);
// }
// string json = JsonUtility.ToJson(_userDatabase, true);
// File.WriteAllText(_dataFilePath, json);
// Debug.Log($"用户数据库保存成功: {_dataFilePath}");
// }
// catch (Exception ex)
// {
// Debug.LogError($"保存用户数据库失败: {ex.Message}");
// }
// }
// /// <summary>
// /// 创建默认用户数据库
// /// </summary>
// private void CreateDefaultUserDatabase()
// {
// _userDatabase = new UserDatabase
// {
// Version = "1.0",
// Users = new List<UserInfo>
// {
// new UserInfo
// {
// Username = "admin",
// Password = "admin",
// Role = UserRole.Admin,
// CreatedTime = DateTime.Now,
// IsActive = true
// },
// new UserInfo
// {
// Username = "user",
// Password = "123456",
// Role = UserRole.User,
// CreatedTime = DateTime.Now,
// IsActive = true
// }
// }
// };
// SaveUserDatabase();
// Debug.Log("创建默认用户数据库");
// }
// /// <summary>
// /// 获取数据文件路径(用于调试)
// /// </summary>
// public string GetDataFilePath()
// {
// return _dataFilePath;
// }
// }