using Core.Abstractions;
using DataProviders.Collections;
using DomainResults.Common;
using JWTService;
using WeatherForecast.Models.Requests;
namespace WeatherForecast.Services {
///
///
///
public interface IAuthenticationService {
///
///
///
///
///
///
(string?, IDomainResult) Post(Guid siteId, AuthenticationRequestModel requestData);
}
///
///
///
public class AutheticationService : ServiceBase, IAuthenticationService {
private readonly IUserDataProvider _userDataProvider;
private readonly IJWTService _jwtService;
///
///
///
///
///
///
public AutheticationService (
ILogger logger,
IUserDataProvider userDataProvider,
IJWTService jwtService
) : base(logger) {
_userDataProvider = userDataProvider;
_jwtService = jwtService;
}
///
///
///
///
///
///
public (string?, IDomainResult) Post (Guid siteId, AuthenticationRequestModel requestData) {
try {
var token = _jwtService.CreateJwtToken();
return token != null
? IDomainResult.Success(token)
: IDomainResult.Failed();
}
catch (Exception ex) {
_logger.LogError("Unhandled exception", ex);
return IDomainResult.Failed();
}
}
}
}