Store and get users, salt their passwords, persist them to disk, etc.
Store and get users. Salt their passwords, persist them to disk.
Pass a leveldb instance to the Users
constructor. I recommend using
sublevel
to bucket your database's meta data and multilevel
if your database is on the network. See level-user
for client side
support.
var db = level('./db')
var users = Users(db)
create
Create a new user by passing a user object. Only username
is required.
When a new user is created, a uuid is returned.
var user = {
username: 'test',
password: 'pass',
foo: 100,
email: '[email protected]'
}
users.create(user, function(err, id) {
// id => 'a3a1d270-75fe-4bfc-a2bc-e358903bc540'
})
remove
Removes a user and any indexs that have been created for their records
users.remove(id, function(err) {
})
addIndexes
Add indexes that can be used to get
a user. You can use any arbitrary
field that is in your user object. In this example we index on email
.
users.addIndexes(['email'], function(err) {
})
get
Get a user by their uuid. Returns the user object and a put method that can be used to update the user data.
users.get(id, function(err, user, put) {
})
Here's an example using an index. returns the user's id.
users.get({ email: '[email protected]' }, function(err, id) {
})
auth
Find out if the proposed password matches with the a salt stored for a
given user id. If auth is successful, you get a the user object and
a put function so that you can write some new user information. If the
auth fails, the user
object will be null.
users.auth(id, password, function(err, user, put) {
user.isCool = true
put(user, function(err) {
// ...
})
})
addGroups
Add groups to a user, this is just sugar for array index checking.
users.addGroups(id, ['super','rooty'], function(err, user, put) {
})
removeGroups
Remove groups from a user, also just sugar for array index checking.
users.removeGroups(id, ['rooty'], function(err, user, put) {
})