add fxa_required option
This commit is contained in:
parent
9891d1f0ba
commit
17057e725d
7 changed files with 20 additions and 3 deletions
|
@ -5,6 +5,9 @@ const modal = require('./modal');
|
||||||
const intro = require('./intro');
|
const intro = require('./intro');
|
||||||
|
|
||||||
module.exports = function(state, emit) {
|
module.exports = function(state, emit) {
|
||||||
|
if (state.user.loginRequired && !state.user.loggedIn) {
|
||||||
|
emit('signup-cta', 'required');
|
||||||
|
}
|
||||||
const archives = state.storage.files
|
const archives = state.storage.files
|
||||||
.filter(archive => !archive.expired)
|
.filter(archive => !archive.expired)
|
||||||
.map(archive => archiveTile(state, emit, archive));
|
.map(archive => archiveTile(state, emit, archive));
|
||||||
|
|
|
@ -94,6 +94,10 @@ export default class User {
|
||||||
: this.limits.ANON.MAX_DOWNLOADS;
|
: this.limits.ANON.MAX_DOWNLOADS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get loginRequired() {
|
||||||
|
return this.authConfig.fxa_required;
|
||||||
|
}
|
||||||
|
|
||||||
async metricId() {
|
async metricId() {
|
||||||
return this.loggedIn ? hashId(this.info.uid) : undefined;
|
return this.loggedIn ? hashId(this.info.uid) : undefined;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"release": "npm-run-all contributors changelog",
|
"release": "npm-run-all contributors changelog",
|
||||||
"test": "npm-run-all test:*",
|
"test": "npm-run-all test:*",
|
||||||
"test:backend": "nyc --reporter=lcovonly mocha --reporter=min test/backend",
|
"test:backend": "nyc --reporter=lcovonly mocha --reporter=min test/backend",
|
||||||
"test:frontend": "cross-env NODE_ENV=development node test/frontend/runner.js",
|
"test:frontend": "cross-env NODE_ENV=development FXA_REQUIRED=false node test/frontend/runner.js",
|
||||||
"test:report": "nyc report --reporter=html",
|
"test:report": "nyc report --reporter=html",
|
||||||
"test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js",
|
"test-integration": "cross-env NODE_ENV=development wdio test/wdio.docker.conf.js",
|
||||||
"circleci-test-integration": "echo 'webdriverio tests need to be updated to node 12'",
|
"circleci-test-integration": "echo 'webdriverio tests need to be updated to node 12'",
|
||||||
|
|
|
@ -155,6 +155,11 @@ const conf = convict({
|
||||||
default: `${tmpdir()}${path.sep}send-${randomBytes(4).toString('hex')}`,
|
default: `${tmpdir()}${path.sep}send-${randomBytes(4).toString('hex')}`,
|
||||||
env: 'FILE_DIR'
|
env: 'FILE_DIR'
|
||||||
},
|
},
|
||||||
|
fxa_required: {
|
||||||
|
format: Boolean,
|
||||||
|
default: true,
|
||||||
|
env: 'FXA_REQUIRED'
|
||||||
|
},
|
||||||
fxa_url: {
|
fxa_url: {
|
||||||
format: 'url',
|
format: 'url',
|
||||||
default: 'http://localhost:3030',
|
default: 'http://localhost:3030',
|
||||||
|
|
|
@ -117,7 +117,7 @@ module.exports = function(app) {
|
||||||
app.get(`/api/metadata/:id${ID_REGEX}`, auth.hmac, require('./metadata'));
|
app.get(`/api/metadata/:id${ID_REGEX}`, auth.hmac, require('./metadata'));
|
||||||
app.get('/api/filelist/:id([\\w-]{16})', auth.fxa, filelist.get);
|
app.get('/api/filelist/:id([\\w-]{16})', auth.fxa, filelist.get);
|
||||||
app.post('/api/filelist/:id([\\w-]{16})', auth.fxa, filelist.post);
|
app.post('/api/filelist/:id([\\w-]{16})', auth.fxa, filelist.post);
|
||||||
app.post('/api/upload', auth.fxa, require('./upload'));
|
// app.post('/api/upload', auth.fxa, require('./upload'));
|
||||||
app.post(`/api/delete/:id${ID_REGEX}`, auth.owner, require('./delete'));
|
app.post(`/api/delete/:id${ID_REGEX}`, auth.owner, require('./delete'));
|
||||||
app.post(`/api/password/:id${ID_REGEX}`, auth.owner, require('./password'));
|
app.post(`/api/password/:id${ID_REGEX}`, auth.owner, require('./password'));
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
@ -46,7 +46,8 @@ module.exports = function(ws, req) {
|
||||||
!auth ||
|
!auth ||
|
||||||
timeLimit <= 0 ||
|
timeLimit <= 0 ||
|
||||||
timeLimit > maxExpireSeconds ||
|
timeLimit > maxExpireSeconds ||
|
||||||
dlimit > maxDownloads
|
dlimit > maxDownloads ||
|
||||||
|
(config.fxa_required && !user)
|
||||||
) {
|
) {
|
||||||
ws.send(
|
ws.send(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
|
|
|
@ -15,7 +15,11 @@ module.exports = async function(req) {
|
||||||
try {
|
try {
|
||||||
authConfig = await getFxaConfig();
|
authConfig = await getFxaConfig();
|
||||||
authConfig.client_id = config.fxa_client_id;
|
authConfig.client_id = config.fxa_client_id;
|
||||||
|
authConfig.fxa_required = config.fxa_required;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
if (config.auth_required) {
|
||||||
|
throw new Error('fxa_required is set but no config was found');
|
||||||
|
}
|
||||||
// continue without accounts
|
// continue without accounts
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue