src/server/daemon/auth.c

changeset 467
4d038bc6f86e
parent 415
d938228c382e
child 490
d218607f5a7e
equal deleted inserted replaced
466:019c22775f7c 467:4d038bc6f86e
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 }

mercurial