From 567ba6c498125d07c4c62befa30fc2f14c48d23b Mon Sep 17 00:00:00 2001 From: root Date: Fri, 14 Apr 2023 09:57:56 +0000 Subject: [PATCH 1/6] Fix async annotation --- imports/api/genomes/annotation/parser/annotationParserGff3.js | 2 +- imports/api/jobqueue/process-annotation.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/imports/api/genomes/annotation/parser/annotationParserGff3.js b/imports/api/genomes/annotation/parser/annotationParserGff3.js index 8993108d..bf07fbc9 100644 --- a/imports/api/genomes/annotation/parser/annotationParserGff3.js +++ b/imports/api/genomes/annotation/parser/annotationParserGff3.js @@ -589,7 +589,7 @@ class AnnotationProcessor { }); if (this.geneBulkOperation.length > 0) { - this.geneBulkOperation.execute(); + return this.geneBulkOperation.execute(); } }; } diff --git a/imports/api/jobqueue/process-annotation.js b/imports/api/jobqueue/process-annotation.js index 237a7a6d..028a6591 100644 --- a/imports/api/jobqueue/process-annotation.js +++ b/imports/api/jobqueue/process-annotation.js @@ -64,12 +64,12 @@ jobQueue.processJobs( parser.abort(); } }, - complete(result) { + complete: async function(result) { if (result.meta.aborted === true) { job.fail(); } else { try { - lineProcessor.lastAnnotation(); + await lineProcessor.lastAnnotation(); const nAnnotation = lineProcessor.getNumberAnnotation(); job.done({ nInserted: nAnnotation }); } catch (err) { From 4ce6bc205818cc702a2b6f55b6fcf08a621f51c7 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 2 May 2023 08:20:47 +0000 Subject: [PATCH 2/6] Fixes --- cli/genoboo.js | 17 +++++++ .../server/useraccounts-configuration.js | 8 +++ imports/ui/landingpage/LandingPage.jsx | 51 ++++++++++++++----- imports/ui/main/Header.jsx | 21 ++++++-- imports/ui/main/Login.jsx | 28 +++++++++- imports/ui/main/Register.jsx | 28 +++++++++- imports/ui/singleGenePage/ProteinDomains.jsx | 16 ++++-- .../alignment/SequenceSimilarity.jsx | 4 +- imports/ui/singleGenePage/eggnog/Eggnog.jsx | 1 - 9 files changed, 145 insertions(+), 29 deletions(-) diff --git a/cli/genoboo.js b/cli/genoboo.js index 6b007471..59328c65 100755 --- a/cli/genoboo.js +++ b/cli/genoboo.js @@ -1,6 +1,7 @@ #!/usr/bin/env node /* eslint-disable no-underscore-dangle, no-console */ +const fs = require('fs'); const commander = require('commander'); const { Tail } = require('tail'); const { spawn, execFileSync } = require('child_process'); @@ -151,6 +152,7 @@ function startMongoDaemon( async function startGeneNoteBook(cmd) { const { + config, port, rootUrl, mongoUrl, @@ -160,11 +162,22 @@ async function startGeneNoteBook(cmd) { dbCacheSizeGB, storagePath } = cmd.opts(); + const PORT = parseInt(port, 10) || 3000; const ROOT_URL = rootUrl || `http://localhost:${PORT}`; const STORAGE_PATH = storagePath || 'assets/app/uploads'; const opts = { PORT, ROOT_URL, GNB_VERSION: pkginfo.version, STORAGE_PATH }; + if (config && fs.existsSync(config)) { + try { + const METEOR_SETTINGS = fs.readFileSync(config, 'utf8'); + Object.assign(opts, { METEOR_SETTINGS }); + } catch (error) { + logger.error(`Cannot read ${config}: `) + logger.error(error) + } + } + if (mongoUrl) { if (dbPath) { throw new Error('--db-path and --mongo-url are mutually exclusive'); @@ -200,6 +213,10 @@ program .command('run') .description('Run a GeneNoteBook server') .usage('[options]') + .option( + '--config [config]', + 'Path to an optional json config file. To be available client-side, options must be under a "public" key.' + ) .option( '--port [port]', 'Web server port on which to serve GeneNoteBook. Default: 3000' diff --git a/imports/startup/server/useraccounts-configuration.js b/imports/startup/server/useraccounts-configuration.js index 59a0869f..2a80d799 100644 --- a/imports/startup/server/useraccounts-configuration.js +++ b/imports/startup/server/useraccounts-configuration.js @@ -20,6 +20,10 @@ Accounts.onCreateUser((options, user) => { return user; }); +Accounts.validateLoginAttempt(attempt => { + return !Meteor.settings.public.disable_user_login === true +}) + Accounts.onLogout(({ user }) => { logger.debug('logout', { user }); if (user) { @@ -46,3 +50,7 @@ Meteor.users.allow({ return false; }, }); + +Accounts.config({ + forbidClientAccountCreation: Meteor.settings.public.disable_user_registration === true +}); diff --git a/imports/ui/landingpage/LandingPage.jsx b/imports/ui/landingpage/LandingPage.jsx index 648f3eec..bc9b4960 100644 --- a/imports/ui/landingpage/LandingPage.jsx +++ b/imports/ui/landingpage/LandingPage.jsx @@ -101,10 +101,14 @@ function NoGenomes() {
No public genomes are available.  - {/* - Sign in - -  to access private data.*/} + {! Meteor.settings.public.disable_user_login && ( + <> + + Sign in + +  to access private data. + + )}
) @@ -120,6 +124,23 @@ const withConditionalRendering = compose( const StatsWithDataTracker = withConditionalRendering(Stats); function LandingPage() { + const block = Meteor.settings.public.hide_blast ? 6 : 4 + + let blastLink = ( + +