buildAuthUrl function

String buildAuthUrl({
  1. required String codeChallenge,
  2. required String state,
  3. required int port,
  4. required bool isManual,
  5. bool loginWithNeomageAi = false,
  6. bool inferenceOnly = false,
  7. String? orgUUID,
  8. String? loginHint,
  9. String? loginMethod,
})

Build the OAuth authorization URL.

Implementation

String buildAuthUrl({
  required String codeChallenge,
  required String state,
  required int port,
  required bool isManual,
  bool loginWithNeomageAi = false,
  bool inferenceOnly = false,
  String? orgUUID,
  String? loginHint,
  String? loginMethod,
}) {
  final config = getOauthConfig();
  final authUrlBase = loginWithNeomageAi
      ? config.neomageAiAuthorizeUrl
      : config.consoleAuthorizeUrl;

  final uri = Uri.parse(authUrlBase);
  final params = <String, String>{
    'code': 'true',
    'client_id': config.clientId,
    'response_type': 'code',
    'redirect_uri': isManual
        ? config.manualRedirectUrl
        : 'http://localhost:$port/callback',
    'scope': (inferenceOnly ? [neomageAiInferenceScope] : allOAuthScopes).join(
      ' ',
    ),
    'code_challenge': codeChallenge,
    'code_challenge_method': 'S256',
    'state': state,
  };

  if (orgUUID != null) params['orgUUID'] = orgUUID;
  if (loginHint != null) params['login_hint'] = loginHint;
  if (loginMethod != null) params['login_method'] = loginMethod;

  return uri.replace(queryParameters: params).toString();
}