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が利用できますので、ぜひ使い方を覚えてください。