Bubbleでクローズドな教育系SNSを作る【ログイン・ログアウト編①】

#はじめに
本編ではユーザー登録編で作成したユーザーでログイン、ログアウトする機能を実装していきます。

#要件
ログイン・ログアウト処理に関する要件を整理します。

①メールアドレスとパスワードでログインする
②ログイン後は指定のページ「ログイン後遷移ページ」に遷移する
③ログインしていない状態で「ログイン後遷移ページ」のURLを直接叩いた場合、強制的に別ページ「ログインページ」に遷移させる
④管理者に承認されていないアカウントでログインしようとした場合、[以前](https://qiita.com/yuki_ink/items/f377ef0ced2e398aeac5#%E3%83%9A%E3%83%BC%E3%82%B8%E9%81%B7%E7%A7%BB)作った「ユーザー登録後遷移ページ」に遷移させる
⑤ログアウト後はトップページに遷移させる

それでは張り切っていきましょう！

#ログインページの作成
「log_in」というページ名でページを作り、エレメントを配置します。
メールアドレス、パスワードの入力フォームと「ログイン」ボタンさえあればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/b4d06f22-be34-b225-c23a-54c429cd997f.png)

##Workflow設定
「ログイン」ボタンのWorkflowを設定します。

###要件④の実装
ログイン処理を行う前に、まず要件④を実現するためのWorkflowを入れます。
未承認のアカウントはログイン処理の前に「ユーザー登録後遷移ページ」に遷移させる必要があります。

承認状況はそのアカウントのApproval flagを見れば分かります。
「yes」であれば承認済み、「no」であれば未承認でしたね。
というわけで、こんな感じで設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/40fc81ba-1793-fffc-40b4-e60a0c3450d3.png)
ページ遷移先は「after_signup」を指定します。

また、Only whenに「Search for Users:first item's Approval flag is "no"」と入れ、さらに「Search for Users」部分で「email = Input メールアドレス's value」を指定することで、入力されたメールアドレスに紐づくユーザーが未承認の場合にページ遷移させることができます。

###ログイン処理
いよいよログイン処理です！
「Click here to add an action...」からAccount > Log the user inをクリックします。

まずはEmailとPasswardに、それぞれ先ほど作った入力フォームの値を入れます。
続いて「Stay logged In」ですが、これは24時間ログイン状態にするかどうかの設定です。
何度もログインするのは面倒なので、今回は「yes」にしておきます。
「Remember the email」は今後メールアドレスをブラウザに記憶させておくかどうかの設定です。
こちらも「"yes"」にしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/b94c58f3-661f-fbd6-f992-5d7f650ef87f.png)

###「ログイン後遷移ページ」への遷移
・・・としたかったんですが、まだ作ってなかったですね(;'∀')
作ります。

「after_login」というページ名でページを作ります。
テストの際、正常にログインできていることが確認できるよう、ログインユーザーの名前を表示させるようにしましょう。
TextのInsert dynamic dataから「Current User's Name」と入れることでユーザー名を表示することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/562f3cc2-4850-c7fd-71c7-aec18b6e4cd5.png)
ログインページのWorkflow画面に戻り、ログイン後遷移ページへ遷移するStepを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/f02e3829-568c-ba1a-6ede-a898fed579ed.png)
これでログインページの設定は終了です！

#トップページのWorkflow設定
トップページの「ログイン」ボタンからログインページに遷移できるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/137f5946-155a-fbfa-64c2-382b42cce123.png)
終了！

#やってみる
Previewしてみましょう。

まずはApproval flagが「no」の未承認アカウントで試してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/5eb3d2d1-1f02-7472-e4d5-41c5f78b3656.png)
「ログイン」ボタンを押すとユーザー登録後遷移ページに飛ばされました。いい感じ！
以前作ったページを使いまわしているのでお得感があります（？）

Workflow設定の際、ログイン処理の手前にページ遷移を持ってきました。
そのため、未承認アカウントでログインを試みた際は、入力したパスワードが合っていようが間違っていようがユーザー登録後遷移ページに飛ばされます。

続いてApproval flagを「yes」にしてリトライします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/493aacdf-e798-3f82-db3d-b75c270a979e.png)
正常にログインできました！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/9cd35780-c3c5-91ed-ee17-04dcf6d6c238.png)
Approval flagを「yes」となっているアカウントでログインを試みてパスワードが間違っていた場合、ブラウザの警告文が表示されます。
このあたりはBubbleが良しなにやってくれるので、特に設定する必要はありません！
強い！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/731275/029b15b2-a64b-f682-d432-7adc94ae4e2a.png)
ただし、英語じゃなくて日本語にしたいというような要件がある場合、設定変更が必要になります。

#終わりに
今回は要件①②④を実装しました。
次回は要件③⑤を実装していきます。