mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-10 14:44:40 +02:00
* WIP on user groups
* Minor changes to user credential prompt
This commit is contained in:
parent
ca3453ecfb
commit
a7f9e3846e
8 changed files with 145 additions and 37 deletions
56
core/user.js
56
core/user.js
|
@ -3,6 +3,7 @@
|
|||
|
||||
var userDb = require('./database.js').dbs.user;
|
||||
var Config = require('./config.js').config;
|
||||
var userGroup = require('./user_group.js');
|
||||
|
||||
var crypto = require('crypto');
|
||||
var assert = require('assert');
|
||||
|
@ -116,6 +117,15 @@ User.prototype.authenticate = function(username, password, cb) {
|
|||
cachedInfo.properties = allProps;
|
||||
}
|
||||
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
function initGroups(callback) {
|
||||
userGroup.getGroupsForUser(cachedInfo.userId, function groupsLoaded(err, groups) {
|
||||
if(!err) {
|
||||
cachedInfo.groups = groups;
|
||||
}
|
||||
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
|
@ -125,6 +135,7 @@ User.prototype.authenticate = function(username, password, cb) {
|
|||
self.userId = cachedInfo.userId;
|
||||
self.username = cachedInfo.username;
|
||||
self.properties = cachedInfo.properties;
|
||||
self.groups = cachedInfo.groups;
|
||||
self.authenticated = true;
|
||||
}
|
||||
|
||||
|
@ -164,6 +175,8 @@ User.prototype.create = function(options, cb) {
|
|||
// :TODO: set various defaults, e.g. default activation status, etc.
|
||||
self.properties.account_status = Config.users.requireActivation ? User.AccountStatus.inactive : User.AccountStatus.active;
|
||||
|
||||
// :TODO: Set default groups from Config.users.defaultGroups[]
|
||||
|
||||
async.series(
|
||||
[
|
||||
function beginTransaction(callback) {
|
||||
|
@ -203,6 +216,16 @@ User.prototype.create = function(options, cb) {
|
|||
}
|
||||
});
|
||||
},
|
||||
function setInitialGroupMembership(callback) {
|
||||
userGroup.getGroupsByName(Config.users.defaultGroups, function defaultGroups(err, groups) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
} else {
|
||||
self.groups = groups;
|
||||
callback(null);
|
||||
}
|
||||
});
|
||||
},
|
||||
function saveAll(callback) {
|
||||
self.persist(false, function persisted(err) {
|
||||
callback(err);
|
||||
|
@ -245,6 +268,11 @@ User.prototype.persist = function(useTransaction, cb) {
|
|||
persistProperties(self, function persisted(err) {
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
function saveGroups(callback) {
|
||||
userGroup.addUserToGroups(self.userId, self.groups, function groupsSaved(err) {
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
],
|
||||
function complete(err) {
|
||||
|
@ -452,34 +480,6 @@ function loadProperties(options, cb) {
|
|||
});
|
||||
}
|
||||
|
||||
function loadGroups(userId, cb) {
|
||||
//
|
||||
// user_group
|
||||
// group_id | group_name
|
||||
//
|
||||
//
|
||||
// user_group_member
|
||||
// group_id | user_id
|
||||
//
|
||||
//
|
||||
var sql = '';
|
||||
|
||||
var groups = {}; // id:name
|
||||
|
||||
userDb.each(sql, [ userId ], function dbRow(err, row) {
|
||||
if(err) {
|
||||
cb(err);
|
||||
return;
|
||||
} else {
|
||||
//groups[row.group_id]
|
||||
}
|
||||
},
|
||||
function complete() {
|
||||
cb(null, groups);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/*function getProperties(userId, propNames, cb) {
|
||||
var properties = {};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue