sign method
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';
}