main_route.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * Created by chen on 2017/7/17.
  3. */
  4. import BaseController from "../../common/base/base_controller";
  5. const projectModel = require("../../pm/models/project_model");
  6. const pmFacade = require('../../pm/facade/pm_facade');
  7. import OptionsDao from '../../options/models/optionsModel';
  8. import optionSetting from '../../options/models/optionTypes';
  9. let config = require("../../../config/config.js");
  10. module.exports =function (app) {
  11. const baseController = new BaseController();
  12. app.get('/main', baseController.init, function(req, res) {
  13. let pm = require('../../pm/controllers/pm_controller');
  14. const projectID = +req.query.project;
  15. pm.checkProjectRight(req.session.sessionUser.id, projectID, async function (hasRight, projectData, isOpenShareProject, allowCooperate) {
  16. if (hasRight) {
  17. //分享的项目,只读、协作(允许编辑)
  18. let projectReadOnly = false,
  19. projectCooperate = false;
  20. if(req.session.sessionUser.id !== projectData.userID){
  21. projectData._doc.readOnly = true;
  22. projectCooperate = allowCooperate;
  23. //允许协作的项目允许编辑,非只读
  24. projectReadOnly = !projectCooperate;
  25. }
  26. let optionsDao = new OptionsDao();
  27. let options = await optionsDao.getOptions(req.session.sessionUser.id, req.session.sessionCompilation._id);
  28. if(options){
  29. options = await optionsDao.saveOptions(req.session.sessionUser.id, req.session.sessionCompilation._id, optionSetting);
  30. }
  31. const markReadProjectIDs = isOpenShareProject ? await pmFacade.markShareItemsRead(projectID, req.session.sessionUser.id) : [];
  32. res.render('building_saas/main/html/main.html',
  33. {
  34. userAccount: req.session.userAccount,
  35. userID: req.session.sessionUser.id,
  36. projectData: projectData,
  37. compilationName: req.session.sessionCompilation.name,
  38. versionName: req.session.compilationVersion,
  39. projectReadOnly: projectReadOnly,
  40. projectCooperate: projectCooperate,
  41. LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
  42. options:JSON.stringify(options),
  43. overWriteUrl:req.session.sessionCompilation.overWriteUrl,
  44. markReadProjectIDs: JSON.stringify(markReadProjectIDs)
  45. });
  46. } else {
  47. res.redirect('/pm');
  48. }
  49. });
  50. });
  51. }