diff --git a/RelayCore/Endpoints/AuthEndpoints.cs b/RelayCore/Endpoints/AuthEndpoints.cs index 2612021..b1665d1 100644 --- a/RelayCore/Endpoints/AuthEndpoints.cs +++ b/RelayCore/Endpoints/AuthEndpoints.cs @@ -48,9 +48,16 @@ public static class AuthEndpoints Console.WriteLine($"UN: {request.Username}\nToken: {request.Token}"); return Results.Ok(valid); }); - app.MapPost("/server/verify/license", async (AuthServerLicense request, APIAuthService service) => + app.MapPost("/server/license/generate", async (AuthServerLicenseGenerate request, APIAuthService service) => { - throw new NotImplementedException(); + var license = await service.ServerLicenseGenerate(request); + + return license != null ? Results.Ok(license) : Results.BadRequest(); + }); + app.MapPost("/server/license/verify", async (AuthServerLicenseVerify request, APIAuthService service) => + { + bool valid = await service.ServerVerifyLicense(request); + return Results.Ok(valid); }); } } diff --git a/RelayCore/Services/APIAuthService.cs b/RelayCore/Services/APIAuthService.cs index 5502e78..aee6b9a 100644 --- a/RelayCore/Services/APIAuthService.cs +++ b/RelayCore/Services/APIAuthService.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using Microsoft.AspNetCore.WebUtilities; +using Newtonsoft.Json; using RelayCore.Endpoints; using RelayCore.Enums; using RelayCore.Models; @@ -97,4 +98,29 @@ public class APIAuthService(SurrealDbClient _db) return true; } + + public async Task ServerLicenseGenerate(AuthServerLicenseGenerate request) + { + var hasher = new PasswordHasher(); + string token = null; + token = hasher.HashPassword(DateTime.Now.ToString("yyyyMMddHHmmss")); + var created = await _db.Create("auth_licenses", new DBLicense + { + Token = token, + IsClient = false, + CreatedAt = DateTime.UtcNow, + ExpiresAt = DateTime.UtcNow.AddDays(365), + IsExpired = false, + }); + return token; + } + + public async Task ServerVerifyLicense(AuthServerLicenseVerify request) + { + var tokens = await _db.Select("auth_licenses"); + var token = tokens.FirstOrDefault(x => x.Token == request.License); + if (token != null) + return true; + return false; + } } \ No newline at end of file diff --git a/RelayShared/Services/Authentication.cs b/RelayShared/Services/Authentication.cs index 939b807..e15742b 100644 --- a/RelayShared/Services/Authentication.cs +++ b/RelayShared/Services/Authentication.cs @@ -19,7 +19,22 @@ public class AuthUserVerify public string Token { get; set; } } -public class AuthServerLicense +public class AuthServerLicenseVerify { public string License { get; set; } +} + +public class AuthServerLicenseGenerate +{ + public string Server { get; set; } + public string Length {get; set;} //TODO: Convert to Enum +} + +public class DBLicense +{ + public string Token {get; set;} + public bool IsClient {get; set;} + public DateTime CreatedAt {get; set;} + public DateTime ExpiresAt {get; set;} + public bool IsExpired {get; set;} } \ No newline at end of file