281 /* |
281 /* |
282 * public API |
282 * public API |
283 * from public/auth.h |
283 * from public/auth.h |
284 */ |
284 */ |
285 |
285 |
286 User* authdb_get_user(AuthDB *db, const char *user) { |
286 User* authdb_get_user(AuthDB *db, Session *sn, Request *rq, const char *user) { |
287 if(db->use_cache) { |
287 if(db->use_cache) { |
288 User *u = auth_cache_get(db->name, user); |
288 User *u = auth_cache_get(db->name, user); |
289 if(u) { |
289 if(u) { |
290 return u; |
290 return u; |
291 } |
291 } |
292 } |
292 } |
293 return db->get_user(db, user); |
293 return db->get_user(db, sn, rq, user); |
294 } |
294 } |
295 |
295 |
296 User* authdb_get_and_verify(AuthDB *db, const char *user, const char *password, int *pw) { |
296 User* authdb_get_and_verify(AuthDB *db, Session *sn, Request *rq, const char *user, const char *password, int *pw) { |
297 User *u = NULL; |
297 User *u = authdb_get_user(db, sn, rq, user); |
298 // try getting the user from the cache |
|
299 if(db->use_cache) { |
|
300 u = auth_cache_get(db->name, user); |
|
301 if(u) { |
|
302 if(u->verify_password(u, password)) { |
|
303 *pw = 1; |
|
304 } else { |
|
305 *pw = 0; |
|
306 u->free(u); |
|
307 u = NULL; |
|
308 } |
|
309 return u; |
|
310 } |
|
311 } |
|
312 // user not cached |
|
313 u = db->get_user(db, user); |
|
314 if(u) { |
298 if(u) { |
315 if(u->verify_password(u, password)) { |
299 if(u->verify_password(u, password)) { |
316 if(db->use_cache) { |
300 if(db->use_cache) { |
317 auth_cache_add(db->name, u, password, NULL, 0); |
301 auth_cache_add(db->name, u, password, NULL, 0); |
318 } |
302 } |