private async Task SetDefaultCharacterAsync(ulong accountId, MySqlConnection conn) { var characters = await CharacterCollector.FindCharactersAsync(accountId); if (characters.Count() > 0) { await SetDefaultCharacterAsync( accountId, characters.First().RealmId, characters.First().Id, characters.First().Name, characters.First().Race, characters.First().Class, characters.First().Level, conn); } else { await conn.ExecuteAsync( "UPDATE `pomelo_account` " + "SET `DefaultRealm` = NULL, " + "`DefaultCharacter` = NULL " + "WHERE `Id` = @Id", new { Id = accountId }); } }
public async Task <IActionResult> Login(string username, string password) { using (var conn = Account.GetAuthDb()) { var query = await conn.QueryAsync <Account>( "SELECT * FROM `pomelo_account`" + "WHERE `username` = @username", new { username }); var user = query.SingleOrDefault(); if (user == null) { return(Prompt(x => { x.Title = "登录失败"; x.Details = $"用户{username}不存在"; x.StatusCode = 404; })); } var validate = SHA256.Validate(username, password, user.Salt, user.Hash); if (!validate) { return(Prompt(x => { x.Title = "登录失败"; x.Details = $"用户名或密码不正确"; x.StatusCode = 400; })); } // Set default character if (user.DefaultRealm.HasValue) { var character = await CharacterCollector.GetCharacterAsync(user.DefaultRealm.Value, user.DefaultCharacter.Value); if (character.AccountId != user.Id) { await SetDefaultCharacterAsync(user.Id, conn); } else { await SetDefaultCharacterAsync(user.Id, character.RealmId, character.Id, character.Name, character.Race, character.Class, character.Level, conn); } } else { await SetDefaultCharacterAsync(user.Id, conn); } HttpContext.Session.SetString("user", user.Username); return(RedirectToAction("Index")); } }
public async Task <IActionResult> Index(uint realmId, uint characterId) { using (var conn = Account.GetAuthDb()) { var character = await CharacterCollector.GetCharacterAsync(realmId, characterId); await SetDefaultCharacterAsync( Account.Id, realmId, characterId, character.Name, character.Race, character.Class, character.Level, conn); } return(Prompt(x => { x.Title = "切换成功"; x.Details = "您已经成功切换至新角色"; x.HideBack = true; x.RedirectText = "刷新"; x.RedirectUrl = Url.Action("Index"); })); }
public async Task <IActionResult> Index() { var characters = await CharacterCollector.FindCharactersAsync(Account.Id); return(View(characters)); }