見出し画像

Velo 第32回 ログインとメンバーオブジェクト

ログインバーはサイトにログインを求めるパーツです。
特定の会員に情報を公開したり、会員自身の情報へ他者のアクセス権を制限する等、必要とされる場合があります。
ログインバーは下図のようにパーツを追加/コミュニティから選択できます。

ログインバーの追加

さて、会員が今ログインしているか、しているならメンバーは誰かが特定できなければ必要な情報の提供や、アクセス権の制限はできません。
それを解決するAPIは wix-members-frontend モジュール の authentication と currentMember です。
以下のコードをご覧下さい。

// 冒頭で API を読み込みます
import {authentication} from 'wix-members-frontend';

// 
const isLoggedIn = authentication.loggedIn();
    if (!isLoggedIn){
// ログインしていない場合の対応
           }
//  ログインしている場合はコードを進める…

ご覧のように、Authentication API に loggedIn( ) 関数があり、結果を論理値で返します。
ログインしてない場合はプロンプトを出すなどの対応が普通です。
では、ログインしている場合は誰がログインしているかですが、以下のコードをご覧下さい。

// 冒頭で API を読み込みます
import {currentMember} from 'wix-members-frontend';

// メンバーIDを取得します
const member = currentMember.getMember()
// 戻り値はプロミスなのでデンデン対応をします
               .then(() => {
              // ログインメンバーのIDを取得します
                           const member_id = member._id;
                           // 必要なコードを加えます
        }) 

ご覧のように、currentMember API の getMember( ) 関数でログインメンバーオブジェクトを取得できます。
ただし、getMember( ) 関数の戻り値は第13回で示しましたプロミスですのでプロミスデンデン、若しくは async/await で対応します。
プロミスが解決すればメンバーオブジェクトが戻ります。
以下のコードをご覧下さい。
プロミス対応のない失敗例です。
初心者にはこう言うところが難しいです。

const member = currentMember.getMember();
// プロミス解決を待たず値を取ろうとしています
const member_id = member._id;

// 結果は member_id = undefined になり、続くコードは無意味になります                           

このメンバーオブジェクトには、_id、loginEmail などのプロパティがあります。
_id はログインメンバーのIDで、loginEmail は登録時のメルアドです。
言わずもがなですが、同一人物でもログイン方法が変われば ID も変わります。
第06回でもしましましたようにコレクションへの書き込み時にもこの ID がオーナーIDとして使われます。
実際にどんなプロパティがあるかをコンソールで確認してみましょう。
下図をご覧下さい。

メンバーオブジェクト

注意点が一つあります。
エディターでのプレビュー時はログイン状態ですのでログインに関するコードチェックはそのままではできません。
公開サイトでしっかり動くかどうかを必ずお確かめ下さい。

Velo開発のご依頼はこちら


いいなと思ったら応援しよう!