generateJWT function
Implementation
String generateJWT(AuthJwtModel jwtAuth) {
try {
// Parse header if provided
Map<String, dynamic> headerMap = {};
if (jwtAuth.header.isNotEmpty) {
try {
headerMap = json.decode(jwtAuth.header) as Map<String, dynamic>;
} catch (e) {
// If header parsing fails, use empty header
headerMap = {};
}
}
// Parse payload if provided
Map<String, dynamic> payloadMap = {};
if (jwtAuth.payload.isNotEmpty) {
try {
payloadMap = json.decode(jwtAuth.payload) as Map<String, dynamic>;
} catch (e) {
// If payload parsing fails, use empty payload
payloadMap = {};
}
}
// Add issued at time if not present
if (!payloadMap.containsKey('iat')) {
payloadMap['iat'] = DateTime.now().millisecondsSinceEpoch ~/ 1000;
}
final jwt = JWT(payloadMap, header: headerMap);
final key = _createKey(
jwtAuth.secret,
jwtAuth.algorithm,
jwtAuth.isSecretBase64Encoded,
jwtAuth.privateKey,
);
final token = jwt.sign(
key,
algorithm: JWTAlgorithm.fromName(jwtAuth.algorithm),
);
return token;
} catch (e) {
throw Exception('Failed to generate JSON Wweb Token: $e');
}
}