Tengo la siguiente configuración: MVC> Servicios> Repositorios. Ahora quiero permitir que los usuarios puedan agregar una Nota a un Documento. Solo los usuarios asociados con el documento (ya sea como propietarios o los colaboradores) se pueden añadir notas así que en mi NoteService Yo lo siguiente para garantizar que el usuario tiene permiso en el documento seleccionado:Agregar métodos a las clases POCO
public Note GetNewNote(int documentID)
{
if (!userHasAccess(Thread.CurrentPrincipal.Identity.Name))
throw new BusinessLogicException();
// Other stuff here...
}
Mi pregunta es, ¿dónde debería definir el método userHasAccess? No tiene sentido en NoteService ya que está comprobando en un documento. Podría definirlo en el DocumentService pero luego NoteService necesitará acceder a esto, lo que parece estar introduciendo más acoplamiento.
Para mí tiene más sentido definirlo en el documento POCO y luego llamar a document.userHasAccess (...). ¿Sería esta una buena práctica o un dominio POCO debe limitarse a propiedades simples? Me preocupa que esto sea realmente parte de la validación y que al ubicar el método en POCO estoy separando la validación entre el Servicio y POCO.
Lo que estoy tratando de asegurar es que mi aplicación es fácil de mantener y probar. ¡Cualquier sugerencia sobre cómo debo abordar esto sería muy apreciada!
¿Qué tipo de cheque no userHasAccess hacer? Code Access Security podría funcionar para usted. – jgauffin
Simplemente comprueba que el Usuario esté en Document.Owners o Document.Reviewers: estas son muchas o muchas relaciones entre Document y Person. – James