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