Xano×Bubbleでの、APIを使ったアクセス制御について

Bubbleで、特定のページにアクセスをしたとき(Page is loadedしたとき)、XanoのDBのaccess_userカラム(フィールド)に自身のメールアドレスがない場合はindexへ遷移、逆にある場合はそのままページにとどまる、ということを実現したいです。
なお、自身のメールアドレスは、localstorageにある(Xanoから発行された)tokenを使ってAPIを叩いて取得します。
access_userに登録しているメールアドレスも、別のAPIを叩いて取得しています。

ワークフローは以下のようになっています。


→localStorageに保存したtokenで、Xanoに登録されている自身のemailを取得


→CustomStateを作り、一時的にメールアドレスをセットしています(emailを取ってこれているかの確認も込めて)


→ページ(レコード)ごとにIDが付与されており、そのIDのaccess_user(メールアドレス)を取得


→もしaccess_userの中に自分のメールが含まれていなければindexへ

【質問】
ここからご質問です。
上記のように組んでみましたが、ログインユーザーであれば誰でも見れるようになってしまっています(アクセス制御ができていません)。
debuggerを使って確認したところ、emailが取得できていないように見えます(valueがemptyになっています)。

おそらく、APIでメールを取ってくる処理が終わってないにもかかわらず、次の処理を進めているからのように思っています。

こちら、OnlyWhenやCustomEventなど、いろいろ試してみたもののうまくいかず。。。
解決方法をご教示いただけますと幸いです。

お手数をおかけしますが、何卒よろしくお願いいたします。

@ono もし、処理の順序の問題であれば、いくつか順序を担保させる方法があります。
以下のページに記載があるのでそれを参考に必要な箇所の順序を担保させてみるのが良いかと思います。

「いいね!」 3

Ikejapaさん

ありがとうございます!
ドキュメント見て、いろいろ試してみたのですがまだうまくいかず。。。
3のxanoAPI -me_action_email_getで、本来emailが取ってこれるはずなのですが、取ってくる前に比較が始まってしまいます。。。
CustomEventを作って分けてみたりもしましたがうまくいかず。。


Xano側でも、BubbleのAPI connecterでも単体であれば問題なく取得できているのですが、ワークフローに組み込むととたんにうまくできず。。。

お手数をおかけしますが、ご教示いただけますと幸いです。
何卒よろしくお願いいたします。

@ono
現状の実装ではなく、 先に実行させたい"xanoAPI"をcustom eventの中で処理し、その後に今のcheck accessを実行させてもダメでしょうか?

もっと確実にするのであれば、先に実行させたいxanoAPIをcustom eventの中で実行し、custom eventから適当な値をreturn dataとして戻す(yes/noなどを設定して毎回yesを返却とか)ようにし、そのreturn dataを後続の処理でresult of xx(custom eventからの返却値)という形で利用するようにすれば順序性は担保できないでしょうか?

Check Accessの処理の実行条件にxanoAPIを含んだcustom eventのreturn dataを設定するような形でも良いかと思います。

「いいね!」 2

@Ikejapa

ありがとうございます!
長いこと詰まっていたのですが、おかげで解決いたしました!

以下、解決方法です。

Custom Eventを2回使っています(どちらもメール取得のAPI)。
また、これまでAPIのUse asをActionとしていましたが、Dataとしてワークフローに組み込みました。

助かりました、ありがとうございました!
引き続きよろしくお願いいたします!

「いいね!」 2