getUserIdFromToken method

Result<int> getUserIdFromToken(
  1. String? token
)

Extracts user ID from a JWT token. Returns Result<int> with user ID or error.

Implementation

Result<int> getUserIdFromToken(String? token) {
  if (token == null) {
    return Result.error('[DataLoss] Token not found');
  }
  if (secretKey.isEmpty) {
    return Result.error('[Internal] Server secret key is not set');
  }

  try {
    final jwtClaim = verifyJwtHS256Signature(token, secretKey);
    // Validate expiration and other claims
    jwtClaim.validate();

    var id = jwtClaim[userIdKey];
    id = id is int ? id : int.tryParse(id.toString());
    if (id == null) {
      return Result.error('[DataLoss] User id not found');
    }

    return Result.value(id);
  } catch (e) {
    return Result.error('[DataLoss] Invalid token $e');
  }
}