前のページはこちら
それでは、早速supabase_repository.dartにAuthの処理を書いていきましょう。
ユーザー登録
ユーザー登録の処理を書きます。supabase_repository.dartのSignUpメソッドをこのように変更してください。
static Future<bool> SignUp({email, pass}) async {
try {
var supabaseAuth = Supabase.instance.client.auth;
var response = await supabaseAuth.signUp(email, pass);
if (response.error != null) {
print("エラーです" + response.error!.message);
throw new Exception(response.error);
}
print('アカウントが生成できました${response.user!.id}');
return true;
} catch (e) {
return false;
}
}解説
supabaseのAuth関連の処理はSupabase.instance.client.authのメソッドが持っています。
ユーザー登録はsignUpメソッドを使用、引数にはメールアドレスとパスワードを指定します。(前回の下準備で渡すようにしています)
awaitで待つと、レスポンスが返ってきます。エラーの場合はresponse.errorにメッセージが返ってきます。例えば、メールアドレスを「test@test.com」パスワードを「123」とした場合、

というエラーが出て、6文字以上が必要な旨がメッセージとして返ってきます。
メールアドレスと6文字以上のパスワードを入力する事で、ユーザー登録が完了します。supabaseのコンソールでも、登録されている事が確認できます。

ログイン処理
次にログイン処理を書きます。supabase_repository.dartのLogInメソッドを変更します。
static Future<bool> LogIn({email, pass}) async {
try {
var supabaseAuth = Supabase.instance.client.auth;
var response = await supabaseAuth.signIn(email: email, password: pass);
if (response.error != null) {
print("エラーです" + response.error!.message);
throw new Exception(response.error);
}
return true;
} catch (e) {
return false;
}
}解説
Supabase.instance.client.authの中のsignInを利用するとログイン処理が実装出来ます。今回の引数はemailとpasswordとなります。
ログインが成功すると、上の方にログインしたメールアドレスが表示されるようにしてあります。

これはauth_page_view.dartにある、下記で表示されています。
Text('${Supabase.instance.client.auth.currentUser?.email}'),Supabase.instance.client.auth.currentUserにはログイン中のユーザー情報が入っており、グローバルに利用が出来ます。
今回はログイン、ログアウト後にsetStateをして更新をしているので、成功するとテキストがログイン中ユーザーのメールアドレスに変わります。
ログアウト処理
最後にログアウト処理です。supabase_repository.dartのLogOutメソッドを変更します。
static Future<bool> LogOut() async {
try {
var supabaseAuth = Supabase.instance.client.auth;
var response = await supabaseAuth.signOut();
if (response.error != null) {
print("エラーです" + response.error!.message);
throw new Exception(response.error);
}
return true;
} catch (e) {
return false;
}
}解説
Supabase.instance.client.authの中のsignOutを利用するとログアウト処理が実装出来ます。
ログアウトすると、カレントユーザーがいなくなるのでnull表示となります。

次のページはこちら