Pertanyaan ini tentang penerapan aturan aplikasi saya yang membingungkan saya.
Pengontrol saya menggunakan layanan dan layanan menggunakan repositori.
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);
}
}
Jika pengguna diautentikasi, ia dapat memperbarui komentar.
Tetapi pengguna harus mengedit komentar sendiri.
Tetapi seorang admin dapat mengedit semua komentar.
Tetapi komentar tidak dapat diedit setelah tanggal yang ditentukan.
Edit oleh departemen
Dan saya punya sesuatu seperti aturan ini.
Jika saya menerapkan aturan "komentar pengguna mengedit sendiri" di lapisan layanan, saya akan mengubah methot pembaruan dan melewati parameter pengontrol pengguna. Identitas. Nama,
public class CommentService{
ICommentRepository repository;
....
....
public void Update(string updatedByThisUser, Comment comment){
// if updatedByThisUser is owner of comment
repository.Update(comment);
}
}
Tapi, apakah benar mengubah operasi layanan dengan aturan?
Saya sedikit bingung tentang di mana saya bisa menerapkan aturan. Di controller atau dalam layanan atau di repositori.
Apakah ada cara standar untuk melakukan ini seperti pola desain.
[Authorize(Roles="member, admin")]
dan sekarang semua metode tindakan di Controller hanya dapat diakses oleh pengguna dalam peran "anggota" atau "admin".