mirror of
https://github.com/Leonmmcoset/CMLeonOS.git
synced 2026-03-03 15:30:27 +00:00
update
This commit is contained in:
172
UserSystem.cs
Normal file
172
UserSystem.cs
Normal file
@@ -0,0 +1,172 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace CMLeonOS
|
||||
{
|
||||
public class UserSystem
|
||||
{
|
||||
private string adminPasswordFilePath = @"0:\admin_password.txt";
|
||||
private bool isPasswordSet = false;
|
||||
|
||||
public UserSystem()
|
||||
{
|
||||
CheckPasswordStatus();
|
||||
}
|
||||
|
||||
private void CheckPasswordStatus()
|
||||
{
|
||||
try
|
||||
{
|
||||
isPasswordSet = File.Exists(adminPasswordFilePath);
|
||||
}
|
||||
catch
|
||||
{
|
||||
isPasswordSet = false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsPasswordSet
|
||||
{
|
||||
get { return isPasswordSet; }
|
||||
}
|
||||
|
||||
public void SetAdminPassword()
|
||||
{
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine(" First Time Setup");
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine("Please set a password for admin user:");
|
||||
|
||||
string password = ReadPassword();
|
||||
|
||||
Console.WriteLine("Please confirm your password:");
|
||||
string confirmPassword = ReadPassword();
|
||||
|
||||
if (password == confirmPassword)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 简单存储密码(实际应用中应使用加密)
|
||||
File.WriteAllText(adminPasswordFilePath, password);
|
||||
Console.WriteLine("Password set successfully!");
|
||||
isPasswordSet = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error setting password: {ex.Message}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Passwords do not match. Please try again.");
|
||||
SetAdminPassword();
|
||||
}
|
||||
}
|
||||
|
||||
public bool Login()
|
||||
{
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine(" System Login");
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine("Username: admin");
|
||||
Console.WriteLine("Password:");
|
||||
|
||||
string password = ReadPassword();
|
||||
|
||||
try
|
||||
{
|
||||
string storedPassword = File.ReadAllText(adminPasswordFilePath);
|
||||
if (password == storedPassword)
|
||||
{
|
||||
Console.WriteLine("Login successful!");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Invalid password. Please try again.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error during login: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private string ReadPassword()
|
||||
{
|
||||
string password = "";
|
||||
while (true)
|
||||
{
|
||||
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
|
||||
if (keyInfo.Key == ConsoleKey.Enter)
|
||||
{
|
||||
Console.WriteLine();
|
||||
break;
|
||||
}
|
||||
else if (keyInfo.Key == ConsoleKey.Backspace)
|
||||
{
|
||||
if (password.Length > 0)
|
||||
{
|
||||
password = password.Substring(0, password.Length - 1);
|
||||
// 简化退格处理,只修改password字符串
|
||||
// 在Cosmos中,Console.Write("\b \b")可能不被支持
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
password += keyInfo.KeyChar;
|
||||
Console.Write("*");
|
||||
}
|
||||
}
|
||||
return password;
|
||||
}
|
||||
|
||||
public bool ChangePassword()
|
||||
{
|
||||
Console.WriteLine("====================================");
|
||||
Console.WriteLine(" Change Password");
|
||||
Console.WriteLine("====================================");
|
||||
|
||||
// 验证当前密码
|
||||
Console.WriteLine("Please enter your current password:");
|
||||
string currentPassword = ReadPassword();
|
||||
|
||||
try
|
||||
{
|
||||
string storedPassword = File.ReadAllText(adminPasswordFilePath);
|
||||
if (currentPassword != storedPassword)
|
||||
{
|
||||
Console.WriteLine("Current password is incorrect.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// 设置新密码
|
||||
Console.WriteLine("Please enter your new password:");
|
||||
string newPassword = ReadPassword();
|
||||
|
||||
Console.WriteLine("Please confirm your new password:");
|
||||
string confirmPassword = ReadPassword();
|
||||
|
||||
if (newPassword == confirmPassword)
|
||||
{
|
||||
// 存储新密码
|
||||
File.WriteAllText(adminPasswordFilePath, newPassword);
|
||||
Console.WriteLine("Password changed successfully!");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("New passwords do not match.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error changing password: {ex.Message}");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user