Autologin implemented

This commit is contained in:
SomnusVeritas
2023-10-20 19:17:08 +02:00
parent c55c96c8b8
commit cf87614005
3 changed files with 69 additions and 12 deletions

View File

@@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
@@ -7,6 +8,11 @@ class DbHelper {
static final _supabase = Supabase.instance.client;
static User? get currentUser => _supabase.auth.currentUser;
static Stream<AuthState> get authEventStream =>
_supabase.auth.onAuthStateChange;
static Future<void> init() async {
await Supabase.initialize(
url: 'https://vhmrtvhcmvylhrhblyjb.supabase.co',
@@ -17,22 +23,43 @@ class DbHelper {
static void login(String username) async {
final prefs = await _prefs;
final String? savedUsername = prefs.getString('username');
if (savedUsername == null) {
try {
await _supabase.auth.signInWithPassword(
email: '$username@skup.in',
password: 'password',
);
await prefs.setString('username', username);
} on AuthException catch (e) {
await _supabase.auth.signUp(
email: '$username@skup.in',
password: 'password',
data: {'username': username});
await prefs.setString('username', username);
// TODO create new account
} else if (savedUsername == username) {
// TODO log into database
} else {
// TODO wrong username
}
}
static Future<bool> autoLogin() async {
final prefs = await _prefs;
final String? username = prefs.getString('username');
if (username == null) return false;
try {
await _supabase.auth.signInWithPassword(
email: '$username@skup.in',
password: 'password',
);
return true;
} on AuthException catch (e) {
if (kDebugMode) {
print('Could\'t automaticall log in.\n${e.message}');
}
}
return false;
}
static void logout() async {
final prefs = await _prefs;
bool success = await prefs.remove('username');
//TODO log out on database
_supabase.auth.signOut();
}
}