AuthScimCredentialRecord constructor

AuthScimCredentialRecord({
  1. required String id,
  2. required String connectionId,
  3. required String tenantId,
  4. required String organizationId,
  5. required String name,
  6. required String keyPrefix,
  7. required String secretDigest,
  8. required Iterable<AuthScimScope> scopes,
  9. required DateTime createdAt,
  10. required DateTime updatedAt,
  11. DateTime? expiresAt,
  12. DateTime? lastUsedAt,
  13. DateTime? revokedAt,
})

Creates a storage record without retaining the raw bearer secret.

Implementation

AuthScimCredentialRecord({
  required String id,
  required String connectionId,
  required String tenantId,
  required String organizationId,
  required String name,
  required String keyPrefix,
  required String secretDigest,
  required Iterable<AuthScimScope> scopes,
  required DateTime createdAt,
  required DateTime updatedAt,
  DateTime? expiresAt,
  DateTime? lastUsedAt,
  DateTime? revokedAt,
}) : id = _identifier(id, 'id'),
     connectionId = _identifier(connectionId, 'connectionId'),
     tenantId = _identifier(tenantId, 'tenantId'),
     organizationId = _identifier(organizationId, 'organizationId'),
     name = _displayName(name),
     keyPrefix = _prefix(keyPrefix),
     secretDigest = _digest(secretDigest),
     scopes = _scopes(scopes),
     createdAt = createdAt.toUtc(),
     updatedAt = updatedAt.toUtc(),
     expiresAt = expiresAt?.toUtc(),
     lastUsedAt = lastUsedAt?.toUtc(),
     revokedAt = revokedAt?.toUtc() {
  if (this.scopes.isEmpty) {
    throw ArgumentError('SCIM scopes must not be empty.');
  }
  if (this.updatedAt.isBefore(this.createdAt) ||
      this.expiresAt?.isAfter(this.createdAt) == false ||
      (this.revokedAt?.isBefore(this.createdAt) ?? false)) {
    throw ArgumentError('Invalid SCIM credential timestamps.');
  }
}