public async Task <GenerateTokenAnswer> Handle(GenerateTokenRequest request, CancellationToken cancellationToken) { var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("id", request.UserId.ToString()), }), // LifeTime: 5 Minutes by default + 0.01 minutes Expires = DateTime.UtcNow.AddMinutes(0.01), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(_jwtOptions.SecretInBytes), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tempCommand = new WriteTokenCommand { UserId = request.UserId, ExpiryDate = DateTime.UtcNow.AddYears(2), JwtId = token.Id, Platform = request.Platform, Token = tokenHandler.WriteToken(token), }; await _commandHandler.HandleAsync(tempCommand); return(new GenerateTokenAnswer { Token = tempCommand.Token, }); }
private async Task <Guid> GenerateToken(Guid userId) { var tokenId = Guid.NewGuid(); await _mediator.Send(new DeactivateTokenCommand { UserId = userId, }); var tempCommand = new WriteTokenCommand { Id = tokenId, UserId = userId, }; await _mediator.Send(tempCommand); return(tokenId); }