Dont hardcode user as "jvyden"

This commit is contained in:
jvyden 2021-10-14 01:26:00 -04:00
commit 59ba45036d
No known key found for this signature in database
GPG key ID: 18BCF2BE0262B278
7 changed files with 37 additions and 14 deletions

View file

@ -32,10 +32,13 @@ namespace ProjectLighthouse.Controllers {
Comment comment = (Comment)serializer.Deserialize(new StringReader(bodyString)); Comment comment = (Comment)serializer.Deserialize(new StringReader(bodyString));
await using Database database = new(); await using Database database = new();
User poster = await database.Users.FirstOrDefaultAsync(u => u.Username == "jvyden"); User poster = await database.UserFromRequest(Request);
User target = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
if(comment == null) return this.BadRequest(); if(poster == null) return this.StatusCode(403, "");
User target = await database.Users.FirstOrDefaultAsync(u => u.Username == username);
if(comment == null || target == null) return this.BadRequest();
comment.PosterUserId = poster.UserId; comment.PosterUserId = poster.UserId;
comment.TargetUserId = target.UserId; comment.TargetUserId = target.UserId;

View file

@ -32,10 +32,10 @@ namespace ProjectLighthouse.Controllers {
Token? token = await database.AuthenticateUser(loginData); Token? token = await database.AuthenticateUser(loginData);
if(token == null) return this.BadRequest(""); // TODO: send 403 if(token == null) return this.StatusCode(403, "");
return this.Ok(new LoginResult { return this.Ok(new LoginResult {
AuthTicket = token.UserToken, AuthTicket = "MM_AUTH=" + token.UserToken,
LbpEnvVer = ServerSettings.ServerName LbpEnvVer = ServerSettings.ServerName
}.Serialize()); }.Serialize());
} }

View file

@ -10,14 +10,13 @@ namespace ProjectLighthouse.Controllers {
public class MessageController : ControllerBase { public class MessageController : ControllerBase {
[HttpGet("eula")] [HttpGet("eula")]
public async Task<IActionResult> Eula() { public async Task<IActionResult> Eula() {
User user = await new Database().Users.FirstOrDefaultAsync(u => u.Username == "jvyden"); User user = await new Database().UserFromRequest(Request);
return user == null ? this.StatusCode(403, "") : this.Ok($"You are logged in as user {user.Username} (id {user.UserId})");
return Ok($"You are logged in as user {user.Username} (id {user.UserId})");
} }
[HttpGet("announce")] [HttpGet("announce")]
public IActionResult Announce() { public IActionResult Announce() {
return Ok("PROJECT LIGHTHOUSE IS A GO!\nalso ezoiar was here\nnow on ASP.NET!"); return Ok("");
} }
[HttpGet("notification")] [HttpGet("notification")]

View file

@ -30,7 +30,9 @@ namespace ProjectLighthouse.Controllers {
public async Task<IActionResult> Publish() { public async Task<IActionResult> Publish() {
await using Database database = new(); await using Database database = new();
User user = await database.Users.FirstOrDefaultAsync(u => u.Username == "jvyden"); User user = await database.UserFromRequest(Request);
if(user == null) return this.StatusCode(403, "");
Slot slot = await this.GetSlotFromBody(); Slot slot = await this.GetSlotFromBody();
//TODO: parse location in body //TODO: parse location in body

View file

@ -31,9 +31,9 @@ namespace ProjectLighthouse.Controllers {
[HttpPost("updateUser")] [HttpPost("updateUser")]
public async Task<IActionResult> UpdateUser() { public async Task<IActionResult> UpdateUser() {
await using Database database = new(); await using Database database = new();
User user = await database.Users.Where(u => u.Username == "jvyden").FirstOrDefaultAsync(); User user = await database.UserFromRequest(Request);
if(user == null) return this.BadRequest(); if(user == null) return this.StatusCode(403, "");
XmlReaderSettings settings = new() { XmlReaderSettings settings = new() {
Async = true // this is apparently not default Async = true // this is apparently not default

View file

@ -1,6 +1,7 @@
#nullable enable #nullable enable
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ProjectLighthouse.Helpers; using ProjectLighthouse.Helpers;
using ProjectLighthouse.Types; using ProjectLighthouse.Types;
@ -60,5 +61,13 @@ namespace ProjectLighthouse {
if(token == null) return null; if(token == null) return null;
return await Users.FirstOrDefaultAsync(u => u.UserId == token.UserId); return await Users.FirstOrDefaultAsync(u => u.UserId == token.UserId);
} }
public async Task<User?> UserFromRequest(HttpRequest request) {
if(!request.Cookies.TryGetValue("MM_AUTH", out string? mmAuth) || mmAuth == null) {
return null;
}
return await UserFromAuthToken(mmAuth);
}
} }
} }

View file

@ -36,9 +36,19 @@ namespace ProjectLighthouse.Types {
[XmlIgnore] [XmlIgnore]
public int LocationId { get; set; } public int LocationId { get; set; }
[XmlIgnore] [XmlIgnore]
public int CreatorId { get; set; } public int CreatorId { get; set; }
private User creator;
public User Creator {
get {
if(this.creator != null) return this.creator;
return creator = new Database().Users.First(u => u.UserId == CreatorId);
}
}
private Location location; private Location location;
@ -85,7 +95,7 @@ namespace ProjectLighthouse.Types {
string slotData = LbpSerializer.StringElement("name", Name) + string slotData = LbpSerializer.StringElement("name", Name) +
LbpSerializer.StringElement("id", SlotId) + LbpSerializer.StringElement("id", SlotId) +
LbpSerializer.StringElement("game", 1) + LbpSerializer.StringElement("game", 1) +
LbpSerializer.StringElement("npHandle", "jvyden") + LbpSerializer.StringElement("npHandle", Creator.UserId) +
LbpSerializer.StringElement("description", Description) + LbpSerializer.StringElement("description", Description) +
LbpSerializer.StringElement("icon", IconHash) + LbpSerializer.StringElement("icon", IconHash) +
LbpSerializer.StringElement("resource", Resource) + LbpSerializer.StringElement("resource", Resource) +