|
14 | 14 | use OCA\User_LDAP\User\DeletedUsersIndex; |
15 | 15 | use OCA\User_LDAP\User\OfflineUser; |
16 | 16 | use OCA\User_LDAP\User\User; |
| 17 | +use OCP\Accounts\IAccountManager; |
17 | 18 | use OCP\IUserBackend; |
18 | 19 | use OCP\Notification\IManager as INotificationManager; |
19 | 20 | use OCP\User\Backend\ICountMappedUsersBackend; |
20 | 21 | use OCP\User\Backend\ILimitAwareCountUsersBackend; |
| 22 | +use OCP\User\Backend\IPropertyPermissionBackend; |
21 | 23 | use OCP\User\Backend\IProvideEnabledStateBackend; |
22 | 24 | use OCP\UserInterface; |
23 | 25 | use Psr\Log\LoggerInterface; |
24 | 26 |
|
25 | | -class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, IUserLDAP, ILimitAwareCountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend { |
| 27 | +class User_LDAP extends BackendUtility implements IUserBackend, UserInterface, IUserLDAP, ILimitAwareCountUsersBackend, ICountMappedUsersBackend, IProvideEnabledStateBackend, IPropertyPermissionBackend { |
26 | 28 | public function __construct( |
27 | 29 | Access $access, |
28 | 30 | protected INotificationManager $notificationManager, |
@@ -643,4 +645,23 @@ public function setUserEnabled(string $uid, bool $enabled, callable $queryDataba |
643 | 645 | public function getDisabledUserList(?int $limit = null, int $offset = 0, string $search = ''): array { |
644 | 646 | throw new \Exception('This is implemented directly in User_Proxy'); |
645 | 647 | } |
| 648 | + |
| 649 | + public function canEditProperty(string $uid, string $property): bool { |
| 650 | + return match($property) { |
| 651 | + // Display name is always set by LDAP |
| 652 | + IAccountManager::PROPERTY_DISPLAYNAME => false, |
| 653 | + IAccountManager::PROPERTY_EMAIL => ((string)$this->access->connection->ldapEmailAttribute !== ''), |
| 654 | + IAccountManager::PROPERTY_PHONE => ((string)$this->access->connection->ldapAttributePhone !== ''), |
| 655 | + IAccountManager::PROPERTY_WEBSITE => ((string)$this->access->connection->ldapAttributeWebsite !== ''), |
| 656 | + IAccountManager::PROPERTY_ADDRESS => ((string)$this->access->connection->ldapAttributeAddress !== ''), |
| 657 | + IAccountManager::PROPERTY_FEDIVERSE => ((string)$this->access->connection->ldapAttributeFediverse !== ''), |
| 658 | + IAccountManager::PROPERTY_ORGANISATION => ((string)$this->access->connection->ldapAttributeOrganisation !== ''), |
| 659 | + IAccountManager::PROPERTY_ROLE => ((string)$this->access->connection->ldapAttributeRole !== ''), |
| 660 | + IAccountManager::PROPERTY_HEADLINE => ((string)$this->access->connection->ldapAttributeHeadline !== ''), |
| 661 | + IAccountManager::PROPERTY_BIOGRAPHY => ((string)$this->access->connection->ldapAttributeBiography !== ''), |
| 662 | + IAccountManager::PROPERTY_BIRTHDATE => ((string)$this->access->connection->ldapAttributeBirthDate !== ''), |
| 663 | + IAccountManager::PROPERTY_PRONOUNS => ((string)$this->access->connection->ldapAttributePronouns !== ''), |
| 664 | + default => true, |
| 665 | + }; |
| 666 | + } |
646 | 667 | } |
0 commit comments