sign method

String sign(
  1. Map<String, Object?> claims, {
  2. Duration expiresIn = const Duration(days: 7),
})

Emite um token assinado com claims (ex.: {sub, email, role}).

Implementation

String sign(
  Map<String, Object?> claims, {
  Duration expiresIn = const Duration(days: 7),
}) {
  final now = DateTime.now().millisecondsSinceEpoch ~/ 1000;
  final payload = <String, Object?>{
    ...claims,
    'iat': now,
    'exp': now + expiresIn.inSeconds,
    if (issuer != null) 'iss': issuer,
  };
  final h = _b64(jsonEncode({'alg': 'HS256', 'typ': 'JWT'}));
  final p = _b64(jsonEncode(payload));
  final sig = _sign('$h.$p');
  return '$h.$p.$sig';
}