signInWithPassword method
Sign in with email and password via Supabase Auth API.
Implementation
Future<BloomSupabaseUser> signInWithPassword({
required String email,
required String password,
}) async {
try {
if (supabaseClient != null) {
final res = await supabaseClient!.auth.signInWithPassword(
email: email,
password: password,
);
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 ?? const {},
);
if (session != null) {
await setSession(user: user, token: session.accessToken);
}
return user;
}
final data = await _http.post<Map<String, dynamic>>(
'/token?grant_type=password',
body: {'email': email, 'password': password},
);
final userMap = data['user'] as Map<String, dynamic>? ?? {};
final token = data['access_token']?.toString() ?? '';
final user = BloomSupabaseUser(
id: userMap['id']?.toString() ?? '',
email: userMap['email']?.toString() ?? email,
accessToken: token,
refreshToken: data['refresh_token']?.toString(),
userMetadata: userMap['user_metadata'] is Map
? Map<String, dynamic>.from(userMap['user_metadata'] as Map)
: const {},
);
await setSession(user: user, token: token);
return user;
} catch (e) {
logger.error('BloomSupabaseAuth: signIn error: $e');
rethrow;
}
}