Skip to content

Commit 6058cfe

Browse files
feature: retrict terminal access to unverified users
1 parent 577ace9 commit 6058cfe

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

lib/middleware/harbourmaster.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ var harbourmaster = module.exports = {
8989
);
9090
},
9191

92+
setTermAccess: function (containerKey, allowTerm) {
93+
return series(
94+
hipacheHosts.create(),
95+
hipacheHosts.model.setTermAccess(
96+
'container', allowTerm)
97+
);
98+
},
99+
92100
listDocklets: function (containerKey) {
93101
return series (
94102
hipacheHosts.create(),

lib/models/redis/HipacheHosts.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ HipacheHosts.prototype.extendContainerLife = function (container, cb) {
7979
});
8080
};
8181

82+
HipacheHosts.prototype.setTermAccess = function (container, allowTerm, cb) {
83+
var serviceKey = ['frontend:', container.servicesToken, '.', configs.userContentDomain].join('');
84+
85+
redis.lrange(serviceKey, 0, 0, function(err, reply) {
86+
serviceData = JSON.parse(reply[0]);
87+
serviceData.allowTerm = allowTerm;
88+
var strData = JSON.stringify(serviceData);
89+
90+
redis.multi()
91+
.lset(serviceKey, 0, strData)
92+
.exec(cb);
93+
});
94+
};
95+
8296
HipacheHosts.prototype.howMuchLife = function (container, cb) {
8397
var serviceKey = ['frontend:', container.servicesToken, '.', configs.userContentDomain].join('');
8498

lib/rest/containers/index.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ var utils = require('middleware/utils');
1616
var mw = require('dat-middleware');
1717
var error = require('error');
1818

19+
var flow = require('middleware-flow');
20+
var mwIf = flow.mwIf.bind(flow);
21+
1922
var ternary = utils.ternary;
2023
var unless = utils.unless;
2124
var series = utils.series;
@@ -27,13 +30,6 @@ module.exports = function (baseUrl) {
2730
app.use(require('rest/containers/files')(path.join(baseUrl, ':containerId')));
2831
app.use(require('rest/containers/import')(path.join(baseUrl, 'import')));
2932

30-
var restrictUnverifiedUser =
31-
series(
32-
utils.unless(me.isVerified,
33-
containers.model.unset('servicesToken'),
34-
containers.model.unset('webToken') )
35-
);
36-
3733
app.post(baseUrl,
3834
me.isUser,
3935
query.require('from'),
@@ -56,7 +52,6 @@ module.exports = function (baseUrl) {
5652
containers.model.set('saved', true))),
5753
containers.model.save(),
5854
containers.model.unset('files'), // dont respond files
59-
restrictUnverifiedUser,
6055
containers.respond);
6156

6257
app.get(baseUrl,
@@ -73,7 +68,13 @@ module.exports = function (baseUrl) {
7368
containers.findById('params.containerId', { files: 0 }),
7469
containers.checkFound,
7570
or(me.isOwnerOf('container'), me.isModerator),
76-
restrictUnverifiedUser,
71+
mwIf(me.isModerator)
72+
.then( // allow terminal to verified user
73+
harbourmaster.setTermAccess('container', true)
74+
)
75+
.else( // deny terminal to unverified user
76+
harbourmaster.setTermAccess('container', false)
77+
),
7778
containers.respond);
7879

7980
// TODO: updateContainer needs rework, especially the commit interactions with harbourmaster..

0 commit comments

Comments
 (0)