onboard method
perform initial one_time authentication to activate the atsign returns true if onboarded
Implementation
@override
Future<bool> onboard() async {
// cram auth doesn't use at_chops. So create at_lookup here.
AtLookupImpl atLookUpImpl = AtLookupImpl(_atSign,
atOnboardingPreference.rootDomain, atOnboardingPreference.rootPort);
// get cram_secret from either from AtOnboardingPreference
// or fetch from the registrar using verification code sent to email
atOnboardingPreference.cramSecret ??= await OnboardingUtil()
.getCramUsingOtp(_atSign, atOnboardingPreference.registrarUrl);
if (atOnboardingPreference.cramSecret == null) {
logger.info('Root Server address is ${atOnboardingPreference.rootDomain}:'
'${atOnboardingPreference.rootPort}');
logger
.info('Registrar url is \'${atOnboardingPreference.registrarUrl}\'');
throw AtKeyNotFoundException(
'Could not fetch cram secret for \'$_atSign\' from registrar');
}
// check and wait till secondary exists
await _waitUntilSecondaryCreated(atLookUpImpl);
if (await isOnboarded()) {
throw AtActivateException('atsign is already activated');
}
atAuth ??= at_auth.atAuthBase.atAuth();
var atOnboardingRequest = at_auth.AtOnboardingRequest(_atSign);
atOnboardingRequest.rootDomain = atOnboardingPreference.rootDomain;
atOnboardingRequest.rootPort = atOnboardingPreference.rootPort;
atOnboardingRequest.appName = atOnboardingPreference.appName;
atOnboardingRequest.deviceName = atOnboardingPreference.deviceName;
atOnboardingRequest.publicKeyId = atOnboardingPreference.publicKeyId;
var atOnboardingResponse = await atAuth!
.onboard(atOnboardingRequest, atOnboardingPreference.cramSecret!);
logger.finer('Onboarding Response: $atOnboardingResponse');
if (atOnboardingResponse.isSuccessful) {
logger.finer(
'Onboarding successful.Generating keyfile in path: ${atOnboardingPreference.atKeysFilePath}');
await _generateAtKeysFile(
atOnboardingResponse.atAuthKeys!,
enrollmentId: atOnboardingResponse.enrollmentId,
);
}
_isAtsignOnboarded = atOnboardingResponse.isSuccessful;
return _isAtsignOnboarded;
}