Signin and Register now give a token added ps1 script to start servers

This commit is contained in:
2026-05-04 21:46:48 -04:00
parent f8b595f609
commit a9d2fd64de
3 changed files with 96 additions and 14 deletions

View File

@@ -23,7 +23,7 @@ public static class AuthEndpoints
});
app.MapGet("/users", async (APIAuthService service) =>
{
return Results.Ok(service.GetUsersAsync());
return Results.Ok(await service.GetUsersAsync());
});
app.MapPost("/user/register", async (AuthRegister request, APIAuthService service, HttpContext context) =>
{

View File

@@ -1,5 +1,6 @@
using Newtonsoft.Json;
using RelayCore.Endpoints;
using RelayCore.Enums;
using RelayCore.Models;
using SurrealDb.Net;
using SurrealDb.Net.Models;
@@ -8,13 +9,18 @@ namespace RelayCore.Services;
public class APIAuthService(SurrealDbClient _db)
{
public async Task<List<Users>> GetUsersAsync()
{
var users = await _db.Select<Users>("auth_users");
return users.Where(x => x.Username is not null).OrderByDescending(x=>x.CreatedAt).ToList();
}
public async Task<string?> UserSigninAsync(AuthSignin request, string ip, string userAgent)
{
var hasher = new PasswordHasher();
var users = await _db.Select<Users>("auth_users");
var user = users.FirstOrDefault(x => (x.Username == request.UserName || x.Email == request.UserName) );
// && hasher.VerifyPassword(request.Password, x.Password));
var user = users.FirstOrDefault(x => (x.Username.ToLower() == request.UserName.ToLower() ||
x.Email.ToLower() == request.UserName.ToLower()) &&
hasher.VerifyPassword(x.Id + request.Password, x.Password));
if (user == null)
return null;
var tokens = await _db.Select<Sessions>("auth_sessions");
@@ -41,21 +47,34 @@ public class APIAuthService(SurrealDbClient _db)
//TODO: Add invalidation to TOKENs
return newToken;
}
public async Task<List<Users>> GetUsersAsync()
{
var users = await _db.Select<Users>("auth_users");
return users.Where(x => x.Username is not null).OrderByDescending(x=>x.CreatedAt).ToList();
}
public async Task<string> UserRegisterAsync(AuthRegister request, string ip, string userAgent)
public async Task<string?> UserRegisterAsync(AuthRegister request, string ip, string userAgent)
{
var hasher = new PasswordHasher();
var users = await _db.Select<Users>("auth_users");
var user = users.FirstOrDefault(x => x.Username == request.Username || x.Email == request.Username);
Console.WriteLine($"Register User found in DB: {user.Username}");
var user = users.FirstOrDefault(x => x.Username.ToLower() == request.Username.ToLower() || x.Email.ToLower() == request.Email.ToLower());
if (user == null)
{
var now = DateTime.Now;
var created = await _db.Create("auth_users", new Users
{
Username = request.Username,
Email = request.Email,
CreatedAt = now,
UpdatedAt = now,
LastLogin = now,
TwoFactorEnabled = false,
EmailVerified = false,
AccountStatus = (int)AccountStatuses.Active,
OnlineStatus = (int)OnlineStatuses.Online,
});
var passwordHash = hasher.HashPassword(created.Id + request.Password);
await _db.Merge<PasswordHash, Users>(new PasswordHash
{
Id = created.Id,
Password = passwordHash
});
return await UserSigninAsync(new AuthSignin{UserName=request.Username, Password = request.Password}, ip, userAgent);
}