signUp method
Sign up a new user via Supabase Auth API.
Implementation
Future<BloomSupabaseUser> signUp({
required String email,
required String password,
Map<String, dynamic>? data,
}) async {
try {
if (supabaseClient != null) {
final res = await supabaseClient!.auth.signUp(
email: email,
password: password,
data: data,
);
final session = res.session;
final user = BloomSupabaseUser(
id: res.user?.id ?? '',
email: res.user?.email ?? email,
accessToken: session?.accessToken,
refreshToken: session?.refreshToken,
userMetadata: res.user?.userMetadata ?? (data ?? const {}),
);
if (session != null) {
await setSession(user: user, token: session.accessToken);
}
return user;
}
final json = await _http.post<Map<String, dynamic>>(
'/signup',
body: {
'email': email,
'password': password,
if (data != null) 'data': data,
},
);
final token = json['access_token']?.toString() ?? '';
final user = BloomSupabaseUser(
id: json['id']?.toString() ?? '',
email: json['email']?.toString() ?? email,
accessToken: token,
refreshToken: json['refresh_token']?.toString(),
userMetadata: json['user_metadata'] is Map
? Map<String, dynamic>.from(json['user_metadata'] as Map)
: (data ?? const {}),
);
if (token.isNotEmpty) {
await setSession(user: user, token: token);
}
return user;
} catch (e) {
logger.error('BloomSupabaseAuth: signUp error: $e');
rethrow;
}
}