signUpByUsername method
Future<AuthResponse<T> >
signUpByUsername(
- UsernameAuthenticator authenticator, {
- SignByBiometricCallback? onBiometric,
override
Implementation
@override
Future<AuthResponse<T>> signUpByUsername(
UsernameAuthenticator authenticator, {
SignByBiometricCallback? onBiometric,
}) async {
final username = authenticator.username;
final password = authenticator.password;
if (!AuthValidator.isValidUsername(username)) {
return emit(AuthResponse.failure(
msg.username,
provider: AuthProviders.username,
type: AuthType.register,
));
} else if (!AuthValidator.isValidPassword(password)) {
return emit(AuthResponse.failure(
msg.password,
provider: AuthProviders.username,
type: AuthType.register,
));
} else {
try {
emit(const AuthResponse.loading(
AuthProviders.username,
AuthType.register,
));
final response = await authHandler.signUpWithUsernameNPassword(
username: username,
password: password,
);
if (response.isSuccessful) {
final result = response.data?.user;
if (result != null) {
final creationTime = Entity.generateTimeMills;
final user = authenticator.copy(
id: result.uid,
email: result.email,
name: result.displayName,
phone: result.phoneNumber,
photo: result.photoURL,
provider: AuthProviders.username.name,
loggedIn: true,
loggedInTime: creationTime,
timeMills: creationTime,
);
if (onBiometric != null) {
final biometric = await onBiometric(user.mBiometric);
return _update(
id: user.id,
creates: user.copy(biometric: biometric?.name).source,
updates: {
...user.extra ?? {},
AuthKeys.i.loggedIn: true,
AuthKeys.i.loggedInTime: Entity.generateTimeMills,
},
).then((value) {
return emit(AuthResponse.authenticated(
value,
msg: msg.signUpWithUsername.done,
provider: AuthProviders.username,
type: AuthType.register,
));
});
} else {
return _update(
id: user.id,
creates: user.source,
updates: {
AuthKeys.i.loggedIn: true,
AuthKeys.i.loggedInTime: Entity.generateTimeMills,
},
).then((value) {
return emit(AuthResponse.authenticated(
value,
msg: msg.signUpWithUsername.done,
provider: AuthProviders.username,
type: AuthType.register,
));
});
}
} else {
return emit(AuthResponse.failure(
msg.authorization,
provider: AuthProviders.username,
type: AuthType.register,
));
}
} else {
return emit(AuthResponse.failure(
response.exception,
provider: AuthProviders.username,
type: AuthType.register,
));
}
} catch (_) {
return emit(AuthResponse.failure(
msg.signUpWithUsername.failure ?? _,
provider: AuthProviders.username,
type: AuthType.register,
));
}
}
}