authentication is now in an own npm package
This commit is contained in:
		@@ -1,78 +0,0 @@
 | 
				
			|||||||
module.exports = function(config) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  var authentication;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  if (config) {
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    authentication = function (username, password, success, fail) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      console.log("...try: ", username);
 | 
					 | 
				
			||||||
      const crypto = require('crypto');
 | 
					 | 
				
			||||||
      if (config.passwords && config.passwords[username]) {
 | 
					 | 
				
			||||||
        console.log("...check hash");
 | 
					 | 
				
			||||||
        if (crypto.getHashes().indexOf(config.passwords[username][0])>=0) {
 | 
					 | 
				
			||||||
          if (crypto.createHash(config.passwords[username][0]).update(password, 'utf8').digest('hex') === config.passwords[username][1]) {
 | 
					 | 
				
			||||||
            success(username);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
          } else {
 | 
					 | 
				
			||||||
            fail(username);
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          console.log("**** HASH NOT FOUND ****");
 | 
					 | 
				
			||||||
          console.log(config.passwords[username][0]);
 | 
					 | 
				
			||||||
          console.log(crypto.getHashes());
 | 
					 | 
				
			||||||
          fail(username);
 | 
					 | 
				
			||||||
          return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      if (config.ldap) try {
 | 
					 | 
				
			||||||
        console.log("...check ldap");
 | 
					 | 
				
			||||||
        var LdapAuth = require('ldapauth');
 | 
					 | 
				
			||||||
        var auth = new LdapAuth(config.ldap);
 | 
					 | 
				
			||||||
        auth.once('connect', function () {
 | 
					 | 
				
			||||||
          try {
 | 
					 | 
				
			||||||
            auth.authenticate(username, password, function(err, usr) {
 | 
					 | 
				
			||||||
              auth.close(function(err) {})
 | 
					 | 
				
			||||||
              if (err) {
 | 
					 | 
				
			||||||
                console.log("**** ERROR: LDAP Authentication failed:", err);
 | 
					 | 
				
			||||||
                fail(username);
 | 
					 | 
				
			||||||
                return;
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
              console.log("**** SUCCESS: LDAP Authentication:");
 | 
					 | 
				
			||||||
              success(username);
 | 
					 | 
				
			||||||
              return;
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
          } catch (e) {
 | 
					 | 
				
			||||||
            console.log("**** Error: LDAP failed: ", e, e.stack);
 | 
					 | 
				
			||||||
            fail(username);
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
          return; // need to block here!
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
      } catch (e) {
 | 
					 | 
				
			||||||
        console.log("**** Error: LDAP failed: ", e, e.stack);
 | 
					 | 
				
			||||||
        fail(username);
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      if (config.unrestricted)
 | 
					 | 
				
			||||||
        success(username);
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
        fail(username);
 | 
					 | 
				
			||||||
      return;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    authentication = function (username, password, success, fail) {
 | 
					 | 
				
			||||||
      console.log('**** Error: no access configuraion. To allow any user, add:')
 | 
					 | 
				
			||||||
      console.log('            "restrict": {');
 | 
					 | 
				
			||||||
      console.log('              "unrestricted": true');
 | 
					 | 
				
			||||||
      console.log('            }');
 | 
					 | 
				
			||||||
      fail(username);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return authentication;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -10,6 +10,7 @@
 | 
				
			|||||||
    "pty.js": "~0.3.0",
 | 
					    "pty.js": "~0.3.0",
 | 
				
			||||||
    "async": "~1.5.2",
 | 
					    "async": "~1.5.2",
 | 
				
			||||||
    "socketio-auth": "0.0.5",
 | 
					    "socketio-auth": "0.0.5",
 | 
				
			||||||
 | 
					    "authentication.js": ">=0.0.2",
 | 
				
			||||||
    "ldapauth": "git+https://github.com/DimensionSoftware/node-ldapauth.git"
 | 
					    "ldapauth": "git+https://github.com/DimensionSoftware/node-ldapauth.git"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "description": "@DESCRIPTION@",
 | 
					  "description": "@DESCRIPTION@",
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user