Upload All

This commit is contained in:
Alan
2018-02-26 14:09:18 +08:00
parent 42d3a3fc46
commit 46257f08b0
1024 changed files with 204324 additions and 0 deletions

57
models/ResourceManager.js Normal file
View File

@ -0,0 +1,57 @@
const User = require("./mongooseSchemas/User");
const Painting = require("./mongooseSchemas/Painting");
const router = require("express").Router();
let sourceDir;
/**
* 用於初始化的函式。
* @param {string} sourceDirectory 被管理的資源的根目錄。
*/
function Initialize(sourceDirectory) {
sourceDir = sourceDirectory;
return router;
}
/**
* 檢查使用者是否登入。如果已登入則進行下一步反之則回送403狀態碼。
* @param {Express.Request} req Express的Request物件。
* @param {Express.Response} res Express的Response物件。
* @param {Function} next 導向函式。
*/
function CheckUserLogin(req, res, next) {
if (req.session.passport && req.session.passport.user) {
next();
}
else {
res.state(403).send("Forbidden");
}
}
/**
* 嘗試取得指定的圖畫影像。經過登入檢查之後,還要再檢查該項圖畫是否存在或屬於使用者。
*/
router.get("/db/paintings/:painting_file", (req, res) => {
let user_id = (req.session.passport && req.session.passport.user) ? req.session.passport.user : null;
let fileName = req.params.painting_file; // 取得URL參數中的檔案名稱
let painting_id = fileName.substr(0, fileName.length - 4); // 去掉後面的".png"
// 檢查使用者是否有足夠的權限訪問此畫作
Painting.CheckViewAuthority(painting_id, user_id, (err, result) => {
if (err) {
res.state(500).send("Internal Server Error");
return;
}
// 若權限足夠則將圖畫檔案送至客戶端若無則回送403。
if (result) {
res.status(200).sendFile(sourceDir + "/paintings/" + fileName);
}
else {
res.status(403).send("Forbidden");
}
});
});
module.exports = Initialize;