27 lines
710 B
C#
27 lines
710 B
C#
using Foxchat.Core;
|
|
using Foxchat.Identity.Middleware;
|
|
using Foxchat.Identity.Database.Models;
|
|
|
|
namespace Foxchat.Identity.Utils;
|
|
|
|
public static class OauthUtils
|
|
{
|
|
public static readonly string[] Scopes = ["identify", "chat_client"];
|
|
|
|
private static readonly string[] ForbiddenSchemes = ["javascript", "file", "data", "mailto", "tel"];
|
|
private const string OobUri = "urn:ietf:wg:oauth:2.0:oob";
|
|
|
|
public static bool ValidateRedirectUri(string uri)
|
|
{
|
|
if (uri == OobUri) return true;
|
|
try
|
|
{
|
|
var scheme = new Uri(uri).Scheme;
|
|
return !ForbiddenSchemes.Contains(scheme);
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|