mitama package¶
Subpackages¶
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を読む仕様にしている。
-
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.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¶