UNPKG

1.72 kBJavaScriptView Raw
1var task = require('./base'),
2 util = require('util');
3
4// - - -
5
6var basic = module.exports = function(config) {
7
8 this.init (config);
9
10};
11
12util.inherits (basic, task);
13
14util.extend (basic.prototype, {
15
16 run: function() {
17
18 var self = this;
19 self.failed('use method [render|checkExistAndRender|checkNoExistAndRender|logout]');
20
21 },
22
23 render: function() {
24
25 var self = this,
26 user = self.user,
27 sessionUID = self.sessionUID;
28
29 user.sessionUIDs = sessionUID;
30
31 self.completed(user);
32 },
33
34 checkExistAndRender: function() {
35
36 var self = this,
37 mongoResponse = self.mongoResponse,
38 password = self.password;
39
40 if (mongoResponse.data && mongoResponse.data.length) {
41
42 self.user = mongoResponse.data[0];
43
44 if (password == self.user.tokens.password) {
45 self.render();
46 } else {
47 self.failed({status: 401, err: "Invalid password", errCode: 2});
48 }
49 } else {
50 self.failed({status: 401, err: "User not found", errCode: 1});
51 }
52 },
53
54 checkNoExistAndRender: function() {
55
56 var self = this,
57 mongoResponse = self.mongoResponse,
58 fields = self.fields;
59
60 if (mongoResponse.err || mongoResponse.total == 0 || mongoResponse.data.length == 0) {
61
62 //if noexist user with username then create and associate user data with sessionUID
63
64 self.user = {
65 name: fields.username,
66 sessionUIDs: [],
67 tokens: {
68 password: fields.password
69 }
70 };
71 self.render();
72
73 } else {
74
75 self.failed({status: 401, err: "User already exist", errCode: 3});
76
77 }
78 },
79
80 logout: function() {
81 var self = this,
82 defaultRedirectUrl = self.defaultRedirectUrl,
83 redirectUrl = self.req.url.query && self.req.url.query.redirectUrl;
84
85 self.completed(redirectUrl || defaultRedirectUrl || '/');
86 }
87});