This plugin allows you to use a MySQL database as the store for your user data. This is especially useful if you already one and you want to use it for Verdaccio as well.
> npm install -g verdaccio-mysql
Current release version is v1.0.0
In your config.yaml
file, look for the auth
section. Add the following part right after, replacing the string YOUR_[...]
with your values.
connection
is a mysql.Connection object, have a look there if you need more options.
auth:
mysql:
connection:
host: "YOUR_SERVER_IP"
port: 3306
user: "YOUR_MYSQL_USER"
password: "YOUR_MYSQL_PASSWORD"
database: "YOUR_DATABASE"
queries:
auth_user: 'SELECT QUERY'
add_user: 'INSERT QUERY'
update_user: 'UPDATE QUERY'
Similarly as prepared queries, and according to mysql documentation, the parameters for each query must be declared in the query with ?
as placeholders.
This is the query that will be ran for each authentication tentative.
This query has two parameters in this exact order:
- The username provided by the user
- The password given
If the authentication is successful, the query must return one row with two columns:
username
: Username of the user.usergroups
: comma-separated list of all user's groups.
If not successful, the query must return an empty recordset.
This query allows users to create a new record in the MySQL database.
This query has two parameters in this exact order:
- The username for the new user
- The password given
Declare add_user
as an empty string to forbid anyone to create a new user in the database from Verdaccio or the npm CLI.
This query allows users to change their password with Verdaccio.
This query has three parameters in this exact order:
- The new password for the user
- The username
- The original password
Declare update_user
as an empty string to forbid anyone to update their password from Verdaccio or the npm CLI.
Have a look inside the example folder to find an example of the configuration on a simple server:
- mysql-database.sql contains queries to setup a really simple database with 3 tables:
users
,groups
anduser_group
- mysql-config.yaml describes the configuration to put into
config.yaml
to work with the schema described in the SQL file.
This plugin is a regular TypeScript project.
$ git clone https://github.com/bchanudet/verdaccio-mysql.git
$ npm install
For plugins, Verdaccio only looks for packages installed in its directory, or globally installed.
$ npm link
This command wil build verdaccio-mysql, and add a symbolic link to the new version in the global repository of npm. This way it can be used with your local version of Verdaccio.
Create a new issue, I'll do my best to answer and fix the problem!