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

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

Swiftでロールを作成する

f:id:mbaasdevrel:20180806093819p:plain

データには適切なACLが必要です。そのために使われるのがロールになります。自分だけのデータであればACLに自分を指定すれば良いだけですが、複数人で共有したいといった場合にはロールを利用します。

今回はSwiftでロールを利用する方法を解説します。

ロールの作成

Swiftからロールを作成するのは以下のコードでできます。

let role = NCMBRole.init(name: "Member")
role?.saveInBackground({error in
  if (error != nil) {
    
  } else {
    print("ロール作成")
  }
})

ロールを検索する

ロールにユーザを追加する場合には、まずロールを検索する必要があります。

let query = NCMBQuery.init(className: "role")
query?.whereKey("roleName", equalTo: "Member")
query?.findObjectsInBackground({(data, error) in
  if (error != nil) {
    print(error)
  } else {
    // 検索成功
    let role = data?[0] as! NCMBRole
  }
})

既存のロールにユーザを追加する

あるユーザ(今回は自分。変数は user)を既存のロール(role)に追加する際には以下のようにします。

role.add(user)
role.saveInBackground({(error) in
  if (error != nil) {
    print(error)
  } else {
    print("追加完了")
  }
})

新しいロールにユーザを追加する

裏技、という訳ではありませんが新しいロールにユーザを追加する場合はロールを検索せずに同時に処理できます。すでに同名のロールが存在している場合はエラーになるので注意してください。

let role = NCMBRole.init(name: "Member")
role.add(user)
role.saveInBackground({(error) in
  if (error != nil) {
    print(error)
  } else {
    print("追加完了")
  }
})

まとめ

ロールはより実用的な権限管理を行う上で欠かせない機能です。動的に作成することも多いでしょう。今回の書き方を参考に実装してください。

中津川 篤司

中津川 篤司

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