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(); } } } }