[backend/federation] Improve WebFinger handling
This commit is contained in:
parent
95ac792ad9
commit
4bf4f369b8
1 changed files with 10 additions and 12 deletions
|
@ -28,9 +28,17 @@ public class WellKnownController(IOptions<Config.InstanceSection> config, Databa
|
||||||
public async Task<IActionResult> WebFinger([FromQuery] string resource)
|
public async Task<IActionResult> WebFinger([FromQuery] string resource)
|
||||||
{
|
{
|
||||||
User? user;
|
User? user;
|
||||||
if (resource.StartsWith("acct:"))
|
if (resource.StartsWith($"https://{config.Value.WebDomain}/users/"))
|
||||||
{
|
{
|
||||||
var split = resource[5..].TrimStart('@').Split('@');
|
var id = resource[$"https://{config.Value.WebDomain}/users/".Length..];
|
||||||
|
user = await db.Users.FirstOrDefaultAsync(p => p.Id == id && p.Host == null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (resource.StartsWith("acct:"))
|
||||||
|
resource = resource[5..];
|
||||||
|
|
||||||
|
var split = resource.TrimStart('@').Split('@');
|
||||||
if (split.Length > 2) return NotFound();
|
if (split.Length > 2) return NotFound();
|
||||||
if (split.Length == 2)
|
if (split.Length == 2)
|
||||||
{
|
{
|
||||||
|
@ -41,16 +49,6 @@ public class WellKnownController(IOptions<Config.InstanceSection> config, Databa
|
||||||
user = await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == split[0].ToLowerInvariant() &&
|
user = await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == split[0].ToLowerInvariant() &&
|
||||||
p.Host == null);
|
p.Host == null);
|
||||||
}
|
}
|
||||||
else if (resource.StartsWith($"https://{config.Value.WebDomain}/users/"))
|
|
||||||
{
|
|
||||||
var id = resource[$"https://{config.Value.WebDomain}/users/".Length..];
|
|
||||||
user = await db.Users.FirstOrDefaultAsync(p => p.Id == id && p.Host == null);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
user = await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == resource.ToLowerInvariant() &&
|
|
||||||
p.Host == null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user == null) return NotFound();
|
if (user == null) return NotFound();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue