diff --git a/ProjectLighthouse.Servers.Website/Middlewares/UserRequiredRedirectMiddleware.cs b/ProjectLighthouse.Servers.Website/Middlewares/UserRequiredRedirectMiddleware.cs index 75336a8c..b915754b 100644 --- a/ProjectLighthouse.Servers.Website/Middlewares/UserRequiredRedirectMiddleware.cs +++ b/ProjectLighthouse.Servers.Website/Middlewares/UserRequiredRedirectMiddleware.cs @@ -13,14 +13,19 @@ public class UserRequiredRedirectMiddleware : MiddlewareDBContext public override async Task InvokeAsync(HttpContext ctx, Database database) { - User? user = database.UserFromWebRequest(ctx.Request); - if (user == null || pathContains(ctx, "/logout")) + WebToken? token = database.WebTokenFromRequest(ctx.Request); + if (token == null || pathContains(ctx, "/logout")) { await this.next(ctx); return; } - WebToken token = await database.WebTokens.FirstAsync(t => t.UserId == user.UserId); + User? user = await database.Users.FirstOrDefaultAsync(u => u.UserId == token.UserId); + if (user == null) + { + await this.next(ctx); + return; + } // Request ends with a path (e.g. /css/style.css) if (!string.IsNullOrEmpty(Path.GetExtension(ctx.Request.Path)) || pathContains(ctx, "/gameAssets")) diff --git a/ProjectLighthouse/Database.cs b/ProjectLighthouse/Database.cs index 0ce74d58..676393dd 100644 --- a/ProjectLighthouse/Database.cs +++ b/ProjectLighthouse/Database.cs @@ -431,14 +431,14 @@ public class Database : DbContext public User? UserFromWebRequest(HttpRequest request) { - if (!request.Cookies.TryGetValue("LighthouseToken", out string? lighthouseToken) || lighthouseToken == null) return null; + if (!request.Cookies.TryGetValue("LighthouseToken", out string? lighthouseToken)) return null; return this.UserFromLighthouseToken(lighthouseToken); } public WebToken? WebTokenFromRequest(HttpRequest request) { - if (!request.Cookies.TryGetValue("LighthouseToken", out string? lighthouseToken) || lighthouseToken == null) return null; + if (!request.Cookies.TryGetValue("LighthouseToken", out string? lighthouseToken)) return null; WebToken? token = this.WebTokens.FirstOrDefault(t => t.UserToken == lighthouseToken); if (token == null) return null;