ekuinox / red_drink

気持ち的には家のサーバのダッシュボード的なのが作りたい

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

action的なのをつくる

ekuinox opened this issue · comments

イメージとして POST /actions/{actionId}/invoke ってやると、actionId から特定のアクションを実行できる感じにしたい
データベースに actionId をキーとしてアクションの詳細をJSONとかで保存しておく感じにしたい
アクションが要求する権限を詳細内のJSONに記述して、リクエストをかけているユーザが持つロールから満たすか確認して実行する感じを考えている
とりあえずアクションはサーバのシェルを実行するくらいで考えていて、{ type: ActionType, data: { cmd: './start.sh' } } 的なオブジェクトをJSONからパースしたいと考えている

リソースに対しての権限という感じのことをできるならばしたいけど、今の権限の仕組みでは難しい?リソースの概念も別にいらん気がするし

role_permissionsテーブルにリソースも乗っけちゃったら良い気がする
(role_)accessiblesにでも名前を変えて、resourceのidでも加えたら良い気がする
リソースはリソースのテーブル欲しいし、キーの制約もほしい
allow, denyも付け加えられたらいいけど、とりあえずなしで

SQLのカラムにJSONってぶち込んでいいもんなんですか?

変更はそんな頻繁に出るもんじゃないと思うし、JSONの中身に対してクエリをかけたいわけじゃないけど、自動トリガしたいとかになったら面倒かな

id, kind, descriptor, created_atでactionsテーブルとしてやってみている
descriptorがJson型でToSql, FromSqlを実装することで多分これまでと同じようにモデルを書けると思うのだけど、不安なのだわ
kindはVarcharでやってるけど、同じようにenumで書いても良いかもしれん

これKindじゃなくてDescriptorなのだわ

多分いろいろなActionを定義したくなると思うので、Descriptorをenumかなんかにしたほうが良くて、あとkindはもしかしたらいらんかも知れん いやいるか クエリしやすくなるかな

これユーザがどのActionを実行可能かとってこれないとだるくないか!?