samjs-auth-mongo

0.2.2 • Public • Published

samjs-auth-mongo

Moves user management to mongodb. Adds groups.

Client: samjs-auth-mongo-client

Getting Started

npm install --save samjs-auth-mongo
npm install --save-dev samjs-auth-mongo-client

Example

samjs.plugins([
  // samjs-auth, samjs-mongo and samjs-mongo-authare needed before samjs-auth-mongo
  require("samjs-auth"),
  require("samjs-mongo"),
  require("samjs-mongo-auth"),
  require("samjs-auth-mongo")
])
.options()
.configs()
.models({
  name: "someModel",
  db: "mongo",
  plugins: {
    auth: null, // (optional) auth plugin will be enabled for all monog models by default
    // to disable auth
    noAuth: null
  },
  schema: {
    someProp: {
      type: String,
      read: true, // all can read
      write: ["root"] // only users in root group can write
    }
  },
  // add permissionChecker inGroup to samjs.auth as a new default
  // this is not required:
  permissionChecker: "inGroup"
}).startup(server)

Options

name value description
hierarchical true are groups hierarchical? when groups is: ["user","root"], root will be allowed everything what user can.
groupRoot "root" name of the root group
group "group" name of the group property in the mongodb
permissionChecker "inGroup" default permissionChecker, will overwrite permissionChecker set by samjs-auth

Configs

This is the default config for user groups:

{
  name: "groups",
  data: ["root"],
  read: "root",
  write: "root"
}

access like a normal config object:

// server-side
samjs.configs.groups._get()
// client-side
samjs.config.set("groups",["user","root"]).then(function(){
  // successfully set
  })

Users model

This is the default model for users:

{
  name: "users",
  schema: {},
  db: "mongo",
  plugins:{
    "users": {
      read: "root", // (optional) root default
      write: "root" // (optional) root default
    }
  },
  isRequired: true
}

The users plugin adds the props samjs.options.username (default: "name"), samjs.options.password (default: "pwd") and samjs.options.group (default: "group") and a test / installInterface.

startup

samjs-mongo needs you to set mongoURI in configuration. samjs-auth-mongo needs you to set a user in root group in installation.

samjs = require("samjs-client")()
samjs.plugins([
  require("samjs-auth-client"),
  require("samjs-mongo-client"),
  require("samjs-auth-mongoclient")
])
samjs.install.onceConfigure
.then(function(){
  client.install.set("mongoURI", "yourmongoURI")
}).then(function(){
  client.install.onceInstall
}).then(function(){
  client.auth.createRoot({name:"root",pwd:"rootroot"})
})

// server-side
samjs.state.onceStarted.then(function(){
  // startup finished
})

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 0.2.2
    0
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 0.2.2
    0
  • 0.2.1
    0
  • 0.2.0
    0

Package Sidebar

Install

npm i samjs-auth-mongo

Weekly Downloads

0

Version

0.2.2

License

none

Last publish

Collaborators

  • paulpflug