refreshToken method

Future<AuthResult> refreshToken(
  1. String token
)

Refresh JWT token

Implementation

Future<AuthResult> refreshToken(String token) async {
  try {
    // Verify existing token
    final jwt = JWT.verify(token, secret: jwtSecret);

    if (jwt == null) {
      return AuthResult.error('Invalid token');
    }

    // Create a copy of the payload and remove 'iat' so it gets regenerated
    final payloadCopy = Map<String, dynamic>.from(jwt.payload);
    payloadCopy.remove('iat');

    // Create new token with updated expiration
    final newJwt = JWT.create(
      payloadCopy,
      secret: jwtSecret,
      expiresIn: jwtDuration,
    );

    return AuthResult.success(
      message: 'Token refreshed',
      token: newJwt.token,
    );
  } catch (e) {
    return AuthResult.error('Token refresh failed: ${e.toString()}');
  }
}