diff options
Diffstat (limited to 'server/models/user.js')
-rw-r--r-- | server/models/user.js | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/server/models/user.js b/server/models/user.js index 14ffecbff..0bbd638d4 100644 --- a/server/models/user.js +++ b/server/models/user.js | |||
@@ -1,28 +1,49 @@ | |||
1 | const mongoose = require('mongoose') | 1 | const mongoose = require('mongoose') |
2 | 2 | ||
3 | const customUsersValidators = require('../helpers/custom-validators').users | ||
4 | |||
3 | // --------------------------------------------------------------------------- | 5 | // --------------------------------------------------------------------------- |
4 | 6 | ||
5 | const UserSchema = mongoose.Schema({ | 7 | const UserSchema = mongoose.Schema({ |
6 | password: String, | 8 | password: String, |
7 | username: String | 9 | username: String, |
10 | role: String | ||
8 | }) | 11 | }) |
9 | 12 | ||
10 | UserSchema.path('password').required(true) | 13 | UserSchema.path('password').required(customUsersValidators.isUserPasswordValid) |
11 | UserSchema.path('username').required(true) | 14 | UserSchema.path('username').required(customUsersValidators.isUserUsernameValid) |
15 | UserSchema.path('role').validate(customUsersValidators.isUserRoleValid) | ||
16 | |||
17 | UserSchema.methods = { | ||
18 | toFormatedJSON: toFormatedJSON | ||
19 | } | ||
12 | 20 | ||
13 | UserSchema.statics = { | 21 | UserSchema.statics = { |
14 | getByUsernameAndPassword: getByUsernameAndPassword, | 22 | getByUsernameAndPassword: getByUsernameAndPassword, |
15 | list: list | 23 | list: list, |
24 | loadByUsername: loadByUsername | ||
16 | } | 25 | } |
17 | 26 | ||
18 | mongoose.model('User', UserSchema) | 27 | mongoose.model('User', UserSchema) |
19 | 28 | ||
20 | // --------------------------------------------------------------------------- | 29 | // --------------------------------------------------------------------------- |
21 | 30 | ||
31 | function getByUsernameAndPassword (username, password) { | ||
32 | return this.findOne({ username: username, password: password }) | ||
33 | } | ||
34 | |||
22 | function list (callback) { | 35 | function list (callback) { |
23 | return this.find(callback) | 36 | return this.find(callback) |
24 | } | 37 | } |
25 | 38 | ||
26 | function getByUsernameAndPassword (username, password) { | 39 | function loadByUsername (username, callback) { |
27 | return this.findOne({ username: username, password: password }) | 40 | return this.findOne({ username: username }, callback) |
41 | } | ||
42 | |||
43 | function toFormatedJSON () { | ||
44 | return { | ||
45 | id: this._id, | ||
46 | username: this.username, | ||
47 | role: this.role | ||
48 | } | ||
28 | } | 49 | } |