Files
bright-glimmer/BrightGlimmer.Service/Services/UserService.cs

56 lines
1.7 KiB
C#

using BrightGlimmer.Data;
using BrightGlimmer.Domain.Auth;
using BrightGlimmer.Service.Interfaces;
using BrightGlimmer.Tools;
using Microsoft.Extensions.Configuration;
using System.Linq;
using System.Threading.Tasks;
namespace BrightGlimmer.Service.Services
{
public class UserService : IUserService
{
private readonly IConfiguration configuration;
private readonly AuthContext context;
public UserService(IConfiguration configuration, AuthContext context)
{
this.configuration = configuration;
this.context = context;
}
public string Login(string username, string password)
{
var user = context.Users.SingleOrDefault(x => x.Username == username);
var hasher = new PasswordHasher();
if (user == null || hasher.Verify(password, user.PasswordHash))
{
return CreateAuthToken(username, user.Email);
}
return null;
}
public async Task<string> RegisterAsync(User user, string password)
{
/* TODO: Perform validation on user */
var hasher = new PasswordHasher();
var hash = hasher.GetHash(password);
user.PasswordHash = hash;
context.Users.Add(user);
await context.SaveChangesAsync();
return CreateAuthToken(user.Username, user.Email);
}
private string CreateAuthToken(string username, string email)
{
var tokenCreator = new JwtTokenCreator(configuration.GetSection("Keys")["JwtPrivateKey"]);
return tokenCreator.CreateToken(username, email);
}
}
}