示例#1
0
 public CreateTokenHandler(OtpNetService service, ITokenTotpRepository repository, IMapper mapper, IOptions <DefaultTimeToptOptions> toptOtions)
 {
     _defaultTimeTopt = toptOtions.Value;
     _service         = service;
     _repository      = repository;
     _mapper          = mapper;
 }
示例#2
0
        public async Task <Result <TokenResponse> > Handle(CreateTokenCommand request, CancellationToken cancellationToken)
        {
            var seedBytes = OtpNetService.CreateSeed().seedBytes;

            if (!string.IsNullOrEmpty(request.Seed))
            {
                seedBytes = Encoding.UTF8.GetBytes(request.Seed + request.TokenType);
            }

            var token = _service.GenerateToken(seedBytes, _defaultTimeTopt.Range, _defaultTimeTopt.Size);

            var ttl    = request.TimeToLive ?? token.timeToLive;
            var result = new TokenResponse
            {
                Hash       = Base32Encoding.ToString(seedBytes),
                TimeToLive = ttl,
                Token      = token.token
            };
            await _repository.InsertTokenAsync(result.Hash, result.Token, request.TokenType, result.TimeToLive, cancellationToken);

            return(Result.Ok(result));
        }