Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

長文で失礼しますが、よろしければ教えていただけますと嬉しいです!権限の確認はユースケース層・ドメイン層のどちらの知識として実装すればよいのか悩んでいます。例としてプロジェクト管理アプリがあったとします。エンティティはUser/Project... #787

Open
little-hands opened this issue Mar 31, 2022 · 0 comments

Comments

@little-hands
Copy link
Owner

Question

長文で失礼しますが、よろしければ教えていただけますと嬉しいです!

権限の確認はユースケース層・ドメイン層のどちらの知識として実装すればよいのか悩んでいます。

例としてプロジェクト管理アプリがあったとします。エンティティはUser/Project/Task/Tagです。

ProjectにUserがマネージャーかメンバー権限でアサインされている状態です。そこで、Projectへ新しいメンバーを追加することやTagを作成することは、マネージャー権限のみで可能であった場合にユースケースとドメインどちらの知識になるのでしょうか?

メンバー追加をproject.AssignMember(userSession, ...)のように実装しましたが、タスク作成の際にも同様にnew task(userSession, ...)とするのはなにか違和感があります。

また、userSessionはユースケース層に置くとQA本で書かれていますが、userSessionをドメイン層に置くことはあまりないでしょうか?

お忙しいところ恐縮ですが、よろしくお願いします!

Answer

権限は迷います、なぜかというとアプリケーションがなくても存在するドメインのルールのようでもあり、
アプリケーション上の操作制御の問題でもあるためです。個人的にはどちらとも解釈できるので、絶対こちら!という答えは定められないように思っています。
UserSessionはユースケース層に置くと書きましたが、権限制御がドメイン層のものと考えるとドメイン層に置くこともアリだと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant