verdaccio-mongodb
Version:
MongoDB Authentication plugin for Verdaccio
59 lines (58 loc) • 2.09 kB
TypeScript
import { PluginOptions, AuthAccessCallback, AuthCallback, Callback, PackageAccess, IPluginAuth, RemoteUser, Logger } from '@verdaccio/types';
import LRU from 'lru-cache';
import { AuthMongoDBConfig } from '../types/index';
/**
* Custom Verdaccio Authenticate Plugin.
*/
export default class AuthMongoDB implements IPluginAuth<AuthMongoDBConfig> {
logger: Logger;
private config;
cache: LRU<string, unknown>;
constructor(config: AuthMongoDBConfig, options: PluginOptions<AuthMongoDBConfig>);
/**
* Authenticate an user.
* @param user user to log
* @param password provided password
* @param cb callback function
*/
authenticate(username: string, password: string, cb: AuthCallback): Promise<void>;
/**
* Change a user password
* @param username username to create
* @param password current/old password
* @param newPassword new password
* @param cb callback function
*/
changePassword(username: string, password: string, newPassword: string, cb: Callback): Promise<void>;
/**
* Add a user to the database
* @param username username to create
* @param password provided password
* @param cb callback function
*/
adduser(username: string, password: string, cb: Callback): Promise<void>;
/**
* Check if user is allowed to access a package
* Triggered on each access request
* @param user
* @param pkg
* @param cb
*/
allow_access(user: RemoteUser, pkg: PackageAccess, cb: AuthAccessCallback): Promise<void>;
/**
* Check if user is allowed to publish a package
* Triggered on each publish request
* @param user
* @param pkg
* @param cb
*/
allow_publish(user: RemoteUser, pkg: PackageAccess, cb: AuthAccessCallback): Promise<void>;
/**
* Check if user is allowed to remove a package
* Triggered on each unpublish request
* @param user
* @param pkg
* @param cb
*/
allow_unpublish(user: RemoteUser, pkg: PackageAccess, cb: AuthAccessCallback): Promise<void>;
}