0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2025-01-06 22:40:26 -05:00

fix: add RemoteUser type for auth

This commit is contained in:
Juan Picado @jotadeveloper 2018-07-16 19:53:26 +02:00
parent 5c2c414e03
commit 2f4dbe8564
No known key found for this signature in database
GPG key ID: 18AC54485952D158
6 changed files with 21 additions and 9 deletions

View file

@ -52,7 +52,7 @@
"devDependencies": { "devDependencies": {
"@commitlint/cli": "6.1.3", "@commitlint/cli": "6.1.3",
"@commitlint/config-conventional": "6.1.3", "@commitlint/config-conventional": "6.1.3",
"@verdaccio/types": "3.3.3", "@verdaccio/types": "3.4.0",
"babel-cli": "6.26.0", "babel-cli": "6.26.0",
"babel-core": "6.26.0", "babel-core": "6.26.0",
"babel-eslint": "8.2.2", "babel-eslint": "8.2.2",

View file

@ -10,7 +10,7 @@ import {getDefaultPlugins} from './auth-utils';
import {getMatchedPackagesSpec} from './config-utils'; import {getMatchedPackagesSpec} from './config-utils';
import type {Config, Logger, Callback, IPluginAuth} from '@verdaccio/types'; import type {Config, Logger, Callback, IPluginAuth, RemoteUser} from '@verdaccio/types';
import type {$Response, NextFunction} from 'express'; import type {$Response, NextFunction} from 'express';
import type {$RequestExtend, JWTPayload} from '../../types'; import type {$RequestExtend, JWTPayload} from '../../types';
import type {IAuth} from '../../types'; import type {IAuth} from '../../types';
@ -118,7 +118,7 @@ class Auth implements IAuth {
/** /**
* Allow user to access a package. * Allow user to access a package.
*/ */
allow_access(packageName: string, user: string, callback: Callback) { allow_access(packageName: string, user: RemoteUser, callback: Callback) {
let plugins = this.plugins.slice(0); let plugins = this.plugins.slice(0);
// $FlowFixMe // $FlowFixMe
let pkg = Object.assign({name: packageName}, getMatchedPackagesSpec(packageName, this.config.packages)); let pkg = Object.assign({name: packageName}, getMatchedPackagesSpec(packageName, this.config.packages));

View file

@ -67,7 +67,7 @@ export const API_MESSAGE = {
}; };
export const API_ERROR = { export const API_ERROR = {
BAD_USERNAME_PASSWORD: 'bad username/password, access denied {APP}', BAD_USERNAME_PASSWORD: 'bad username/password, access denied',
NO_PACKAGE: 'no such package available', NO_PACKAGE: 'no such package available',
NOT_ALLOWED: 'not allowed to access package', NOT_ALLOWED: 'not allowed to access package',
INTERNAL_SERVER_ERROR: 'internal server error', INTERNAL_SERVER_ERROR: 'internal server error',

View file

@ -9,6 +9,7 @@ import type {
Config as AppConfig, Config as AppConfig,
PackageAccess, PackageAccess,
IPluginAuth, IPluginAuth,
RemoteUser,
Logger, Logger,
PluginOptions PluginOptions
} from '@verdaccio/types'; } from '@verdaccio/types';
@ -30,11 +31,11 @@ class ExampleAuthPlugin implements IPluginAuth {
cb(); cb();
} }
allow_access(user: string, pkg: PackageAccess, cb: verdaccio$Callback): void { allow_access(user: RemoteUser, pkg: PackageAccess, cb: verdaccio$Callback): void {
cb(); cb();
} }
allow_publish(user: string, pkg: PackageAccess, cb: verdaccio$Callback): void { allow_publish(user: RemoteUser, pkg: PackageAccess, cb: verdaccio$Callback): void {
cb(); cb();
} }
} }
@ -50,7 +51,12 @@ const options: PluginOptions = {
} }
const auth = new ExampleAuthPlugin(config1, options); const auth = new ExampleAuthPlugin(config1, options);
const remoteUser: RemoteUser = {
groups: [],
real_groups: [],
name: 'test'
};
auth.authenticate('user', 'pass', () => {}); auth.authenticate('user', 'pass', () => {});
auth.allow_access('packageName', {}, () => {}); auth.allow_access(remoteUser, {}, () => {});
auth.allow_publish('packageName', {}, () => {}); auth.allow_publish(remoteUser, {}, () => {});

View file

@ -11,14 +11,20 @@ import type {
Config as AppConfig, Config as AppConfig,
IPluginMiddleware, IPluginMiddleware,
IStorageManager, IStorageManager,
RemoteUser,
IBasicAuth, IBasicAuth,
} from '@verdaccio/types'; } from '@verdaccio/types';
import type { IUploadTarball, IReadTarball } from '@verdaccio/streams'; import type { IUploadTarball, IReadTarball } from '@verdaccio/streams';
export default class ExampleMiddlewarePlugin implements IPluginMiddleware { export default class ExampleMiddlewarePlugin implements IPluginMiddleware {
register_middlewares(app: any, auth: IBasicAuth, storage: IStorageManager): void { register_middlewares(app: any, auth: IBasicAuth, storage: IStorageManager): void {
const remoteUser: RemoteUser = {
groups: [],
real_groups: [],
name: 'test'
};
auth.authenticate('user', 'password', () => {}); auth.authenticate('user', 'password', () => {});
auth.allow_access('packageName', 'user', () => {}); auth.allow_access('packageName', remoteUser, () => {});
auth.add_user('user', 'password', () => {}); auth.add_user('user', 'password', () => {});
auth.aesEncrypt(new Buffer('pass')); auth.aesEncrypt(new Buffer('pass'));
// storage // storage

BIN
yarn.lock

Binary file not shown.