summaryrefslogtreecommitdiffstats
path: root/src/responder/ifp/ifp_users.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/ifp/ifp_users.c')
-rw-r--r--src/responder/ifp/ifp_users.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/responder/ifp/ifp_users.c b/src/responder/ifp/ifp_users.c
index 188194f2a..90b947ed9 100644
--- a/src/responder/ifp/ifp_users.c
+++ b/src/responder/ifp/ifp_users.c
@@ -1328,6 +1328,52 @@ void ifp_users_user_get_groups(struct sbus_request *sbus_req,
*_size = num_groups;
}
+void ifp_users_user_get_domain(struct sbus_request *sbus_req,
+ void *data,
+ const char **_out)
+{
+ const char *domainname;
+
+ *_out = NULL;
+ ifp_users_user_get_domainname(sbus_req, data, &domainname);
+
+ if (domainname == NULL) {
+ return;
+ }
+
+ *_out = sbus_opath_compose(sbus_req, IFP_PATH_DOMAINS,
+ domainname);
+}
+
+void ifp_users_user_get_domainname(struct sbus_request *sbus_req,
+ void *data,
+ const char **_out)
+{
+ struct ifp_ctx *ifp_ctx;
+ struct sss_domain_info *domain;
+ errno_t ret;
+
+ *_out = NULL;
+
+ ifp_ctx = talloc_get_type(data, struct ifp_ctx);
+ if (ifp_ctx == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "Invalid pointer!\n");
+ return;
+ }
+
+ if (!ifp_is_user_attr_allowed(ifp_ctx, "domainname")) {
+ DEBUG(SSSDBG_TRACE_ALL, "Attribute domainname is not allowed\n");
+ return;
+ }
+
+ ret = ifp_users_user_get(sbus_req, ifp_ctx, &domain, NULL);
+ if (ret != EOK) {
+ return;
+ }
+
+ *_out = domain->name;
+}
+
void ifp_users_user_get_extra_attributes(struct sbus_request *sbus_req,
void *data,
hash_table_t **_out)