1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bubbleでクローズドな教育系SNSを作る【ユーザー登録編⑤】

Last updated at Posted at 2021-02-11

#はじめに
前回に引き続き、ユーザー登録機能を実装していきます。

①ユーザー登録希望者がユーザー登録ページから申請する。
 →アカウントはこの時点で作成されるが、まだ無効の状態。ログインできない。

②申請内容がSNS管理者にメールで通知される。
③申請内容をSNS管理者がチェックする。
 →管理者が問題ないと判断すればアカウントを有効化する。
④アカウントが有効化されると申請者に通知される。

前回で①が完成したので、今回は②の部分を実装します。

#メール通知
といっても②は①に比べると圧倒的に簡単です。
Workflowいじるだけ。
前回も触ったユーザー登録処理のWorkflowを編集します。
image.png
Click here to add an action > Email > Send emailを選択します。
Send emailウィンドウが出てくるので、必要情報を入力していきます。
image.png
Toにはメールを送信したいアドレスを入力します。

ここで画面右上、「1 issues」とあり、何やら怒られています。
image.png
どうやらWorkflowの順番がダメみたいです。
今作った「Send email」を「Go to page for after_signup」の前に持ってきます。
image.png
issueが消えました。

###Previewからやってみる
いい感じにメールが届きました。
image.png
これで②終わりです笑。

#アカウント有効化
③部分の実装に入ります。
今の時点ではまだアカウントは無効なので、有効にしてやらんといかんと。なるほど。
ぶっちゃけ、要件が③までなら、BubbleのData画面から直接手動で「Approval flag」を「yes」に変えてしまえばいい話です。
しかし、今回は④まで要件がある( ^ω^)・・・

お察しの通り、④はWorkflowで処理するわけですが、そのWorkflowをキックするイベントをBubbleのアプリ上で作ってやらないといけません。
言い方を変えると、Data画面から手動でフラグを変えたらメールも手動で送らないといけなくなるよ?ってことです。
それはだるすぎる。

というわけで、張り切っていきましょう!

##ロジックを考える
では、どのようにしてアプリ内からアカウントを有効化させるのか。
下記のように考えました。

⑴とりあえず専用のページはあった方がよさげ

⑵どのアカウントを有効化するか指定するため、メールアドレスの入力は必須
メールアドレスは一意で、重複はありません。
すでに登録済みのメールアドレスでユーザー登録を試みた際はBubbleにはじかれます。

⑶内部の人間しか知らない情報を入力する必要がある
⑵までだと、ユーザー登録申請者自ら承認用ページにアクセスし、自らのアカウントを有効化することができてしまいます。
それはちょっと嫌だ。

今回はかの有名なノーコードラボさんの記事『Bubble から SMS を送信して電話番号認証をする方法』から着想を得て、ランダムな4桁の数字(以下承認コード)を内部情報として発行したいと思います。

まとめると、承認まわりのロジックはこうなります。
❶ユーザー登録と同時にそのアカウントの承認コードが発行され、DBに保管される
❷先ほど作ったメールで承認コードが届く
❸メールを受け取った者がユーザー登録承認ページにアクセスし、メールアドレスと承認コードを入力して承認する
❹ユーザー登録が承認された旨が申請者に通知される(要件④)

##承認コード発行
承認コード周りの機能を実装します。

###データベースの準備
承認コードを作る前に、まずは承認コードを格納するフィールドを作ってやります。
「Approval flag」を作ったときと同様の手順です。
image.png
「Approval code」というフィールドを作りました。
中身は数字が入りますが、その数字で何か計算したりとかはしないので、typeはtextでいいでしょう。

###承認コードを取得する
承認コード(ランダムな4桁の数字)はプラグイン「Random Number Generator」を使って生成します。
Plugins画面に移り、「+Add plugins」ボタンからインストールします。
image.png
「Install」をクリックし(一瞬でインストールされます)、下部の「DONE」をクリックします。

Design画面に移り、Visual elementsを確認すると、「Random Number」が追加されていることが分かります。
image.png
この「Random Number」のエレメントをuser_registrationページに追加します。
いつものようにドラッグアンドドロップ。
ユーザーからは見えないので、場所は適当でOKです笑(The element is visible on page loadにチェックが付いているか確認してください)。

設定ウィンドウが開くので、名前を「RandomNumber 承認コード」に変えます。
4桁の数字を作りたいので、Minimun を「1000」、Maximum を「9999」と設定します。
image.png

##ユーザー登録承認ページを作る
メールにユーザー登録承認ページのリンクが埋め込んであったら便利ですよね。
ということで、いつものように「Add a new page...」から新規ページを作っていきます。
image.png
名前は「account_approval」にしました。
Inputでメールアドレスと承認コードの入力フォームを作ります。
Content formatはメールアドレスの方は「Email」、承認コードの方は「Text」に設定しておきます。
名前はそれぞれ「Input メールアドレス_承認用」、「Input 承認コード_承認用」にしておきました。
※「承認用」の前にアンダーバーを入れているんですが、Qiitaの仕様で表示されないですね。
image.png
続いて「承認」ボタンを配置します。
image.png
Placeholderはいい感じに設定しておきましょう。

実際、ユーザー登録承認ページはもう少し作りこむところ(承認したあとポップアップ出したいとか)があるんですが、それはまた後日。

##Workflow設定
user_registarationページのWorkflow画面に移ります。
まずはユーザー登録処理と同時に承認コードが発行されるようにします。
「When Button OK is clicked」から「Sign the user up」をクリックし、「Change another field」から「Approval code = RandomNumber 承認コード's Number」を追加します。
image.png
これでユーザー登録と同時に承認コードが発行され、DBに保管されるようになりました。

メールの内容も追加しましょう。
「Send email」をクリックし、承認コードとユーザー登録承認ページのリンクを追記します。
リンクの記述の仕方は以前の記事で紹介しました。
image.png

###やってみる
この内容でテストしてみます。
image.png
いい感じにメールが届きました。
image.png
リンクをクリックするとユーザー登録承認ページに飛ぶことも確認できました。
いいね!
続いてData画面から胡蝶さんの承認コードを確認してみましょう。
image.png
メールで届いた承認コードと一致しています。
いいね!!

#終わりに
まあまあな長さになったので、いったんここで切ります。

次回は「承認」ボタンを押した後に出てくるポップアップの作成や、Workflowの編集を行っていきます。
次回でユーザー登録編終わるといいなあ( ^ω^)・・・
それではまた。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?