login method

Future<bool> login()

Logs the user in.

Returns true if login is successful.

Implementation

Future<bool> login() async {
  _assertInitialization();
  try {
    tokenResponse = await _appAuth.authorizeAndExchangeCode(
      AuthorizationTokenRequest(
        _keycloakConfig.clientId,
        _keycloakConfig.redirectUri,
        issuer: _keycloakConfig.issuer,
        scopes: _keycloakConfig.scopes,
        promptValues: ['login'],
        allowInsecureConnections: _keycloakConfig.allowInsecureConnections,
        clientSecret: _keycloakConfig.clientSecret,
      ),
    );

    if (tokenResponse.isValid) {
      if (refreshToken != null) {
        await _secureStorage.write(
          key: _refreshTokenKey,
          value: refreshToken,
        );
      }
    } else {
      developer.log('Invalid token response.', name: 'keycloak_wrapper');
    }

    _streamController.add(tokenResponse.isValid);
    return tokenResponse.isValid;
  } catch (e, s) {
    onError('Failed to login.', e, s);
    return false;
  }
}