瀏覽代碼

api: export board: allow authentication through generic authentication

This allows to retrieve the full export of the board from the API.
When the board is big, retrieving individual cards is heavy for both
the server and the number of requests.

Allowing the API to directly call on export and then treat the data
makes the whole process smoother.
Benjamin Tissoires 7 年之前
父節點
當前提交
26d7ba72aa
共有 1 個文件被更改,包括 5 次插入3 次删除
  1. 5 3
      models/export.js

+ 5 - 3
models/export.js

@@ -10,7 +10,7 @@ if (Meteor.isServer) {
    * @operation export
    * @operation export
    * @tag Boards
    * @tag Boards
    *
    *
-   * @summary This route is used to export the board **FROM THE APPLICATION**.
+   * @summary This route is used to export the board.
    *
    *
    * @description If user is already logged-in, pass loginToken as param
    * @description If user is already logged-in, pass loginToken as param
    * "authToken": '/api/boards/:boardId/export?authToken=:token'
    * "authToken": '/api/boards/:boardId/export?authToken=:token'
@@ -24,14 +24,16 @@ if (Meteor.isServer) {
   JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) {
   JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) {
     const boardId = req.params.boardId;
     const boardId = req.params.boardId;
     let user = null;
     let user = null;
-    // todo XXX for real API, first look for token in Authentication: header
-    // then fallback to parameter
+
     const loginToken = req.query.authToken;
     const loginToken = req.query.authToken;
     if (loginToken) {
     if (loginToken) {
       const hashToken = Accounts._hashLoginToken(loginToken);
       const hashToken = Accounts._hashLoginToken(loginToken);
       user = Meteor.users.findOne({
       user = Meteor.users.findOne({
         'services.resume.loginTokens.hashedToken': hashToken,
         'services.resume.loginTokens.hashedToken': hashToken,
       });
       });
+    } else {
+      Authentication.checkUserId(req.userId);
+      user = Users.findOne({ _id: req.userId, isAdmin: true });
     }
     }
 
 
     const exporter = new Exporter(boardId);
     const exporter = new Exporter(boardId);