aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/LDAP/ILDAPProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/LDAP/ILDAPProvider.php')
-rw-r--r--lib/public/LDAP/ILDAPProvider.php154
1 files changed, 154 insertions, 0 deletions
diff --git a/lib/public/LDAP/ILDAPProvider.php b/lib/public/LDAP/ILDAPProvider.php
new file mode 100644
index 00000000000..7e1f27eb368
--- /dev/null
+++ b/lib/public/LDAP/ILDAPProvider.php
@@ -0,0 +1,154 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCP\LDAP;
+
+/**
+ * Interface ILDAPProvider
+ *
+ * @since 11.0.0
+ */
+interface ILDAPProvider {
+ /**
+ * Translate a user id to LDAP DN.
+ * @param string $uid user id
+ * @return string
+ * @since 11.0.0
+ */
+ public function getUserDN($uid);
+
+ /**
+ * Translate a group id to LDAP DN.
+ * @param string $gid group id
+ * @return string
+ * @since 13.0.0
+ */
+ public function getGroupDN($gid);
+
+ /**
+ * Translate a LDAP DN to an internal user name.
+ * @param string $dn LDAP DN
+ * @return string with the internal user name
+ * @throws \Exception if translation was unsuccessful
+ * @since 11.0.0
+ */
+ public function getUserName($dn);
+
+ /**
+ * Convert a stored DN so it can be used as base parameter for LDAP queries.
+ * @param string $dn the DN
+ * @return string
+ * @since 11.0.0
+ */
+ public function DNasBaseParameter($dn);
+
+ /**
+ * Sanitize a DN received from the LDAP server.
+ * @param array|string $dn the DN in question
+ * @return array|string the sanitized DN
+ * @since 11.0.0
+ */
+ public function sanitizeDN($dn);
+
+ /**
+ * Return a new LDAP connection resource for the specified user.
+ * @param string $uid user id
+ * @return \LDAP\Connection|resource
+ * @since 11.0.0
+ */
+ public function getLDAPConnection($uid);
+
+ /**
+ * Return a new LDAP connection resource for the specified group.
+ * @param string $gid group id
+ * @return \LDAP\Connection|resource
+ * @since 13.0.0
+ */
+ public function getGroupLDAPConnection($gid);
+
+ /**
+ * Get the LDAP base for users.
+ * @param string $uid user id
+ * @return string the base for users
+ * @throws \Exception if user id was not found in LDAP
+ * @since 11.0.0
+ */
+ public function getLDAPBaseUsers($uid);
+
+ /**
+ * Get the LDAP base for groups.
+ * @param string $uid user id
+ * @return string the base for groups
+ * @throws \Exception if user id was not found in LDAP
+ * @since 11.0.0
+ */
+ public function getLDAPBaseGroups($uid);
+
+ /**
+ * Check whether a LDAP DN exists
+ * @param string $dn LDAP DN
+ * @return bool whether the DN exists
+ * @since 11.0.0
+ */
+ public function dnExists($dn);
+
+ /**
+ * Clear the cache if a cache is used, otherwise do nothing.
+ * @param string $uid user id
+ * @since 11.0.0
+ */
+ public function clearCache($uid);
+
+ /**
+ * Clear the cache if a cache is used, otherwise do nothing.
+ * @param string $gid group id
+ * @since 13.0.0
+ */
+ public function clearGroupCache($gid);
+
+ /**
+ * Get the LDAP attribute name for the user's display name
+ * @param string $uid user id
+ * @return string the display name field
+ * @throws \Exception if user id was not found in LDAP
+ * @since 12.0.0
+ */
+ public function getLDAPDisplayNameField($uid);
+
+ /**
+ * Get the LDAP attribute name for the email
+ * @param string $uid user id
+ * @return string the email field
+ * @throws \Exception if user id was not found in LDAP
+ * @since 12.0.0
+ */
+ public function getLDAPEmailField($uid);
+
+ /**
+ * Get the LDAP attribute name for the type of association between users and groups
+ * @param string $gid group id
+ * @return string the configuration, one of: 'memberUid', 'uniqueMember', 'member', 'gidNumber', ''
+ * @throws \Exception if group id was not found in LDAP
+ * @since 13.0.0
+ */
+ public function getLDAPGroupMemberAssoc($gid);
+
+ /**
+ * Get an LDAP attribute for a nextcloud user
+ *
+ * @throws \Exception if user id was not found in LDAP
+ * @since 21.0.0
+ */
+ public function getUserAttribute(string $uid, string $attribute): ?string;
+
+ /**
+ * Get a multi-value LDAP attribute for a nextcloud user
+ *
+ * @throws \Exception if user id was not found in LDAP
+ * @since 22.0.0
+ */
+ public function getMultiValueUserAttribute(string $uid, string $attribute): array;
+}