Просмотр исходного кода

- Try to have some progress on Wekan Sandstorm API. I did not get it fully working yet.

Thanks to xet7.
Lauri Ojansivu 6 лет назад
Родитель
Сommit
be03a191c4
2 измененных файлов с 22 добавлено и 1 удалено
  1. 1 1
      sandstorm-pkgdef.capnp
  2. 21 0
      server/authentication.js

+ 1 - 1
sandstorm-pkgdef.capnp

@@ -226,7 +226,7 @@ const pkgdef :Spk.PackageDefinition = (
         verbPhrase = (defaultText = "removed from card"),
       ), ],
     ),
-    apiPath = "/",
+    apiPath = "/api",
     saveIdentityCaps = true,
   ),
 );

+ 21 - 0
server/authentication.js

@@ -16,6 +16,27 @@ Meteor.startup(() => {
   Authentication = {};
 
   Authentication.checkUserId = function (userId) {
+    if (userId === undefined) {
+      // Monkey patch to work around the problem described in
+      // https://github.com/sandstorm-io/meteor-accounts-sandstorm/pull/31
+      const _httpMethods = HTTP.methods;
+      HTTP.methods = (newMethods) => {
+        Object.keys(newMethods).forEach((key) =>  {
+          if (newMethods[key].auth) {
+            newMethods[key].auth = function() {
+              const sandstormID = this.req.headers['x-sandstorm-user-id'];
+              const user = Meteor.users.findOne({'services.sandstorm.id': sandstormID});
+              if (user) {
+                userId = user._id;
+              }
+              //return user && user._id;
+            };
+          }
+        });
+        _httpMethods(newMethods);
+      };
+    }
+
     if (userId === undefined) {
       const error = new Meteor.Error('Unauthorized', 'Unauthorized');
       error.statusCode = 401;