using System; using System.Text; using System.Linq; using System.Collections.Generic; using MySql.Data.MySqlClient; using System.Security.Cryptography; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; namespace NightmareCoreWeb2.Pages { public class AccountModel : PageModel { string connStr = $"SslMode=None;server={Program.MysqlServer};user={Program.MysqlUser};database={Program.MysqlDatabase};port={Program.MysqlPort};password={Program.MysqlPassword}"; public string UserEmail { get; set; } public string UserPassword { get; set; } public string CharacterListType { get; set; } public string AuthToken { get; set; } public string Username { get; set; } public bool IsGM { get; set; } public Account UserAccount { get; set; } public List OnlineCharacters = new List(); public List Tickets = new List(); private readonly ILogger _logger; private MySqlConnection conn; public AccountModel(ILogger logger) { conn = new MySqlConnection(connStr); _logger = logger; } public void OnGetAccount(string name) { Account a = new Account(name, conn); //AuthToken = "OK"; UserAccount = a; OnlineCharacters = a.Characters; foreach (var access in a.Access) { if (access.RealmID == -1 && access.RealmID >= 1) { this.IsGM = true; this.Tickets = GMTicket.GetAllTickets(conn); } } ViewData["Title"] = a.Username; CharacterListType = $"{a.Username}'s Characters"; } public void OnGet() { ViewData["Title"] = "Login"; AuthToken = Request.Cookies["AuthToken"]; Username = Request.Cookies["Username"]; if (!string.IsNullOrEmpty(Username)) { Account a = new Account(Username, conn); AuthToken = "OK"; UserAccount = a; OnlineCharacters = a.Characters; foreach (var access in a.Access) { if (access.RealmID == -1 && access.RealmID >= 1) { this.IsGM = true; this.Tickets = GMTicket.GetAllTickets(conn); } } ViewData["Title"] = a.Username; CharacterListType = $"{a.Username}'s Characters"; } } public void OnPostLogin() { UserEmail = Request.Form["UserEmail"]; UserPassword = Request.Form["UserPassword"]; Username = UserEmail.Substring(0, UserEmail.IndexOf("@")); AuthToken = Hash($"{Username.ToUpper()}:{UserPassword.ToUpper()}"); Response.Cookies.Append("Username", Username); Response.Cookies.Append("AuthToken", AuthToken); } static string Hash(string input) { var hash = new SHA1Managed().ComputeHash(Encoding.UTF8.GetBytes(input)); return string.Concat(hash.Select(b => b.ToString("x2"))); } } }