Инструменты пользователя

Инструменты сайта


nodejs:email:zaschita_redaktirvanija

защита редактирвания

const {Router} = require('express'); //или const express.Router = require('express');
const Course = require('../models/course');//модель для вывода списков курсов
const auth = require('../middleware/auth');
 
const router = Router();//инициализируем роутер
 
 
/**
 *страница courses /courses/c44e2956-48f4-49f5-b0f9-916e1efb709f/edit
 * первый параметр адрес страницы,с динамическим параметром id
 * второй параметр callback - обработчик запроса req - request , запрос от браузера
 * res - response, ответ сервера
 */
router.get('/:id/edit', auth,async (req, res) => {
    if(!req.query.allow){//если allow != true, делаем редирект на главную страницу
        return res.redirect('/');
    }
    const course = await Course.findById(req.params.id);//Получить данные курса
 
    if(course.userId._id.toString() !== req.user._id.toString()){//Сравниваем id пользователей,
        // если не совподают редирект на страницу курсов
        return res.redirect('/courses');
    }
 
    //res.status(200);//вернуть статус ответа
    res.render('edit',{
        layout: 'empty',//- новый шаблон вместо main.hbs, template/layouts/empty.hbs
        course: course //ОБъект с данными по курсу
    });//рендерим используя шаблонизатор
});
 
/**
 * страница courses /courses/edit
 * первый параметр адрес страницы
 * второй параметр callback - обработчик запроса req - request , запрос от браузера
 * res - response, ответ сервера
 */
router.post('/edit', async (req, res) => {
 
    const course = await Course.findById(req.body.id);//Получить данные курса
    if(course.userId._id.toString() !== req.user._id.toString()){//Сравниваем id пользователей,
        // если не совподают редирект на страницу курсов
        return res.redirect('/courses');
    }
    Object.assign(course, req.body);//Обновить объект данных по курсу, метод js-ный (слияние объектов)
    await course.save();//сохранить
    //await Course.findByIdAndUpdate(req.body.id ,req.body);//Обновить данные курса
    res.redirect('/courses/'+req.body.id);//страница courses /courses/c44e2956-48f4-49f5-b0f9-916e1efb709f
});
 
/**
 * Удалить курс
 * первый параметр адрес страницы
 * второй параметр callback - обработчик запроса req - request , запрос от браузера
 * res - response, ответ сервера
 */
router.post('/remove', async (req, res) => {
 
    await Course.deleteOne({
        _id: req.body.id,
        userId: req.user._id//Удалить может только пользователь создавший курс
    });//Удалить позицию
    res.redirect('/courses');//страница курсов /courses
});
 
 
module.exports = router;//Экспортирум роутер
nodejs/email/zaschita_redaktirvanija.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)