diff --git a/ProjectLighthouse/Controllers/CommentController.cs b/ProjectLighthouse/Controllers/CommentController.cs index fd7cbbbf..de9ffa5c 100644 --- a/ProjectLighthouse/Controllers/CommentController.cs +++ b/ProjectLighthouse/Controllers/CommentController.cs @@ -47,7 +47,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers XmlSerializer serializer = new(typeof(Comment)); Comment? comment = (Comment?)serializer.Deserialize(new StringReader(bodyString)); - User? poster = await this.database.UserFromRequest(this.Request); + User? poster = await this.database.UserFromGameRequest(this.Request); if (poster == null) return this.StatusCode(403, ""); User? target = await this.database.Users.FirstOrDefaultAsync(u => u.Username == username); @@ -66,7 +66,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("deleteUserComment/{username}")] public async Task DeleteComment([FromQuery] int commentId, string username) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Comment? comment = await this.database.Comments.FirstOrDefaultAsync(c => c.CommentId == commentId); diff --git a/ProjectLighthouse/Controllers/EnterLevelController.cs b/ProjectLighthouse/Controllers/EnterLevelController.cs index de4d4e0a..ba24c642 100644 --- a/ProjectLighthouse/Controllers/EnterLevelController.cs +++ b/ProjectLighthouse/Controllers/EnterLevelController.cs @@ -24,13 +24,13 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("play/user/{slotId}")] public async Task PlayLevel(int slotId) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.SlotId == slotId); if (slot == null) return this.StatusCode(403, ""); - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -97,7 +97,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("enterLevel/{id:int}")] public async Task EnterLevel(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.database.Slots.FirstOrDefaultAsync(s => s.SlotId == id); diff --git a/ProjectLighthouse/Controllers/FriendsController.cs b/ProjectLighthouse/Controllers/FriendsController.cs index 34648a1b..9fc3b414 100644 --- a/ProjectLighthouse/Controllers/FriendsController.cs +++ b/ProjectLighthouse/Controllers/FriendsController.cs @@ -26,7 +26,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("npdata")] public async Task NPData() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); this.Request.Body.Position = 0; @@ -69,7 +69,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("myFriends")] public async Task MyFriends() { - (User, GameToken)? userAndToken = await this.database.UserAndTokenFromRequest(this.Request); + (User, GameToken)? userAndToken = await this.database.UserAndGameTokenFromRequest(this.Request); if (userAndToken == null) return this.StatusCode(403, ""); diff --git a/ProjectLighthouse/Controllers/ListController.cs b/ProjectLighthouse/Controllers/ListController.cs index 8c01c333..7b751551 100644 --- a/ProjectLighthouse/Controllers/ListController.cs +++ b/ProjectLighthouse/Controllers/ListController.cs @@ -29,7 +29,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("slots/lolcatftw/{username}")] public async Task GetLevelQueue(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -56,7 +56,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("lolcatftw/add/user/{id:int}")] public async Task AddQueuedLevel(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); QueuedLevel? queuedLevel = await this.database.QueuedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); @@ -79,7 +79,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("lolcatftw/remove/user/{id:int}")] public async Task RemoveQueuedLevel(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); QueuedLevel? queuedLevel = await this.database.QueuedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); @@ -93,7 +93,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("lolcatftw/clear")] public async Task ClearQueuedLevels() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); this.database.QueuedLevels.RemoveRange(this.database.QueuedLevels.Where(q => q.UserId == user.UserId)); @@ -110,7 +110,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("favouriteSlots/{username}")] public async Task GetFavouriteSlots(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -137,7 +137,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("favourite/slot/user/{id:int}")] public async Task AddFavouriteSlot(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); HeartedLevel? heartedLevel = await this.database.HeartedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); @@ -160,7 +160,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("unfavourite/slot/user/{id:int}")] public async Task RemoveFavouriteSlot(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); HeartedLevel? heartedLevel = await this.database.HeartedLevels.FirstOrDefaultAsync(q => q.UserId == user.UserId && q.SlotId == id); @@ -180,7 +180,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("favouriteUsers/{username}")] public async Task GetFavouriteUsers(string username, [FromQuery] int pageSize, [FromQuery] int pageStart) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); IEnumerable heartedProfiles = this.database.HeartedProfiles.Include @@ -204,7 +204,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("favourite/user/{username}")] public async Task AddFavouriteUser(string username) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); User? heartedUser = await this.database.Users.FirstOrDefaultAsync(u => u.Username == username); @@ -231,7 +231,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("unfavourite/user/{username}")] public async Task RemoveFavouriteUser(string username) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); User? heartedUser = await this.database.Users.FirstOrDefaultAsync(u => u.Username == username); diff --git a/ProjectLighthouse/Controllers/LoginController.cs b/ProjectLighthouse/Controllers/LoginController.cs index a3384241..2a1a9999 100644 --- a/ProjectLighthouse/Controllers/LoginController.cs +++ b/ProjectLighthouse/Controllers/LoginController.cs @@ -49,7 +49,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers GameToken? token = await this.database.AuthenticateUser(loginData, userLocation, titleId); if (token == null) return this.StatusCode(403, ""); - User? user = await this.database.UserFromToken(token); + User? user = await this.database.UserFromGameToken(token); if (user == null) return this.StatusCode(403, ""); Logger.Log($"Successfully logged in user {user.Username} as {token.GameVersion} client ({titleId})", LoggerLevelLogin.Instance); diff --git a/ProjectLighthouse/Controllers/MatchController.cs b/ProjectLighthouse/Controllers/MatchController.cs index ea448bba..87bd6e31 100644 --- a/ProjectLighthouse/Controllers/MatchController.cs +++ b/ProjectLighthouse/Controllers/MatchController.cs @@ -32,7 +32,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [Produces("text/plain")] public async Task Match() { - (User, GameToken)? userAndToken = await this.database.UserAndTokenFromRequest(this.Request); + (User, GameToken)? userAndToken = await this.database.UserAndGameTokenFromRequest(this.Request); if (userAndToken == null) return this.StatusCode(403, ""); diff --git a/ProjectLighthouse/Controllers/MessageController.cs b/ProjectLighthouse/Controllers/MessageController.cs index beab0d93..1e31bc29 100644 --- a/ProjectLighthouse/Controllers/MessageController.cs +++ b/ProjectLighthouse/Controllers/MessageController.cs @@ -27,7 +27,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("announce")] public async Task Announce() { - User user = await this.database.UserFromRequest(this.Request); + User user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); return this.Ok($"You are now logged in as user {user.Username} (id {user.UserId}).\n\n" + ServerSettings.Instance.EulaText); @@ -42,7 +42,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("filter")] public async Task Filter() { - User user = await this.database.UserFromRequest(this.Request); + User user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); string loggedText = await new StreamReader(this.Request.Body).ReadToEndAsync(); diff --git a/ProjectLighthouse/Controllers/PhotosController.cs b/ProjectLighthouse/Controllers/PhotosController.cs index 6dce4228..6d30d184 100644 --- a/ProjectLighthouse/Controllers/PhotosController.cs +++ b/ProjectLighthouse/Controllers/PhotosController.cs @@ -29,7 +29,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("uploadPhoto")] public async Task UploadPhoto() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); this.Request.Body.Position = 0; @@ -120,7 +120,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("deletePhoto/{id:int}")] public async Task DeletePhoto(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Photo? photo = await this.database.Photos.FirstOrDefaultAsync(p => p.PhotoId == id); diff --git a/ProjectLighthouse/Controllers/PublishController.cs b/ProjectLighthouse/Controllers/PublishController.cs index 7ce1365c..61444bc0 100644 --- a/ProjectLighthouse/Controllers/PublishController.cs +++ b/ProjectLighthouse/Controllers/PublishController.cs @@ -32,7 +32,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("startPublish")] public async Task StartPublish() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.GetSlotFromBody(); @@ -65,8 +65,8 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("publish")] public async Task Publish() { -// User user = await this.database.UserFromRequest(this.Request); - (User, GameToken)? userAndToken = await this.database.UserAndTokenFromRequest(this.Request); +// User user = await this.database.UserFromGameRequest(this.Request); + (User, GameToken)? userAndToken = await this.database.UserAndGameTokenFromRequest(this.Request); if (userAndToken == null) return this.StatusCode(403, ""); @@ -131,7 +131,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("unpublish/{id:int}")] public async Task Unpublish(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.database.Slots.Include(s => s.Location).FirstOrDefaultAsync(s => s.SlotId == id); diff --git a/ProjectLighthouse/Controllers/ReviewController.cs b/ProjectLighthouse/Controllers/ReviewController.cs index c50435af..fa501d3f 100644 --- a/ProjectLighthouse/Controllers/ReviewController.cs +++ b/ProjectLighthouse/Controllers/ReviewController.cs @@ -24,7 +24,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("rate/user/{slotId}")] public async Task Rate(int slotId, [FromQuery] int rating) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.database.Slots.Include(s => s.Creator).Include(s => s.Location).FirstOrDefaultAsync(s => s.SlotId == slotId); @@ -51,7 +51,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("dpadrate/user/{slotId:int}")] public async Task DPadRate(int slotId, [FromQuery] int rating) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); Slot? slot = await this.database.Slots.Include(s => s.Creator).Include(s => s.Location).FirstOrDefaultAsync(s => s.SlotId == slotId); diff --git a/ProjectLighthouse/Controllers/ScoreController.cs b/ProjectLighthouse/Controllers/ScoreController.cs index dc0762a8..d97f07e9 100644 --- a/ProjectLighthouse/Controllers/ScoreController.cs +++ b/ProjectLighthouse/Controllers/ScoreController.cs @@ -28,7 +28,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("scoreboard/user/{id:int}")] public async Task SubmitScore(int id, [FromQuery] bool lbp1 = false, [FromQuery] bool lbp2 = false, [FromQuery] bool lbp3 = false) { - (User, GameToken)? userAndToken = await this.database.UserAndTokenFromRequest(this.Request); + (User, GameToken)? userAndToken = await this.database.UserAndGameTokenFromRequest(this.Request); if (userAndToken == null) return this.StatusCode(403, ""); @@ -95,7 +95,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers public async Task TopScores(int slotId, int type, [FromQuery] int pageStart = -1, [FromQuery] int pageSize = 5) { // Get username - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); diff --git a/ProjectLighthouse/Controllers/SlotsController.cs b/ProjectLighthouse/Controllers/SlotsController.cs index c0ee8d96..f305c14e 100644 --- a/ProjectLighthouse/Controllers/SlotsController.cs +++ b/ProjectLighthouse/Controllers/SlotsController.cs @@ -26,7 +26,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("slots/by")] public async Task SlotsBy([FromQuery] string u, [FromQuery] int pageStart, [FromQuery] int pageSize) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -68,10 +68,10 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("s/user/{id:int}")] public async Task SUser(int id) { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -95,7 +95,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("slots")] public async Task NewestSlots([FromQuery] int pageStart, [FromQuery] int pageSize) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -114,7 +114,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("slots/mmpicks")] public async Task TeamPickedSlots([FromQuery] int pageStart, [FromQuery] int pageSize) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; @@ -134,7 +134,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("slots/lbp2luckydip")] public async Task LuckyDipSlots([FromQuery] int pageStart, [FromQuery] int pageSize, [FromQuery] int seed) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); GameVersion gameVersion = token.GameVersion; diff --git a/ProjectLighthouse/Controllers/UserController.cs b/ProjectLighthouse/Controllers/UserController.cs index e5badad5..81755bb1 100644 --- a/ProjectLighthouse/Controllers/UserController.cs +++ b/ProjectLighthouse/Controllers/UserController.cs @@ -35,7 +35,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("user/{username}")] public async Task GetUser(string username) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); string? user = await this.GetSerializedUser(username, token.GameVersion); @@ -47,7 +47,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpGet("users")] public async Task GetUserAlt([FromQuery] string[] u) { - GameToken? token = await this.database.TokenFromRequest(this.Request); + GameToken? token = await this.database.GameTokenFromRequest(this.Request); if (token == null) return this.StatusCode(403, ""); List serializedUsers = new(); @@ -67,7 +67,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("updateUser")] public async Task UpdateUser() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); XmlReaderSettings settings = new() @@ -163,7 +163,7 @@ namespace LBPUnion.ProjectLighthouse.Controllers [HttpPost("update_my_pins")] public async Task UpdateMyPins() { - User? user = await this.database.UserFromRequest(this.Request); + User? user = await this.database.UserFromGameRequest(this.Request); if (user == null) return this.StatusCode(403, ""); string pinsString = await new StreamReader(this.Request.Body).ReadToEndAsync(); diff --git a/ProjectLighthouse/Database.cs b/ProjectLighthouse/Database.cs index 1f291fcd..58f4a190 100644 --- a/ProjectLighthouse/Database.cs +++ b/ProjectLighthouse/Database.cs @@ -86,7 +86,9 @@ namespace LBPUnion.ProjectLighthouse return gameToken; } - public async Task UserFromAuthToken(string authToken) + #region Game Token Shenanigans + + public async Task UserFromMMAuth(string authToken) { GameToken? token = await this.GameTokens.FirstOrDefaultAsync(t => t.UserToken == authToken); if (token == null) return null; @@ -94,36 +96,42 @@ namespace LBPUnion.ProjectLighthouse return await this.Users.Include(u => u.Location).FirstOrDefaultAsync(u => u.UserId == token.UserId); } - public async Task UserFromToken(GameToken gameToken) => await this.UserFromAuthToken(gameToken.UserToken); + public async Task UserFromGameToken(GameToken gameToken) => await this.UserFromMMAuth(gameToken.UserToken); - public async Task UserFromRequest(HttpRequest request) + public async Task UserFromGameRequest(HttpRequest request) { if (!request.Cookies.TryGetValue("MM_AUTH", out string? mmAuth) || mmAuth == null) return null; - return await this.UserFromAuthToken(mmAuth); + return await this.UserFromMMAuth(mmAuth); } - public async Task TokenFromRequest(HttpRequest request) + public async Task GameTokenFromRequest(HttpRequest request) { if (!request.Cookies.TryGetValue("MM_AUTH", out string? mmAuth) || mmAuth == null) return null; return await this.GameTokens.FirstOrDefaultAsync(t => t.UserToken == mmAuth); } - public async Task<(User, GameToken)?> UserAndTokenFromRequest(HttpRequest request) + public async Task<(User, GameToken)?> UserAndGameTokenFromRequest(HttpRequest request) { if (!request.Cookies.TryGetValue("MM_AUTH", out string? mmAuth) || mmAuth == null) return null; GameToken? token = await this.GameTokens.FirstOrDefaultAsync(t => t.UserToken == mmAuth); if (token == null) return null; - User? user = await this.UserFromToken(token); + User? user = await this.UserFromGameToken(token); if (user == null) return null; return (user, token); } + #endregion + + #region Web Token Shenanigans + + #endregion + public async Task PhotoFromSubject(PhotoSubject subject) => await this.Photos.FirstOrDefaultAsync(p => p.PhotoSubjectIds.Contains(subject.PhotoSubjectId.ToString())); #nullable disable