Mercurial > dovecot > core-2.2
changeset 14565:d6f06ce44b0b
auth: If user is disabled or password expired, tell about it to auth-client.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 16 May 2012 16:14:01 +0300 |
parents | 7dd1dd742825 |
children | ca0fef559d43 |
files | src/auth/auth-request-handler.c src/auth/auth-request.c src/auth/auth-request.h |
diffstat | 3 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth-request-handler.c Tue May 15 18:52:41 2012 +0300 +++ b/src/auth/auth-request-handler.c Wed May 16 16:14:01 2012 +0300 @@ -287,6 +287,21 @@ auth_stream_reply_add(reply, "nodelay", NULL); get_client_extra_fields(request, reply); + switch (request->passdb_result) { + case PASSDB_RESULT_INTERNAL_FAILURE: + case PASSDB_RESULT_SCHEME_NOT_AVAILABLE: + case PASSDB_RESULT_USER_UNKNOWN: + case PASSDB_RESULT_PASSWORD_MISMATCH: + case PASSDB_RESULT_OK: + break; + case PASSDB_RESULT_USER_DISABLED: + auth_stream_reply_add(reply, "user_disabled", NULL); + break; + case PASSDB_RESULT_PASS_EXPIRED: + auth_stream_reply_add(reply, "pass_expired", NULL); + break; + } + auth_request_handle_failure(request, reply); }
--- a/src/auth/auth-request.c Tue May 15 18:52:41 2012 +0300 +++ b/src/auth/auth-request.c Wed May 16 16:14:01 2012 +0300 @@ -557,6 +557,7 @@ request->private_callback.verify_plain); } else { auth_request_ref(request); + request->passdb_result = result; request->private_callback.verify_plain(result, request); auth_request_unref(&request); } @@ -691,6 +692,7 @@ but the user was unknown there */ result = PASSDB_RESULT_USER_UNKNOWN; } + request->passdb_result = result; request->private_callback. lookup_credentials(result, credentials, size, request); }
--- a/src/auth/auth-request.h Tue May 15 18:52:41 2012 +0300 +++ b/src/auth/auth-request.h Wed May 16 16:14:01 2012 +0300 @@ -56,6 +56,8 @@ struct auth_stream_reply *extra_cache_fields; /* the whole userdb result reply */ struct auth_stream_reply *userdb_reply; + /* Result of passdb lookup */ + enum passdb_result passdb_result; const struct mech_module *mech; const struct auth_settings *set;