この質問は、私を混乱させる私の申請の規則を適用することについてです。
コントローラはサービスを使用しており、サービスはリポジトリを使用しています。
public class CommentController: ApiController{
[HttpPost]
public bool EditComment(Comment comment){
commentService.Update(comment);
}
}
public class CommentService{
ICommentRepository repository;
....
....
public void Update(Comment comment){
repository.Update(comment);
}
}
ユーザーが認証されると、コメントを更新できます。
ただし、ユーザーは自分のコメントを編集する必要があります。
ただし、管理者はすべてのコメントを編集できます。
ただし、指定した日付以降はコメントを編集できません。
部門で編集
そして、私はこれらのルールのようなものを持っています。
サービスレイヤーで「ユーザー編集独自のコメント」ルールを適用すると、Update methotを変更し、コントローラーのパラメーターUser.Identity.Nameを渡します。
public class CommentService{
ICommentRepository repository;
....
....
public void Update(string updatedByThisUser, Comment comment){
// if updatedByThisUser is owner of comment
repository.Update(comment);
}
}
しかし、本当のサービスオペレーションの変更はルールによるのでしょうか。
ルールをどこに適用できるかについて少し混乱しています。コントローラー、稼働中、またはリポジトリー内。
デザインパターンのようにこれを行う標準的な方法はありますか?
[Authorize(Roles="member, admin")]
で、Controllerのすべてのアクションメソッドには、「メンバー」または「admin」の役割を持つユーザーのみがアクセスできるようになります。