Index: iknow-api/Services/Implementations/AuthService.cs
===================================================================
--- iknow-api/Services/Implementations/AuthService.cs	(revision 5b42c8d2d07de69ce14d68ac140c0400a59f97ad)
+++ iknow-api/Services/Implementations/AuthService.cs	(revision 5b42c8d2d07de69ce14d68ac140c0400a59f97ad)
@@ -0,0 +1,79 @@
+﻿using System.IdentityModel.Tokens.Jwt;
+using System.Security.Claims;
+using System.Text;
+using BCrypt.Net;
+using FinXaccesApi.Controllers;
+using iknow_api.Core.Models;
+using FinXaccesApi.DTOs;
+using FinXaccesApi.Repositories;
+using Microsoft.IdentityModel.Tokens;
+
+namespace FinXaccesApi.Services
+{
+    public class AuthService : IAuthService
+    {
+        private readonly IUserRepository _userRepository;
+        private readonly IConfiguration _configuration;
+
+        public AuthService(IUserRepository userRepository, IConfiguration configuration)
+        {
+            _userRepository = userRepository;
+            _configuration = configuration;
+        }
+
+        public async Task<bool> RegisterAsync(UserDto userDto)
+        {
+            if (await _userRepository.UserExistsAsync(userDto.Username))
+                return false;
+
+            var user = new User
+            {
+                Email = userDto.Username,
+                PasswordHash = BCrypt.Net.BCrypt.HashPassword(userDto.Password)
+            };
+
+            await _userRepository.AddUserAsync(user);
+            return true;
+        }
+
+        public async Task<string?> LoginAsync(UserDto userDto)
+        {
+            var user = await _userRepository.GetUserByUsernameAsync(userDto.Username);
+            if (user == null || !BCrypt.Net.BCrypt.Verify(userDto.Password, user.PasswordHash))
+                return null;
+
+            return CreateToken(user);
+        }
+
+        public async Task<int> GetUsersCountAsync()
+        {
+            return await _userRepository.GetUsersCountAsync();
+        }
+
+        private string CreateToken(User user)
+        {
+            var claims = new[]
+            {
+                new Claim("id", user.Id.ToString()),
+                new Claim("username", user.Email)
+            };
+
+            var keyString = _configuration["Jwt:Key"];
+            if (string.IsNullOrEmpty(keyString))
+                throw new Exception("JWT Key is missing in configuration!");
+
+            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keyString));
+            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+
+            var token = new JwtSecurityToken(
+                issuer: "finxacces-api",
+                audience: "finxacces-api",
+                claims: claims,
+                expires: DateTime.Now.AddHours(1),
+                signingCredentials: creds
+            );
+
+            return new JwtSecurityTokenHandler().WriteToken(token);
+        }
+    }
+}
Index: iknow-api/Services/Implementations/UserService.cs
===================================================================
--- iknow-api/Services/Implementations/UserService.cs	(revision 9a57e89c1f628a1c5aee327d90612e10c18679a2)
+++ iknow-api/Services/Implementations/UserService.cs	(revision 5b42c8d2d07de69ce14d68ac140c0400a59f97ad)
@@ -1,33 +1,33 @@
-using Microsoft.EntityFrameworkCore;
-using iknow_api.Core.Models;
-using iknow_api.Repository.Interfaces;
-// ...existing code...
+//using Microsoft.EntityFrameworkCore;
+//using iknow_api.Core.Models;
+//using iknow_api.Repository.Interfaces;
+//// ...existing code...
 
-namespace iknow_api.Core.Services
-{
-    public class UserService
-    {
-        private readonly IUserRepository _users;
+//namespace iknow_api.Core.Services
+//{
+//    public class UserService
+//    {
+//        private readonly IUserRepository _users;
 
-        public UserService(IUserRepository users)
-        {
-            _users = users;
-        }
+//        public UserService(IUserRepository users)
+//        {
+//            _users = users;
+//        }
 
-        public async Task<User> AddUserAsync(User user, CancellationToken cancellationToken = default)
-        {
-            if (user == null) throw new ArgumentNullException(nameof(user));
+//        public async Task<User> AddUserAsync(User user, CancellationToken cancellationToken = default)
+//        {
+//            if (user == null) throw new ArgumentNullException(nameof(user));
 
-            if (!string.IsNullOrWhiteSpace(user.Email))
-            {
-                user.Email = user.Email.Trim();
+//            if (!string.IsNullOrWhiteSpace(user.Email))
+//            {
+//                user.Email = user.Email.Trim();
 
-                var exists = await _users.EmailExistsAsync(user.Email, cancellationToken);
-                if (exists)
-                    throw new InvalidOperationException("A user with this email already exists.");
-            }
+//                var exists = await _users.EmailExistsAsync(user.Email, cancellationToken);
+//                if (exists)
+//                    throw new InvalidOperationException("A user with this email already exists.");
+//            }
 
-            return await _users.AddUserAsync(user, cancellationToken);
-        }
-    }
-}
+//            return await _users.AddUserAsync(user, cancellationToken);
+//        }
+//    }
+//}
