diff options
author | Pavel Březina <pbrezina@redhat.com> | 2017-01-11 11:36:50 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2017-02-08 11:05:33 +0100 |
commit | 7723e79f5a1fad4201360199037aea33f655bab6 (patch) | |
tree | 488fadf483ee4f9f049bd84c8811048f6bbd2457 | |
parent | ddfd1900b26c66a062457d4fcc1a48bafd3eadf6 (diff) | |
download | sssd-7723e79f5a1fad4201360199037aea33f655bab6.tar.gz sssd-7723e79f5a1fad4201360199037aea33f655bab6.tar.xz sssd-7723e79f5a1fad4201360199037aea33f655bab6.zip |
cache_req: search user by name with attrs
Sometime is is desirable to aquire more attribute from user object
than SYSDB_PW_ATTRS set. such as user's public key.
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
-rw-r--r-- | src/responder/common/cache_req/cache_req.h | 13 | ||||
-rw-r--r-- | src/responder/common/cache_req/plugins/cache_req_user_by_name.c | 31 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/responder/common/cache_req/cache_req.h b/src/responder/common/cache_req/cache_req.h index 770009107..2740c21ee 100644 --- a/src/responder/common/cache_req/cache_req.h +++ b/src/responder/common/cache_req/cache_req.h @@ -186,6 +186,19 @@ cache_req_user_by_name_send(TALLOC_CTX *mem_ctx, cache_req_single_domain_recv(mem_ctx, req, _result) struct tevent_req * +cache_req_user_by_name_attrs_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct resp_ctx *rctx, + struct sss_nc_ctx *ncache, + int cache_refresh_percent, + const char *domain, + const char *name, + const char **attrs); + +#define cache_req_user_by_name_attrs_recv(mem_ctx, req, _result) \ + cache_req_single_domain_recv(mem_ctx, req, _result) + +struct tevent_req * cache_req_user_by_id_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct resp_ctx *rctx, diff --git a/src/responder/common/cache_req/plugins/cache_req_user_by_name.c b/src/responder/common/cache_req/plugins/cache_req_user_by_name.c index 9ee7bef1c..3f343870c 100644 --- a/src/responder/common/cache_req/plugins/cache_req_user_by_name.c +++ b/src/responder/common/cache_req/plugins/cache_req_user_by_name.c @@ -105,8 +105,13 @@ cache_req_user_by_name_lookup(TALLOC_CTX *mem_ctx, struct sss_domain_info *domain, struct ldb_result **_result) { - return sysdb_getpwnam_with_views(mem_ctx, domain, data->name.lookup, - _result); + if (data->attrs == NULL) { + return sysdb_getpwnam_with_views(mem_ctx, domain, data->name.lookup, + _result); + } + + return sysdb_get_user_attr_with_views(mem_ctx, domain, data->name.lookup, + data->attrs, _result); } static errno_t @@ -196,3 +201,25 @@ cache_req_user_by_name_send(TALLOC_CTX *mem_ctx, return cache_req_steal_data_and_send(mem_ctx, ev, rctx, ncache, cache_refresh_percent, domain, data); } + +struct tevent_req * +cache_req_user_by_name_attrs_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct resp_ctx *rctx, + struct sss_nc_ctx *ncache, + int cache_refresh_percent, + const char *domain, + const char *name, + const char **attrs) +{ + struct cache_req_data *data; + + data = cache_req_data_name_attrs(mem_ctx, CACHE_REQ_USER_BY_NAME, + name, attrs); + if (data == NULL) { + return NULL; + } + + return cache_req_steal_data_and_send(mem_ctx, ev, rctx, ncache, + cache_refresh_percent, domain, data); +} |