-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathusers.js
77 lines (62 loc) · 1.85 KB
/
users.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
NEWSCHEMA('Users', function(schema) {
schema.define('name', String, true);
schema.define('login', String, true);
schema.define('password', String);
schema.define('sa', Boolean);
schema.define('isdisabled', Boolean);
schema.setQuery(function($) {
if ($.user.sa)
NOSQL('users').find().fields('id,name,login,isdisabled,dtcreated,dtlogged,sa,isonline').sort('dtcreated_asc').callback($.callback);
else
$.invalid('401');
});
schema.setRead(function($) {
if ($.user.sa)
NOSQL('users').read().fields('id,name,login,isdisabled,dtcreated,dtlogged,sa').id($.id).error('404').callback($.callback);
else
$.invalid('401');
});
schema.setInsert(function($, model) {
if (!$.user.sa) {
$.invalid('401');
return;
}
model.id = UID();
model.dtcreated = NOW;
model.password = model.password.sha256(CONF.session_secret);
NOSQL('users').insert(model).callback($.done());
});
schema.setUpdate(function($, model) {
if (!$.user.sa) {
$.invalid('401');
return;
}
model.dtupdated = NOW;
model.password = model.password ? model.password.sha256(CONF.session_secret) : undefined;
NOSQL('users').modify(model).id($.id).callback($.done());
});
schema.setRemove(function($) {
if (!$.user.sa || $.id === $.user.id) {
$.invalid('401');
return;
}
NOSQL('sessions').remove().where('userid', $.id);
NOSQL('users').remove().id($.id).callback($.done());
});
NOSQL('users').read().callback(function(err, response) {
// tries to find a user
if (!response) {
var password = GUID(10);
var model = {};
model.id = UID();
model.dtcreated = NOW;
model.name = 'Total Admin';
model.login = GUID(10);
model.sa = true;
model.isdisabled = false;
model.password = password.sha256(CONF.session_secret);
NOSQL('users').insert(model);
PREF.set('credentials', { login: model.login, password: password });
}
});
});