me.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. * @swagger
  3. *
  4. * components:
  5. * schemas:
  6. * UserGroup:
  7. * description: UserGroup
  8. * type: object
  9. * properties:
  10. * __v:
  11. * type: number
  12. * description: record version
  13. * example: 0
  14. * _id:
  15. * type: string
  16. * description: user group ID
  17. * example: 5e2d56c1e35da4004ef7e0b0
  18. * createdAt:
  19. * type: string
  20. * description: date created at
  21. * example: 2010-01-01T00:00:00.000Z
  22. */
  23. /**
  24. * @swagger
  25. *
  26. * components:
  27. * schemas:
  28. * UserGroupRelation:
  29. * description: UserGroupRelation
  30. * type: object
  31. * properties:
  32. * __v:
  33. * type: number
  34. * description: record version
  35. * example: 0
  36. * _id:
  37. * type: string
  38. * description: user group relation ID
  39. * example: 5e2d56cbe35da4004ef7e0b1
  40. * relatedGroup:
  41. * $ref: '#/components/schemas/UserGroup'
  42. * relatedUser:
  43. * $ref: '#/components/schemas/User/properties/_id'
  44. * createdAt:
  45. * type: string
  46. * description: date created at
  47. * example: 2010-01-01T00:00:00.000Z
  48. */
  49. module.exports = function(crowi, app) {
  50. const models = crowi.models;
  51. const UserGroupRelation = models.UserGroupRelation;
  52. const ExternalAccount = models.ExternalAccount;
  53. const ApiResponse = require('../util/apiResponse');
  54. // , pluginService = require('../service/plugin')
  55. const actions = {};
  56. const api = {};
  57. actions.api = api;
  58. /**
  59. * @swagger
  60. *
  61. * /me/user-group-relations:
  62. * get:
  63. * tags: [Me, CrowiCompatibles]
  64. * operationId: getUserGroupRelations
  65. * summary: /me/user-group-relations
  66. * description: Get user group relations
  67. * responses:
  68. * 200:
  69. * description: Succeeded to get user group relations.
  70. * content:
  71. * application/json:
  72. * schema:
  73. * properties:
  74. * ok:
  75. * $ref: '#/components/schemas/V1Response/properties/ok'
  76. * userGroupRelations:
  77. * type: array
  78. * items:
  79. * $ref: '#/components/schemas/UserGroupRelation'
  80. * 403:
  81. * $ref: '#/components/responses/403'
  82. * 500:
  83. * $ref: '#/components/responses/500'
  84. */
  85. /**
  86. * retrieve user-group-relation documents
  87. * @param {object} req
  88. * @param {object} res
  89. */
  90. api.userGroupRelations = function(req, res) {
  91. UserGroupRelation.findAllRelationForUser(req.user)
  92. .then((userGroupRelations) => {
  93. return res.json(ApiResponse.success({ userGroupRelations }));
  94. });
  95. };
  96. actions.index = async function(req, res) {
  97. const User = crowi.model('User');
  98. const userData = await User.findById(req.user.id).populate({ path: 'imageAttachment', select: 'filePathProxied' });
  99. const renderVars = {};
  100. renderVars.user = userData;
  101. return res.render('me/index', renderVars);
  102. };
  103. actions.externalAccounts = {};
  104. actions.externalAccounts.list = function(req, res) {
  105. const userData = req.user;
  106. const renderVars = {};
  107. ExternalAccount.find({ user: userData })
  108. .then((externalAccounts) => {
  109. renderVars.externalAccounts = externalAccounts;
  110. return;
  111. })
  112. .then(() => {
  113. if (req.method === 'POST' && req.form.isValid) {
  114. // TODO impl
  115. return res.render('me/external-accounts', renderVars);
  116. }
  117. // method GET
  118. return res.render('me/external-accounts', renderVars);
  119. });
  120. };
  121. actions.drafts = {};
  122. actions.drafts.list = async function(req, res) {
  123. return res.render('me/drafts');
  124. };
  125. actions.updates = function(req, res) {
  126. res.render('me/update', {
  127. });
  128. };
  129. return actions;
  130. };