web2py version: 1.99.4

3.1. 認可管理用の機能

認可管理用の機能とは、グループ・メンバー・パーミッションの各認可情報の追加・削除を行う機能のことです。 Auth クラス にある、次の6つのメソッドで構成されます。

認可管理用の機能

add_group()

グループの追加

add_membership()

メンバーの追加

add_permission()

パーミッションの追加

del_group()

グループの削除

del_membership()

メンバーの削除

del_permission()

パーミッションの削除

これらを詳しく説明します。

Auth.add_group(role, description) → グループid

グループを追加します。

  • 使用例

    >>> auth.add_group('test', 'test users')
    10
    
  • パラメータ
    role

    グループのロール名を指定します。

    description

    グーループ説明を指定します。デフォルトは ‘’ (空値)です。

  • 戻り値

    登録したグループ id を戻します。

Auth.add_membership([group_id, user_id, role]) → メンバーシップid

メンバーを追加します。登録するユーザ id とグループの id もしくはロールを指定します。

  • 使用例

    >>> auth.login_bare('testuser','password')              #1
    (省略)
    >>> auth.add_group('test', 'test users')                #2
    10
    >>> auth.add_membership(10)                             #3
    10
    >>> auth.add_membership('test')                         #4
    10
    >>> auth.add_membership(user_id=1, role='test')         #5
    11
    
#1 コンソール上では login_bare メソッドでログインします。
#2 test というロール名のグループを追加します。
#3 ログイン中のユーザに、グループ id が 10 のメンバーシップを登録します。
#4 ログイン中のユーザに、ロールが ‘test’ のメンバーシップを登録します。しかし登録が存在するので、メンバーシップの id を戻します。
#5 ユーザ id が 1 のユーザで、ロールが ‘test’ のメンバーシップを登録します。
  • パラメータ
    group_id

    グループの id を指定します。デフォルトは None です。ロールで指定する場合は、デフォルト値のままにします。

    user_id

    ユーザの id を指定します。デフォルトは None です。 None の場合は現在のユーザの id で登録します。

    role

    ロールを指定します。デフォルトは None です。グループ id で指定する場合は、デフォルト値のままにします。

    パラメータを省略した場合、次のように動作します。

    パターン 説明
    user_id 省略 ログイン中のユーザidでメンバーを登録します。
    group_id 省略 role パラメータ指定がある場合はロールからグループidを検索し登録します。
    group_id / role 省略 パラメータが数字の場合はグループ id と判断し、登録します。
      パラメータが数字以外の場合はロールと判断し、ロールからグループidを検索し登録します。
  • 戻り値
    登録したメンバーシップ id を戻します。
    既にメンバーが登録されている場合は何もせず、メンバーシップ id のみ戻します。
Auth.add_permission(group_id[, name, table_name, record_id]) → パーミッションid

パーミッションを追加します。登録するグループの id とパーミッション名、テーブル名、レコード id などを指定します。

  • 使用例

    >>> auth.add_permission(0)
    4
    >>> auth.add_permission(0, 'read')
    5
    >>> auth.add_permission(0, 'create', 'comment')
    6
    >>> auth.add_permission(0, 'update', 'comment', 15)
    7
    
  • パラメータ
    group_id

    グループの id を指定します。このパラメータに 0 を指定すると、現在のユーザのユニークグループ(ロールが user_[id]のもの) でパーミッションが登録されます。

    name

    パーミッション名を指定します。デフォルトは ‘any’ です。

    table_name

    テーブル名を指定します。デフォルトは ‘’ (空値)です。

    record_id

    レコード id を指定します。デフォルトは 0 です。

  • 戻り値

    登録したパーミッション id を戻します。

Auth.del_group(group_id)

グループと関係するメンバーシップ及びパーミッションを全てを削除します。

  • 使用例

    >>> auth.del_group(10)
    
  • パラメータ
    group_id

    グループ id を指定します。

Auth.del_membership(group_id[, user_id, role]) → 削除件数

メンバーシップの削除を行います。

  • 使用例

    >>> auth.del_membership(10)
    1
    >>> auth.del_membership(10, 5)
    1
    >>> auth.del_membership(group_id=None, user_id=1, role='test')
    1
    
  • パラメータ
    group_id

    グループ id を指定します。ロールで指定する場合は、None を指定します。

    user_id

    ユーザの id を指定します。デフォルトは None です。 None の場合は、現在ユーザの id の該当するメンバーシップを削除します。

    role

    ロールを指定します。デフォルトは None です。

  • 戻り値

    削除件数を戻します。

Auth.del_permission(group_id[, name, table_name, record_id]) → 削除件数

パーミッションの削除を行います。

  • 使用例

    >>> auth.del_permission(10)
    1
    >>> auth.del_permission(10, 'read')
    1
    >>> auth.del_permission(10, 'create', 'comment')
    1
    >>> auth.del_permission(10, 'update', 'comment', 15)
    1
    
最初の行は、グループ id が 13 で名前が ‘any’ のパーミッションを削除しています。
  • パラメータ
    group_id

    グループ id を指定します。

    name

    パーミッション名を指定します。デフォルトは ‘any’ です。

    table_name

    テーブル名を指定します。デフォルトは ‘’ (空値)です。

    record_id

    レコード id を指定します。デフォルトは 0 です。

    name, table_name, record_id パラメータは指定してもしなくても、条件に合致するパーミッションしか削除しません。 例えば record_id を指定しない場合に、他の条件には一致しているパーミッションを全て削除する訳ではありません。 削除するには、record_id を指定して1つずつ削除することが必要です。

  • 戻り値

    削除件数を戻します。