addClient method Null safety

Future<Agent> addClient(
  1. String id,
  2. {String? secret,
  3. String? redirectUri,
  4. List<String>? allowedScope}
)

Creates a new OAuth2 client identifier and returns an Agent that makes requests on behalf of that client.

A new AuthClient is added to the authServer's database. Returns an Agent that will execute requests with a basic authorization header that contains id and secret.

If secret is null, redirectUri is ignored (public clients cannot have a redirect URI).

NOTE: This method adds rows to a database table managed by your test application and TestHarnessORMMixin.resetData will delete those rows. To ensure clients exist for all tests, add clients in TestHarnessORMMixin.seed.

Implementation

Future<Agent> addClient(String id,
    {String? secret, String? redirectUri, List<String>? allowedScope}) async {
  final client = AuthClient.public(id,
      allowedScopes: allowedScope?.map(AuthScope.new).toList());

  if (secret != null) {
    client
      ..salt = generateRandomSalt()
      ..hashedSecret = generatePasswordHash(secret, client.salt!)
      ..redirectURI = redirectUri;
  }

  await authServer!.addClient(client);

  final authorizationHeader =
      "Basic ${base64.encode("$id:${secret ?? ""}".codeUnits)}";
  return Agent.from(agent!)..headers["authorization"] = authorizationHeader;
}