Signin and Register now give a token added ps1 script to start servers
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user