iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
Modern Web

用 Node.js 打造後端 API系列 第 16

Day 16 - 管理Bootcamp&Course的所有權

  • 分享至 

  • xImage
  •  

前言


昨天使用了token作為新增、刪除bootcamp或course的依據
但只要任何人取得了你的token, 就能任意地刪除你的bootcamp&course的資料
這聽起來不太安全,對吧?
所以,今天我們要來實作bootcamp&user間的relationship
確保是user本人在更新或刪除bootcamp或course資料

Bootcamp所有權


首先,要在Bootcamp model reference User model:

user: {
  type: mongoose.Schema.ObjectId,
  ref: 'User',
  required: true
}

我們要確保是user本人在更動bootcamp資料
所以要將bootcamp的user id與登入系統user的id做比較

if (bootcamp.user.toString() !== req.user.id) {
  return next(
    new ErrorResponse(
      `User ${req.params.id} is not authorized to update this bootcamp`,
      401
    )
  );
}

bootcamp = await Bootcamp.findByIdAndUpdate(req.params.id, req.body, {
  new: true,
  runValidators: true
});

而course所有權實作的方式與bootcamp是完全相同的
就留給大家想想怎麼完成囉~


上一篇
Day 15 - Route保護機制
下一篇
Day 17 - 忘記密碼1
系列文
用 Node.js 打造後端 API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言