Routes
A continuación se desglosaran ciertas partes del código que nos ayudaran a entender como funcionan ciertos apartados del sitio en el backend, desarrollado con laravel.

Rutas
Este archivo de rutas en Laravel define las rutas para la aplicación web y agrupa estas rutas en diferentes middleware para controlar el acceso basado en roles y autenticación.
<?php
use App\Http\Controllers\UsersControllers;
use App\Http\Controllers\CursosController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::middleware(['logueado'])->group(function () {
Route::get('/', [CursosController::class, 'index'])->name('index');
Route::middleware(['admin'])->group(function () {
// Route::get('/admin/dashboard', 'AdminController@dashboard');
Route::prefix('admin')->group(function () {
Route::get('/cursos', [CursosController::class, 'mostrarCursos'])->name('cursos');
Route::post('/curso/create', [CursosController::class, 'crear_curso_admin'])->name('crear.admin.curso');
Route::get('/curso/crear', function () {
return view('cursos.admin.crearCurso');
})->name('crear.curso');
Route::put('/usuario', [UsersControllers::class, 'actualizar_perfil_admin'])->name('perfil.update.admin');
Route::delete('/usuario', [UsersControllers::class, 'eliminar_perfil_admin'])->name('perfil.delete.admin');
Route::delete('/curso', [CursosController::class, 'eliminar_curso_admin'])->name('curso.delete.admin');
Route::get('/curso/{id}', [CursosController::class, 'mostrarCurso'])->name('curso.vista');
Route::get('/progreso/curso/{id}', [CursosController::class, 'calcularProgreso'])->name('curso.progreso');
Route::get('/usuario', [UsersControllers::class, 'usuarios'])->name('usuarios.admin');
Route::get('/usuario/{id}', function () {
return view('cursos.admin.usuario');
})->name('usuarios.vista');
});
});
Route::get('/curso/certificado/{id}/{curso}', [CursosController::class, 'generarCertificado'])->name('certificado');
Route::Get('/curso/{id}', [CursosController::class, 'curso_usuario'])->name('curso.usuario');
Route::post('/curso/comentario', [UsersControllers::class, 'comentario_usuario'])->name('comentario.curso');
Route::get('/usuario/imagen/{filename}', [UsersControllers::class, 'mostrarImagenUsuario'])->name('usuario.imagen');
Route::get('/cursos/portada/{filename}', [CursosController::class, 'mostrarPortadaCurso'])->name('curso.imagen');
Route::get('/cursos/videos/{filename}', [CursosController::class, 'mostrarVideoCurso'])->name('curso.video');
Route::put('/profile', [UsersControllers::class, 'actualizar_perfil'])->name('perfil.update');
Route::get('/profile', [UsersControllers::class, 'perfil'])->name('perfil');
Route::get('/post', function () {
return view('cursos.publicaciones');
})->name('posts');
Route::get('/learn', function () {
return view('cursos.aprendizaje');
})->name('aprendizaje');
Route::get('/recomendados', function () {
return view('cursos.recomendados');
})->name('recomendados');
Route::post('/unirse/curso/{id}', [UsersControllers::class, 'usuario_curso'])->name('usuario.curso');
Route::get('/curso/view/{id}', [CursosController::class, 'tarjetaCurso'] )->name('tarjeta.curso');
Route::get('/crear-pregunta', function () {
return view('cursos.createquestion');
})->name('crearPregunta');
Route::get('/perfil-usuario', function () {
return view('cursos.user.perfilusuario');
})->name('perfil.usuario');
Route::get('/publicaciones', function () {
return view('cursos.user.publicaciones');
})->name('publicaciones');
});
Route::middleware(['logueo'])->group(function () {
Route::post('/register', [UsersControllers::class, 'registro'])->name('registro');
Route::get('/register', [UsersControllers::class, 'registroView'])->name('registroView');
Route::post('/verify', [UsersControllers::class, 'verify'])->name('verificacion');
Route::get('/verify', [UsersControllers::class, 'verifyView'])->name('verifyView');
Route::post('/verifyRequest', [UsersControllers::class, 'verifyRequest'])->name('verifyRequest');
Route::put('/recovery', [UsersControllers::class, 'password_recovery'])->name('recuperacion');
Route::post('/recovery/request', [UsersControllers::class, 'request_recovery'])->name('solicitar_recuperacion');
Route::get('/recovery', [UsersControllers::class, 'recoveryView'])->name('recuperacionView');
Route::post('/login', [UsersControllers::class, 'logueo'])->name('logueo');
Route::get('/login', [UsersControllers::class, 'logueoView'])->name('login');
});
Route::post('/logout', [UsersControllers::class, 'logout'])->name('logout');
Descripción de Código
Rutas Globales (Middleware logueado)
Estas rutas están protegidas por el middleware logueado, que parece asegurar que el usuario esté autenticado antes de acceder a ellas.
Ruta Principal:
GET / - Muestra la vista principal, manejada por CursosController@index con el nombre index.
Rutas para Administradores (Middleware admin):
Rutas Administrativas:
GET /admin/cursos - Muestra la vista para administrar cursos, manejada por CursosController@mostrarCursos con el nombre cursos.
POST /admin/curso/create - Crea un nuevo curso administrado por CursosController@crear_curso_admin con el nombre crear.admin.curso.
GET /admin/curso/crear - Muestra la vista para crear un nuevo curso.
PUT /admin/usuario - Actualiza el perfil de un usuario administrador con UsersControllers@actualizar_perfil_admin con el nombre perfil.update.admin.
DELETE /admin/usuario - Elimina el perfil de un usuario administrador con UsersControllers@eliminar_perfil_admin con el nombre perfil.delete.admin.
DELETE /admin/curso - Elimina un curso con CursosController@eliminar_curso_admin con el nombre curso.delete.admin.
GET /admin/curso/{id} - Muestra la vista de un curso específico con CursosController@mostrarCurso y el nombre curso.vista.
GET /admin/progreso/curso/{id} - Muestra el progreso de un curso específico con CursosController@calcularProgreso y el nombre curso.progreso.
GET /admin/usuario - Muestra la lista de usuarios con UsersControllers@usuarios y el nombre usuarios.admin.
GET /admin/usuario/{id} - Muestra la vista del perfil de un usuario específico.
Rutas Generales de Cursos:
GET /curso/certificado/{id}/{curso} - Genera un certificado para un curso específico con CursosController@generarCertificado y el nombre certificado.
GET /curso/{id} - Muestra la vista de un curso para el usuario con CursosController@curso_usuario y el nombre curso.usuario.
POST /curso/comentario - Envía un comentario sobre un curso con UsersControllers@comentario_usuario y el nombre comentario.curso.
GET /usuario/imagen/{filename} - Muestra la imagen de un usuario con UsersControllers@mostrarImagenUsuario y el nombre usuario.imagen.
GET /cursos/portada/{filename} - Muestra la portada de un curso con CursosController@mostrarPortadaCurso y el nombre curso.imagen.
GET /cursos/videos/{filename} - Muestra un video de un curso con CursosController@mostrarVideoCurso y el nombre curso.video.
Perfil del Usuario:
PUT /profile - Actualiza el perfil del usuario con UsersControllers@actualizar_perfil y el nombre perfil.update.
GET /profile - Muestra el perfil del usuario con UsersControllers@perfil y el nombre perfil.
Vistas Públicas:
GET /post - Muestra la vista de publicaciones.
GET /learn - Muestra la vista de aprendizaje.
GET /recomendados - Muestra la vista de cursos recomendados.
Rutas Adicionales:
POST /unirse/curso/{id} - Permite a un usuario unirse a un curso con UsersControllers@usuario_curso y el nombre usuario.curso.
GET /curso/view/{id} - Muestra una vista de tarjeta de curso con CursosController@tarjetaCurso y el nombre tarjeta.curso.
GET /crear-pregunta - Muestra la vista para crear una pregunta.
GET /perfil-usuario - Muestra la vista del perfil del usuario.
GET /publicaciones - Muestra la vista de publicaciones de usuario.
Rutas de Autenticación (Middleware logueo)
Estas rutas están protegidas por el middleware logueo, que parece controlar el acceso a funciones de autenticación y registro.
Registro y Verificación:
POST /register - Registra un nuevo usuario con UsersControllers@registro y el nombre registro.
GET /register - Muestra la vista de registro con UsersControllers@registroView y el nombre registroView.
POST /verify - Verifica un usuario con UsersControllers@verify y el nombre verificacion.
GET /verify - Muestra la vista de verificación con UsersControllers@verifyView y el nombre verifyView.
POST /verifyRequest - Solicita la verificación del usuario con UsersControllers@verifyRequest y el nombre verifyRequest.
Recuperación de Contraseña:
PUT /recovery - Recupera la contraseña del usuario con UsersControllers@password_recovery y el nombre recuperacion.
POST /recovery/request - Solicita la recuperación de contraseña con UsersControllers@request_recovery y el nombre solicitar_recuperacion.
GET /recovery - Muestra la vista de recuperación de contraseña con UsersControllers@recoveryView y el nombre recuperacionView.
Inicio de Sesión:
POST /login - Inicia sesión un usuario con UsersControllers@logueo y el nombre logueo.
GET /login - Muestra la vista de inicio de sesión con UsersControllers@logueoView y el nombre login.
Cerrar Sesión:
POST /logout - Cierra sesión del usuario con UsersControllers@logout y el nombre logout.
Last updated