@@ -231,11 +231,53 @@ def register(self, name, password):
231
231
"""Register regular user in authentication database.
232
232
:param name: name of regular user, normally user id
233
233
:param password: password of regular user
234
+ :return: (id, rev) tuple of the registered user
235
+ :rtype: `tuple`
234
236
"""
235
237
user_db = self ['_users' ]
236
238
doc = {'_id' : 'org.couchdb.user:' + name , 'name' : name , 'password' : password , 'roles' : [], 'type' : 'user' }
237
239
return user_db .save (doc )
238
240
241
+ def login (self , name , password ):
242
+ """Login regular user in couch db
243
+ :param name: name of regular user, normally user id
244
+ :param password: password of regular user
245
+ :return: (status, token) tuple of the login user
246
+ :rtype: `tuple`
247
+ """
248
+ data = {'name' : name , 'password' : password }
249
+ status , headers , data = self .resource .post_json ('_session' , data )
250
+ if status != 200 :
251
+ return status , None
252
+ cookie = headers .headers [0 ].split (';' )[0 ]
253
+ pos = cookie .find ('=' )
254
+ token = cookie [pos + 1 :]
255
+ return status , token
256
+
257
+ def logout (self , token ):
258
+ """Logout regular user in couch db
259
+ :param token: token of login user
260
+ :return: True if successfully logout
261
+ :rtype: bool
262
+ """
263
+ header = {'Accept' : 'application/json' , 'Cookie' : 'AuthSession=' + token }
264
+ status , headers , data = self .resource .delete_json ('_session' , headers = header )
265
+ if status != 200 :
266
+ return False
267
+ return True
268
+
269
+ def verify (self , token ):
270
+ """Verify whether token is ok
271
+ :param token: token of login user
272
+ :return: True if token is ok
273
+ :rtype: bool
274
+ """
275
+ header = {'Accept' : 'application/json' , 'Cookie' : 'AuthSession=' + token }
276
+ status , headers , data = self .resource .get_json ('_session' , headers = header )
277
+ if status != 200 :
278
+ return False
279
+ return True
280
+
239
281
240
282
class Database (object ):
241
283
"""Representation of a database on a CouchDB server.
0 commit comments