unicornidm.template(5)
========================

概要
-----

::

    templates/<name>.py

説明
------

バックエンドセクションを定義する際に、必ずテンプレートファイルを定義する必要があります。
テンプレートファイルは unicornidm.conf と同じディレクトリにある、
templates ディレクトリ内に、 <name>.py のファイル名で登録します。 <name> はバックエンド
の名前です。

テンプレートファイルのルール
-----------------------------

テンプレートファイルは Python の構文に基づいて以下のルールで記載します。

* *User* 及び *Group* という変数に辞書オブジェクトを割り当てること

* 辞書オブジェクトは key-value の形式になっていること

* 辞書オブジェクトの key は必ず str 型であること

* 辞書オブジェクトの value は以下のいずれかであること

    - str 型

    - str 型 (printf(3) の文字列書式を含む)

    - list 型

    - dict 型

        + dict の各 value は str か任意の変数であること

    - 任意の変数

    - default 関数の返り値

例
-----

以下は LDAP バックエンドのテンプレートファイルです。

::

    User = {
        "objectClass": [
            "top",
            "person",
            "organizationalPerson",
            "inetOrgPerson",
            "posixAccount",
        ],
        "uid": userName,
        "cn": userName,
        "uidNumber": default(uidNumber),
        "gidNumber": default(gidNumber, 100),
        "loginShell": default(loginShell, "/bin/bash"),
        "homeDirectory": default(unixHomeDirectory, "/home/%(userName)s"),
        "sn": familyName,
        "givenName": givenName,
        "userPassword": password,
        "mail": email,
        "description": default(description),
        "displayName": default(displayName, "%(familyName)s %(givenName)s"),
    }


    Group = {
        "objectClass": [
            "top",
            "posixGroup",
            ],
        "cn": groupName,
        "gidNumber": default(gidNumber),
        "description": default(description),
    }

このテンプレートファイルの特徴は以下です。

* *objectClass* に要素すべてが str 型の list を格納しています

    - バックエンドに属性を渡す際、必ず objectClass がここで定義した属性になります

* User の *uid* には userName という Unicorn ID Manager の任意属性が割り当てられています

    - Unicorn ID Manager から **userName=user1** としてユーザー登録を行った時、
      バックエンドには **uid: user1** として登録されます

* User の *mail* には email という Unicorn ID Manager の任意属性が割り当てられています

    - ルールは *uid* と同様ですが、もし email に複数の値が格納されていた場合、
      バックエンドの mail 属性にも同様に複数の値が割り当てられます

* User の *loginShell* には default 関数の返り値が割り当てられています

    - default 関数の第一引数 loginShell が指定されなかった場合、第二引数の
      /bin/bash が loginShell に割り当てられます

* User の *homeDirectory* には default 関数の返り値が割り当てられています

    - default 関数の第一引数 homeDirectory が指定されなかった場合、第二引数の
      /home/%(userName)s が割り当てられます。なお、 %(userName)s は Unicorn ID Manager
      の任意属性 userName の値に展開されます

* Group の *description* には default 関数の返り値が割り当てられています

    - default 関数の第一引数 description が指定されなかった場合、 *description*
      は空になります
