@Rushino Aquí tienes dos 'aplicaciones': la interfaz (para lectores) y la de fondo (para administradores). Para cada grupo de funcionalidad, tiene un controlador.
Iniciar sesión es un grupo de este tipo, que incluye la generación del formulario HTML (los campos, llamar a la vista) y el manejo del formulario (la validación, la conexión con el modelo). Entonces 'login' es un controlador con dos acciones: generateForm y handleForm.
Las páginas se dividen entre la aplicación front-end, que solo muestra páginas, y la aplicación back-end que permite editar, eliminar, crear y posiblemente verlas de una manera diferente. La página de inicio es 'solo otra página' en la parte frontal al menos, por lo que cabe dentro del controlador de páginas. En el backend, su lógica podría ser lo suficientemente diferente como para justificar tener un controlador completamente diferente.
Para los usuarios: si los usuarios pueden registrarse ellos mismos, necesitarán un controlador frontend, pero si no, todo lo que tiene que ver con los usuarios simplemente va en el backend.
Tenga en cuenta que cada una de las funciones de back-end puede requerir un generador y un controlador. Sin embargo, estas cosas se pueden dividir en archivos de configuración, con un complemento que es un generador de formularios genérico.
En resumen, se ve así:
Frontend
Pages
View, Handle
Login
View, Handle
Users
Register (note that the handler can be the same as 'create' on the backend)
Contact
View
Handle
Backend
Users
Create, Delete, Edit, Update, View
Pages
Create, Delete, Edit, Update, View