NCMBはモバイル向けのBaaS(mobile Backend as a Service)ですが、サーバー側のデータとNCMB上のデータを連係させたいというニーズは良くあります。
そんなときには各言語向けのSDKがあると便利です。サーバー向けにはRuby、Python、PHP、Java、C#のSDKがあります(すべて公式サポート対象外の、コミュニティSDKという位置づけです)。
今回はGo言語向けのSDK開発をはじめたので、その使い方を紹介します。この記事ではACL(アクセス権限)の使い方を解説します。
ソースコード
ソースコードはGitHubにて公開しています。ライセンスはMIT Licenseになります。
インストール
SDKのインストールは下記コマンドで行います。
go get -u github.com/NCMBMania/ncmb_go
インポート
続けてSDKをインポートします。
import (
"github.com/NCMBMania/ncmb_go"
)
初期化
NCMBより取得したアプリケーションキー、クライアントキーを使って初期化します。
ncmb := NCMB.Initialize("YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY")
ACLについて
NCMBで用意されているACLは、クラス(データベースでいうテーブル相当)または行単位で設定できます。クラス全体に対するACLは管理画面からのみ指定できます。そのため、SDKでは行単位のACLが対象となります。
ACLは以下の3パターン、READ/WRITEの2種類で設定できます。WRITEは編集および削除権限になります。
- 全体
- 特定のユーザー
- 特定のグループ
ACLの使い方
ACLは以下のメソッドで作成します。
acl := ncmb.Acl()
この acl
に対して、設定を行います。
全体のへのACL設定
全体の場合、以下のメソッドを利用します。
// 全体への読み込み権限
acl.SetPublicReadAccess(false) // false は読み込み不可の指定
// 全体への編集権限
acl.SetPublicWriteAccess(false) // false は編集権限不可の指定
特定ユーザー向けのACL設定
ユーザーの場合は、ユーザーオブジェクトと一緒に指定します。
user, err := ncmb.SignUpByAccount(userName, password)
acl.SetUserReadAccess(user, true)
acl.SetUserWriteAccess(user, true)
特定グループ向けのACL設定
特定のグループを指定する場合には、そのグループ名(ロール名)を指定します。
acl.SetRoleReadAccess("Admin", true)
acl.SetRoleWriteAccess("Admin", true)
ACLの設定
ACLをアイテムと紐付ける場合には、 SetAcl
を利用します。
item.SetAcl(acl)
ACLの取得
ACLを取得する際には、 GetAcl
を利用します。
acl, err := item.GetAcl()
ACLの確認
設定状態を確認する際には、Set系に対応するGetメソッドで取得してください。
- GetPublicReadAccess() bool
- GetPublicWriteAccess() bool
- GetUserReadAccess(user *User) bool
- GetUserWriteAccess(user *User) bool
- GetRoleReadAccess(role string) bool
- GetRoleWriteAccess(role string) bool
注意点
ACLで false を設定した場合、そのデータは保存されません。NCMBではfalse設定は不要で、trueのみを設定します。そのため、false設定で保存した場合には、管理画面上はデータがありません(SDKではfalseが返ってきます)
まとめ
まだ基本的な機能しかありませんが、徐々にバージョンアップしていきます。
Go言語を使ってWebアプリケーションを開発している方は、そのデータ保存先としてNCMBを利用してみてください。