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');
|
||||
|
||||
module.exports = function(state, emit) {
|
||||
if (state.user.loginRequired && !state.user.loggedIn) {
|
||||
emit('signup-cta', 'required');
|
||||
}
|
||||
const archives = state.storage.files
|
||||
.filter(archive => !archive.expired)
|
||||
.map(archive => archiveTile(state, emit, archive));
|
||||
|
|
|
@ -94,6 +94,10 @@ export default class User {
|
|||
: this.limits.ANON.MAX_DOWNLOADS;
|
||||
}
|
||||
|
||||
get loginRequired() {
|
||||
return this.authConfig.fxa_required;
|
||||
}
|
||||
|
||||
async metricId() {
|
||||
return this.loggedIn ? hashId(this.info.uid) : undefined;
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
"release": "npm-run-all contributors changelog",
|
||||
"test": "npm-run-all test:*",
|
||||
"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-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'",
|
||||
|
|
|
@ -155,6 +155,11 @@ const conf = convict({
|
|||
default: `${tmpdir()}${path.sep}send-${randomBytes(4).toString('hex')}`,
|
||||
env: 'FILE_DIR'
|
||||
},
|
||||
fxa_required: {
|
||||
format: Boolean,
|
||||
default: true,
|
||||
env: 'FXA_REQUIRED'
|
||||
},
|
||||
fxa_url: {
|
||||
format: 'url',
|
||||
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/filelist/:id([\\w-]{16})', auth.fxa, filelist.get);
|
||||
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/password/:id${ID_REGEX}`, auth.owner, require('./password'));
|
||||
app.post(
|
||||
|
|
|
@ -46,7 +46,8 @@ module.exports = function(ws, req) {
|
|||
!auth ||
|
||||
timeLimit <= 0 ||
|
||||
timeLimit > maxExpireSeconds ||
|
||||
dlimit > maxDownloads
|
||||
dlimit > maxDownloads ||
|
||||
(config.fxa_required && !user)
|
||||
) {
|
||||
ws.send(
|
||||
JSON.stringify({
|
||||
|
|
|
@ -15,7 +15,11 @@ module.exports = async function(req) {
|
|||
try {
|
||||
authConfig = await getFxaConfig();
|
||||
authConfig.client_id = config.fxa_client_id;
|
||||
authConfig.fxa_required = config.fxa_required;
|
||||
} catch (e) {
|
||||
if (config.auth_required) {
|
||||
throw new Error('fxa_required is set but no config was found');
|
||||
}
|
||||
// continue without accounts
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue