mitama package

Submodules

mitama.auth module

パスワード認証

Mitamaではパスワードのハッシュ化にはBCRYPTアルゴリズムの$2yプリフィクスのものを利用します 理由は、前回バージョンの第三版がPHPのpassword_hash関数を使用しており、移植性を保ちたかったからです。 しょうもなくてすみません

exception mitama.auth.AuthorizationError

ベースクラス: Exception

mitama.auth.check_jwt(token)

JWTからUserインスタンスを取得します

パラメータ

token -- JWT

戻り値

Userインスタンス

mitama.auth.get_jwt(user)

UserインスタンスからJWTを生成します

パラメータ

user -- Userインスタンス

戻り値

JWT

mitama.auth.password_auth(screen_name, password)

ログイン名とパスワードで認証します

パラメータ
  • screen_name -- ログイン名

  • password -- パスワード

戻り値

Userインスタンス

mitama.auth.password_hash(password)

パスワードをハッシュ化します

パラメータ

password -- パスワードのプレーンテキスト

戻り値

パスワードハッシュ

mitama.conf module

configの実装

柔軟性を上げたかったので、デフォルト値を持ったオブジェクトのプロパティをdictの値で更新する方式をとった とりあえず、プロジェクトフォルダ直下のmitama.jsonを読む仕様にしている。

class mitama.conf.Config(path, dic)

ベースクラス: object

apps = {}
to_dict()
mitama.conf.get_from_project_dir()

プロジェクトフォルダを返します

App起動時にBuilderからメタ情報が登録されるので、基本的にはアプリから触る必要はないはずです。 :return: Configインスタンス

mitama.extra module

mitama.hook module

class mitama.hook.HookRegistry(*args, **kwargs)

ベースクラス: mitama._extra._Singleton

add_create_group_hook(func)
add_create_user_hook(func)
add_delete_group_hook(func)
add_delete_user_hook(func)
add_update_group_hook(func)
add_update_user_hook(func)
create_group(target)
create_user(target)
delete_group(target)
delete_user(target)
update_group(target)
update_user(target)

mitama.nodes module

ノード定義

  • UserとGroupのモデル定義を書きます。

  • 関係テーブルのモデル実装は別モジュールにしようかと思ってる

  • sqlalchemyのベースクラスを拡張したNodeクラスに共通のプロパティを載せて、そいつらをUserとGroupに継承させてます。

Todo:
  • sqlalchemy用にUser型とGroup型を作って、↓のクラスをそのまま使ってDB呼び出しできるようにしたい

class mitama.nodes.Group(**kwargs)

ベースクラス: mitama.nodes.Node, sqlalchemy.ext.declarative.api.Model

グループのモデルクラスです

パラメータ
  • _id -- 固有のID

  • screen_name -- ドメイン名

  • name -- 名前

  • icon -- アイコン

append(node)
append_all(nodes)
children()
create()

グループを作成します

delete()

グループを削除します

property icon
is_descendant(node)
is_in(node)
name
remove(node)
remove_all(nodes)
screen_name
classmethod tree()
update()

グループの情報を更新します

class mitama.nodes.Node

ベースクラス: object

icon_to_dataurl()
property id
is_ancestor(node)
name = Column(None, String(length=255), table=None)
parents()
classmethod retrieve(id=None, screen_name=None)
screen_name = Column(None, String(length=255), table=None)
class mitama.nodes.Relation(**kwargs)

ベースクラス: sqlalchemy.ext.declarative.api.Model

child
parent
class mitama.nodes.User(**kwargs)

ベースクラス: mitama.nodes.Node, sqlalchemy.ext.declarative.api.Model

ユーザーのモデルクラスです

パラメータ
  • _id -- 固有のID

  • screen_name -- ログイン名

  • name -- 名前

  • password -- パスワード

  • icon -- アイコン

create()

ユーザーを作成します

delete()

ユーザーを削除します

property icon
name
password
screen_name
update()

ユーザー情報を更新します

mitama.permission module

class mitama.permission.PermissionMixin

ベースクラス: object

パーミッションのモデルの実装を支援します

ホワイトリスト方式の許可システムを実装する上で役に立つ機能をまとめたクラスです。 このクラスとBaseDatabase.Modelを継承したクラスを定義するとパーミッションシステムを実現できます。

class SomePermission(PermissionMixin, db.Model):
    pass

継承先のクラスで target プロパティを定義した場合、特定のものに対してのみ許可する仕様にすることができます。

class SomePermission(PermissionMixin, db.Model):
    target = Column(User)

targetがUser、またはGroupの場合、targetUpPropagate、 targetDownPropagateを指定すれば、targetに対しても伝播をチェックすることができます。

パラメータ
  • _id -- 固有のID

  • node -- 許可するUser、またはGroupのインスタンス

  • targetUpPropagate -- targetがUser、またはGroupの場合の上向き伝播

  • targetDownPropagate -- targetがUser、またはGroupの場合の下向き伝播

  • upPropagate -- 許可対象のUser、またはGroupの場合の上向き伝播

  • downPropagate -- 許可対象のUser、またはGroupの場合の下向き伝播

classmethod accept(node, target=None)

UserまたはGroupに許可します

パラメータ
  • node -- UserまたはGroupのインスタンス

  • target -- 許可対象

downPropagate = False
classmethod forbit(node, target=None)

UserまたはGroupの許可を取りやめます

パラメータ
  • node -- UserまたはGroupのインスタンス

  • target -- 許可対象

classmethod is_accepted(node, target=None)

UserまたはGroupが許可されているか確認します

パラメータ
  • node -- UserまたはGroupのインスタンス

  • target -- 許可対象

classmethod is_forbidden(node, target=None)

UserまたはGroupが許可されていないか確認します

パラメータ
  • node -- UserまたはGroupのインスタンス

  • target -- 許可対象

is_target(target=None)
node = Column(None, Node(), table=None)
targetDownPropagate = False
targetUpPropagate = False
upPropagate = False

Module contents