Esta pregunta trata sobre la aplicación de las reglas de mi solicitud que me confunden.
Mi controlador está utilizando el servicio y el servicio está utilizando el repositorio.
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);
}
}
Si el usuario está autenticado, puede actualizar un comentario.
Pero un usuario debe editar sus propios comentarios.
Pero un administrador puede editar todos los comentarios.
Pero el comentario no se puede editar después de una fecha específica.
Editar por un departamento
Y tengo algo como estas reglas.
Si aplico la regla "usuario editando comentario propio" en la capa de servicio, cambiaré Actualizar methot y pasar el parámetro del controlador User.Identity.Name,
public class CommentService{
ICommentRepository repository;
....
....
public void Update(string updatedByThisUser, Comment comment){
// if updatedByThisUser is owner of comment
repository.Update(comment);
}
}
Pero, ¿las verdaderas operaciones de servicio cambian por regla?
Estoy un poco confundido acerca de dónde puedo aplicar las reglas. En controlador o en servicio o en repositorio.
¿Hay alguna forma estándar de hacer esto, como los patrones de diseño?
[Authorize(Roles="member, admin")]
y ahora todos los métodos de acción en el Controlador solo serían accesibles para los usuarios en el rol de "miembro" o "administrador".