diff --git a/backend/routes/projects/index.js b/backend/routes/projects/index.js index 8bde248..032eac2 100644 --- a/backend/routes/projects/index.js +++ b/backend/routes/projects/index.js @@ -1,11 +1,14 @@ const express = require('express'); const router = express.Router(); -const defineProject = require('../../models/projects'); const { DataTypes, Op } = require('sequelize'); +const defineProject = require('../../models/projects'); +const defineMember = require('../../models/members'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); const Project = defineProject(sequelize, DataTypes); + const Member = defineMember(sequelize, DataTypes); + Project.hasMany(Member, { foreignKey: 'projectId' }); router.get('/', verifySignedIn, async (req, res) => { try { @@ -17,9 +20,24 @@ module.exports = function (sequelize) { }, }); } else { + // public projects, owned projects, participated projects will be returned projects = await Project.findAll({ + include: [ + { + model: Member, + attributes: [], + where: { + userId: req.userId, + }, + required: false, + }, + ], where: { - [Op.or]: [{ isPublic: true }, { userId: req.userId }], + [Op.or]: [ + { isPublic: true }, + { userId: req.userId }, + sequelize.where(sequelize.col('Members.userId'), req.userId), + ], }, }); }