login method
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;
}
}