feat: add new options to the web disable login and pkg managers (#2947)

This commit is contained in:
Juan Picado 2022-01-22 10:58:04 +01:00 committed by GitHub
parent d6415d4dc3
commit 1a7b1ee8ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 6 deletions

6
.pnp.js generated
View File

@ -7840,14 +7840,14 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
]], ]],
["core-js", [ ["core-js", [
["npm:2.6.9", { ["npm:2.6.9", {
"packageLocation": "./.yarn/cache/core-js-npm-2.6.9-f821bf686c-00c30207eb.zip/node_modules/core-js/", "packageLocation": "./.yarn/unplugged/core-js-npm-2.6.9-f821bf686c/node_modules/core-js/",
"packageDependencies": [ "packageDependencies": [
["core-js", "npm:2.6.9"] ["core-js", "npm:2.6.9"]
], ],
"linkType": "HARD", "linkType": "HARD",
}], }],
["npm:3.20.2", { ["npm:3.20.2", {
"packageLocation": "./.yarn/cache/core-js-npm-3.20.2-656ea79cc8-642927e21a.zip/node_modules/core-js/", "packageLocation": "./.yarn/unplugged/core-js-npm-3.20.2-656ea79cc8/node_modules/core-js/",
"packageDependencies": [ "packageDependencies": [
["core-js", "npm:3.20.2"] ["core-js", "npm:3.20.2"]
], ],
@ -14898,7 +14898,7 @@ function $$SETUP_STATE(hydrateRuntimeState, basePath) {
]], ]],
["puppeteer", [ ["puppeteer", [
["npm:5.5.0", { ["npm:5.5.0", {
"packageLocation": "./.yarn/cache/puppeteer-npm-5.5.0-bba75ba998-08ba8a7da5.zip/node_modules/puppeteer/", "packageLocation": "./.yarn/unplugged/puppeteer-npm-5.5.0-bba75ba998/node_modules/puppeteer/",
"packageDependencies": [ "packageDependencies": [
["puppeteer", "npm:5.5.0"], ["puppeteer", "npm:5.5.0"],
["debug", "virtual:65523936f66795efc0bd6f7ca9a755f1be9f9bb998dc7cd39f5d823ea185c793a03b3f329f921a146569ee8bdffdd22dd15c2e08d286539b118e1cbbab91f8cf#npm:4.1.1"], ["debug", "virtual:65523936f66795efc0bd6f7ca9a755f1be9f9bb998dc7cd39f5d823ea185c793a03b3f329f921a146569ee8bdffdd22dd15c2e08d286539b118e1cbbab91f8cf#npm:4.1.1"],

View File

@ -1,5 +1,6 @@
import { Response, Router } from 'express'; import { Response, Router } from 'express';
import { hasLogin } from '../../../lib/utils';
import { limiter } from '../../rate-limiter'; import { limiter } from '../../rate-limiter';
import packageApi from './package'; import packageApi from './package';
import search from './search'; import search from './search';
@ -18,6 +19,8 @@ export default (auth, storage, config) => {
route.use('/data/', packageApi(storage, auth, config)); route.use('/data/', packageApi(storage, auth, config));
route.use('/data/', search(storage, auth)); route.use('/data/', search(storage, auth));
route.use('/sec/', limiter(config?.userRateLimit)); route.use('/sec/', limiter(config?.userRateLimit));
route.use('/sec/', user(auth, storage)); if (hasLogin(config)) {
route.use('/sec/', user(auth, storage));
}
return route; return route;
}; };

View File

@ -6,7 +6,7 @@ import { URL } from 'url';
import { HEADERS } from '@verdaccio/commons-api'; import { HEADERS } from '@verdaccio/commons-api';
import { WEB_TITLE } from '../../../lib/constants'; import { WEB_TITLE } from '../../../lib/constants';
import { getPublicUrl, isHTTPProtocol } from '../../../lib/utils'; import { getPublicUrl, hasLogin, isHTTPProtocol } from '../../../lib/utils';
import renderTemplate from './template'; import renderTemplate from './template';
const pkgJSON = require('../../../../package.json'); const pkgJSON = require('../../../../package.json');
@ -50,7 +50,9 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
const darkMode = config?.web?.darkMode ?? false; const darkMode = config?.web?.darkMode ?? false;
const title = config?.web?.title ?? WEB_TITLE; const title = config?.web?.title ?? WEB_TITLE;
const scope = config?.web?.scope ?? ''; const scope = config?.web?.scope ?? '';
const login = hasLogin(config);
const logoURI = resolveLogo(config, req); const logoURI = resolveLogo(config, req);
const pkgManagers = config?.web?.pkgManagers ?? ['yarn', 'pnpm', 'npm'];
const version = pkgJSON.version; const version = pkgJSON.version;
const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40'; const primaryColor = validatePrimaryColor(config?.web?.primary_color) ?? '#4b5e40';
const { scriptsBodyAfter, metaScripts, scriptsbodyBefore } = Object.assign( const { scriptsBodyAfter, metaScripts, scriptsbodyBefore } = Object.assign(
@ -69,6 +71,8 @@ export default function renderHTML(config, manifest, manifestFiles, req, res) {
base, base,
primaryColor, primaryColor,
version, version,
pkgManagers,
login,
logo: logoURI, logo: logoURI,
title, title,
scope, scope,

View File

@ -12,7 +12,7 @@ import validator from 'validator';
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
import { getBadData, getBadRequest, getCode, getConflict, getForbidden, getInternalError, getNotFound, getServiceUnavailable, getUnauthorized } from '@verdaccio/commons-api'; import { getBadData, getBadRequest, getCode, getConflict, getForbidden, getInternalError, getNotFound, getServiceUnavailable, getUnauthorized } from '@verdaccio/commons-api';
import sanitizyReadme from '@verdaccio/readme'; import sanitizyReadme from '@verdaccio/readme';
import { Author, Package, Version } from '@verdaccio/types'; import { Author, Config, Package, Version } from '@verdaccio/types';
import { AuthorAvatar, StringValue } from '../../types'; import { AuthorAvatar, StringValue } from '../../types';
import { GENERIC_AVATAR, generateGravatarUrl } from '../utils/user'; import { GENERIC_AVATAR, generateGravatarUrl } from '../utils/user';
@ -689,3 +689,9 @@ export function wrapPrefix(prefix: string | void): string {
return prefix; return prefix;
} }
} }
export function hasLogin(config: Config) {
// FIXME: types are not yet on the library verdaccio/monorepo
// @ts-ignore
return _.isNil(config?.web?.login) || config?.web?.login === true;
}