using DomainResults.Common;
using DataProviders.Collections;
using CryptoProvider;
using JWTService;
using WeatherForecast.Models.Requests;
using Core.Abstractions;
namespace WeatherForecast.Services {
///
///
///
public interface IPasswordService {
///
///
///
///
///
///
///
(Guid?, IDomainResult) Post(Guid siteId, Guid userId, PasswordRequestModel requestData);
}
///
///
///
public class PasswordService : ServiceBase, IPasswordService {
private readonly IUserDataProvider _userDataProvider;
///
///
///
///
///
///
///
public PasswordService(
ILogger logger,
IUserDataProvider userDataProvider
) : base(logger) {
_userDataProvider = userDataProvider;
}
///
///
///
///
///
///
public (Guid?, IDomainResult) Post(Guid siteId, Guid userId, PasswordRequestModel requestData) {
try {
var (salt, hash) = HashService.CreateSaltedHash(requestData.Password);
return IDomainResult.Success(Guid.NewGuid());
}
catch (Exception ex) {
_logger.LogError("Unhandled exception", ex);
return IDomainResult.Failed();
}
}
}
}