using VoidCat.Model;
using VoidCat.Services.Abstractions;
namespace VoidCat.Services.Users;
///
public class CacheEmailVerification : BaseEmailVerification
{
private readonly ICache _cache;
public CacheEmailVerification(ICache cache, ILogger logger, VoidSettings settings,
RazorPartialToStringRenderer renderer) : base(logger, settings, renderer)
{
_cache = cache;
}
///
protected override ValueTask SaveToken(EmailVerificationCode code)
{
return _cache.Set(MapToken(code.Code), code, code.Expires - DateTime.UtcNow);
}
///
protected override ValueTask GetToken(Guid user, Guid code)
{
return _cache.Get(MapToken(code));
}
///
protected override ValueTask DeleteToken(Guid user, Guid code)
{
return _cache.Delete(MapToken(code));
}
private static string MapToken(Guid id) => $"email-code:{id}";
}