IdentityService constructor
IdentityService(
- IdentityProvider provider
Implementation
IdentityService(
IdentityProvider provider,
) : super(
initialState: const IdentityState(),
provider: provider,
) {
// Hydrate the saved state
hydrate();
// Validate the current session and if it
// is valid then check if hydrated session
// and auth provider session are in sync
provider.validateSession().then(
(isValid) {
if (isValid) {
provider.getLoggedInUsername().then(
(username) {
if (!state.isLoggedIn ||
(state.isLoggedIn && username != state.user.username)) {
_logger.info(
'Session state username does not match provider\'s '
'logged in username "$username". Signing out user '
'and clearing state.',
);
provider.signOut();
}
},
);
} else if (state.isLoggedIn) {
_logger.info(
'Session state is logged in but the provider\'s '
'session was not valid. Clearing state',
);
emit(const IdentityState());
}
},
);
// Listen to events from the provider
// and update the state accordingly
_providerEventSubscription = provider.providerEventStream.listen((event) {
_handleEventsFromProvider(event);
});
}