ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Swift SDKを使ってTodoアプリを作る(その3:ACLを実装する)

f:id:mbaasdevrel:20210407112246p:plain

NCMBではSwift向けにSDKをリリースしています。最近ではiOSアプリを作る際にSwiftを利用することが増えていますので、その場合にはネイティブ言語で実装されているSwift SDKの利用をお勧めします。

そんなSwift SDKの使い方を知ってもらうためにも、ちょっとしたアプリ(Todoアプリ)を作ってみました。徐々に機能を追加していきますので、Swift SDKの利用法をぜひ覚えてください。

今回は前回の匿名認証をベースとして、その情報を使ってACL(アクセス権限)を設定します。

Swift SDKでのACL設定方法

ACLを使うのはデータの保存やアップデートを行うときになります。元々のコードは次のようになっています。

func addTodo(text: String) {
    let obj = NCMBObject(className: "Todo")
    obj["body"] = text
    obj.saveInBackground(callback: { result in
        switch result {
            case .success(_):
                self.Todo.todos.append(obj)
            case let .failure(error):
                print("取得に失敗しました: \(error)")
        }
    })
}

ここにACLの作成を追加します。コードは var acl = NCMBACL.empty です。

let obj = NCMBObject(className: "Todo")
obj["body"] = text
// ACLを作成
var acl = NCMBACL.empty

さらにログインユーザ情報を取得します。

let user = NCMBUser.currentUser!

このユーザ情報が存在する場合(今回は匿名認証であり、必ず存在します)、次のような実装になるでしょう。ACLは obj["acl"] ではなく obj.acl を使って指定します。

// 個別ユーザに対するACL設定
acl.put(key: user.objectId!, readable: true, writable: true)
// ロールに対するACL設定
acl.put(key: "role:Admin", readable: true, writable: false)
obj.acl = acl

後は保存処理を行うのは変わりません。

obj.saveInBackground(callback: { result in
    switch result {
        case .success(_):
            self.Todo.todos.append(obj)
        case let .failure(error):
            print("取得に失敗しました: \(error)")
    }
})

これでアクセス権限を設定してデータを保存できます。

まとめ

ACLはデータをセキュアに、安全に管理する上で必須のテクニックになります。データストアや会員管理、プッシュ通知、ファイルストアなどNCMBで扱うデータでACLが利用できますので、ぜひ使い方を覚えてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。