Bubbleを使ってログイン画面を作ったものの、
ログインしていないユーザでもログイン後のページが開けてしまうのでどうにかしたい。
なんてことがありますよね。
今回は、未ログインユーザの場合にはログイン画面へリダイレクトさせ、
ログイン済ユーザの場合には、専用ページを開けるように設定する方法を紹介します。
背景
ログイン画面を実装するにあたって、
Bubbleのログイン機能の実装方法について色々検索しました。
調べていると、「idとpassを入力してログイン出来ました!実装が簡単!」
という記事はいくつかヒットしたのですが、
肝心の「未ログインユーザの場合はログイン画面に飛ばす。ログイン済ユーザ専用ページは見せない。」という方法が中々ヒットしませんでした。
Webページあるあるの機能で、やりたい人は多い気がするので
記事にまとめることにしました。
想定する読者
- bubbleでログイン機能を実装したい人
- ログインしていない人はログイン画面へ、ログインしている人のみ専用ページを表示する
という仕組みを実装したい人
完成イメージ
ログインしていない状態でリンクを踏むと、ログイン画面に飛ばされます。
![](https://gonkunblog.com/wp-content/uploads/2023/01/f835cefa7e9ae631d7bc3ebdc2d9961f-138x300.png)
上記の「お試し用アカウントでログイン」のボタンを押して、
仮ユーザでログインしてからプロフィール画面のリンクを開いてみると、
ログイン画面に飛ばされずに、プロフィール画面が表示されます。
![](https://gonkunblog.com/wp-content/uploads/2023/01/0a0b99c59162356f9c11ee2c80f04456-139x300.png)
※ この記事では紹介していないですが、
元々表示しようとしていたページに飛ばす処理を入れているので、
このような動きになります。
以下の記事にて、実装方法を記載しております。
![](https://gonkunblog.com/wp-content/uploads/2023/01/8c7b4f6d3120dfad8218a2e6e9e8a44a-1-320x180.jpeg)
実装
「Log the user inメソッド」によるログイン機構を用いて、
ユーザをログインさせる実装となっていることが前提です。
![](https://gonkunblog.com/wp-content/uploads/2023/01/77798f8c8dfc932d2b7fea69750bbba2-295x300.png)
実装方法はかなりシンプルです。
ページロード時にログインチェックをする処理を追加するだけです。
page-is-loadedのeventを追加します。
![](https://gonkunblog.com/wp-content/uploads/2023/01/5a03a2f8f60fdd624caf0dff846ae7ad-300x155.png)
ログイン画面に飛ばすactionを、上記で作成したeventに追加します。
![](https://gonkunblog.com/wp-content/uploads/2023/01/632a6a4bad57bd8fc34dcb0b515083d5-300x263.png)
そして、このactionがユーザがログインしていない場合のみ実行されるように設定します。
「Only when」に「Current User is logged out」を設定します。
これだけです。
未ログインの場合はリダイレクトさせたいページに対して、
このeventを作成するだけです。
おわりに
未ログインユーザの場合には、ログイン画面にリダイレクトさせ、
元々のページは表示させないようにする処理を実装する方法を紹介しました。
上記の処理に+αで、
ログイン画面にリダイレクトさせてユーザにログインさせた際に、
ログイン前に元々開こうとしていたページに飛ばしたい。
という実装もしたくなりませんか?
上記の実装は、以下の記事にて紹介しておりますので、
是非ご覧ください。
![](https://gonkunblog.com/wp-content/uploads/2023/01/8c7b4f6d3120dfad8218a2e6e9e8a44a-1-320x180.jpeg)
以上です。