-
Notifications
You must be signed in to change notification settings - Fork 0
/
couchdb-auth.js
89 lines (81 loc) · 2.35 KB
/
couchdb-auth.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
78
79
80
81
82
83
84
85
86
87
88
89
// CouchAuth
// Wrapper around $.couch used to manage authentication
// in a backbone event-based fashion
// dependencies: underscore, Backbone.js, couch, jQuery
// CouchAuth constructor
function CouchAuth() {}
// extend with backbone events
_.extend(CouchAuth.prototype, Backbone.Events, {
// restore constructor
constructor: CouchAuth,
// login user based on given username/password
login: function(username, password, options) {
options = options || {};
var that = this,
params = {
name: username,
password: password,
success: function() {
that.trigger('auth:login:success', username);
if (options.success) {
options.success();
}
},
error: function(code, error, reason) {
that.trigger('auth:login:error',
{code:code, error:error, reason:reason});
if (options.error) {
options.error(code, error, reason);
}
}
};
$.couch.login(params);
},
// logout currently login user
logout: function(options) {
options = options || {};
var that = this;
$.couch.logout({
success: function(resp) {
that.trigger('auth:logout');
options.success && options.success(resp);
}
})
},
// signup user for given username/password
signup: function(username, password, options) {
options = options || {};
var that = this,
params = {
success: function() {
that.trigger('auth:signup:success');
options.success && options.success();
},
error: function(status, error, reason) {
that.trigger('auth:signup:error', {code:code, error:error, reason:reason});
options.error && options.error(status, error, reason);
}
};
$.couch.signup({name: username}, password, params);
},
// tests if user is authenticated
isLogin: function(callback) {
callback = callback || null;
var that = this;
var params = {
success: function(result) {
var isAuth = false;
if (result.userCtx.name) {
isAuth = true;
}
that.trigger('auth:islogin', isAuth);
callback && callback(isAuth);
},
error: function() {
that.trigger('auth:islogin', false);
callback && callback(false);
}
}
$.couch.session(params);
}
});