|
|
<?php
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
/**
|
|
|
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
|
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
*/
|
|
|
|
|
|
namespace OCP\Accounts;
|
|
|
|
|
|
use OCP\IUser;
|
|
|
|
|
|
/**
|
|
|
* Access user profile information
|
|
|
*
|
|
|
* @since 15.0.0
|
|
|
*
|
|
|
*/
|
|
|
interface IAccountManager {
|
|
|
/**
|
|
|
* Contact details visible locally only
|
|
|
*
|
|
|
* @since 21.0.1
|
|
|
*/
|
|
|
public const SCOPE_PRIVATE = 'v2-private';
|
|
|
|
|
|
/**
|
|
|
* Contact details visible locally and through public link access on local instance
|
|
|
*
|
|
|
* @since 21.0.1
|
|
|
*/
|
|
|
public const SCOPE_LOCAL = 'v2-local';
|
|
|
|
|
|
/**
|
|
|
* Contact details visible locally, through public link access and on trusted federated servers.
|
|
|
*
|
|
|
* @since 21.0.1
|
|
|
*/
|
|
|
public const SCOPE_FEDERATED = 'v2-federated';
|
|
|
|
|
|
/**
|
|
|
* Contact details visible locally, through public link access, on trusted federated servers
|
|
|
* and published to the public lookup server.
|
|
|
*
|
|
|
* @since 21.0.1
|
|
|
*/
|
|
|
public const SCOPE_PUBLISHED = 'v2-published';
|
|
|
|
|
|
/**
|
|
|
* The list of allowed scopes
|
|
|
*
|
|
|
* @since 25.0.0
|
|
|
*/
|
|
|
public const ALLOWED_SCOPES = [
|
|
|
self::SCOPE_PRIVATE,
|
|
|
self::SCOPE_LOCAL,
|
|
|
self::SCOPE_FEDERATED,
|
|
|
self::SCOPE_PUBLISHED,
|
|
|
];
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_AVATAR = 'avatar';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_DISPLAYNAME = 'displayname';
|
|
|
|
|
|
/**
|
|
|
* @since 27.0.0
|
|
|
* @deprecated 27.0.0 only added for backwards compatibility with provisioning_api UsersController::getCurrentUser
|
|
|
*/
|
|
|
public const PROPERTY_DISPLAYNAME_LEGACY = 'display-name';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_PHONE = 'phone';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_EMAIL = 'email';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_WEBSITE = 'website';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const PROPERTY_ADDRESS = 'address';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
* @deprecated 32.0.0
|
|
|
*/
|
|
|
public const PROPERTY_TWITTER = 'twitter';
|
|
|
|
|
|
/**
|
|
|
* @since 32.0.0
|
|
|
*/
|
|
|
public const PROPERTY_BLUESKY = 'bluesky';
|
|
|
|
|
|
/**
|
|
|
* @since 26.0.0
|
|
|
*/
|
|
|
public const PROPERTY_FEDIVERSE = 'fediverse';
|
|
|
|
|
|
/**
|
|
|
* @since 23.0.0
|
|
|
*/
|
|
|
public const PROPERTY_ORGANISATION = 'organisation';
|
|
|
|
|
|
/**
|
|
|
* @since 23.0.0
|
|
|
*/
|
|
|
public const PROPERTY_ROLE = 'role';
|
|
|
|
|
|
/**
|
|
|
* @since 23.0.0
|
|
|
*/
|
|
|
public const PROPERTY_HEADLINE = 'headline';
|
|
|
|
|
|
/**
|
|
|
* @since 23.0.0
|
|
|
*/
|
|
|
public const PROPERTY_BIOGRAPHY = 'biography';
|
|
|
|
|
|
/**
|
|
|
* @since 23.0.0
|
|
|
*/
|
|
|
public const PROPERTY_PROFILE_ENABLED = 'profile_enabled';
|
|
|
|
|
|
/**
|
|
|
* @since 30.0.0
|
|
|
*/
|
|
|
public const PROPERTY_BIRTHDATE = 'birthdate';
|
|
|
|
|
|
/**
|
|
|
* @since 31.0.0
|
|
|
*/
|
|
|
public const PROPERTY_PRONOUNS = 'pronouns';
|
|
|
|
|
|
/**
|
|
|
* The list of allowed properties
|
|
|
*
|
|
|
* @since 25.0.0
|
|
|
*/
|
|
|
public const ALLOWED_PROPERTIES = [
|
|
|
self::PROPERTY_ADDRESS,
|
|
|
self::PROPERTY_AVATAR,
|
|
|
self::PROPERTY_BIOGRAPHY,
|
|
|
self::PROPERTY_BIRTHDATE,
|
|
|
self::PROPERTY_DISPLAYNAME,
|
|
|
self::PROPERTY_EMAIL,
|
|
|
self::PROPERTY_FEDIVERSE,
|
|
|
self::PROPERTY_HEADLINE,
|
|
|
self::PROPERTY_ORGANISATION,
|
|
|
self::PROPERTY_PHONE,
|
|
|
self::PROPERTY_PROFILE_ENABLED,
|
|
|
self::PROPERTY_PRONOUNS,
|
|
|
self::PROPERTY_ROLE,
|
|
|
self::PROPERTY_TWITTER,
|
|
|
self::PROPERTY_BLUESKY,
|
|
|
self::PROPERTY_WEBSITE,
|
|
|
];
|
|
|
|
|
|
|
|
|
/**
|
|
|
* @since 22.0.0
|
|
|
*/
|
|
|
public const COLLECTION_EMAIL = 'additional_mail';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const NOT_VERIFIED = '0';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const VERIFICATION_IN_PROGRESS = '1';
|
|
|
|
|
|
/**
|
|
|
* @since 15.0.0
|
|
|
*/
|
|
|
public const VERIFIED = '2';
|
|
|
|
|
|
/**
|
|
|
* Get the account data for a given user
|
|
|
*
|
|
|
* @since 15.0.0
|
|
|
*
|
|
|
* @param IUser $user
|
|
|
* @return IAccount
|
|
|
*/
|
|
|
public function getAccount(IUser $user): IAccount;
|
|
|
|
|
|
/**
|
|
|
* Update the account data with for the user
|
|
|
*
|
|
|
* @since 21.0.1
|
|
|
*
|
|
|
* @param IAccount $account
|
|
|
* @throws \InvalidArgumentException Message is the property that was invalid
|
|
|
*/
|
|
|
public function updateAccount(IAccount $account): void;
|
|
|
|
|
|
/**
|
|
|
* Search for users based on account data
|
|
|
*
|
|
|
* @param string $property - property or property collection name – since
|
|
|
* NC 22 the implementation MAY add a fitting property collection into the
|
|
|
* search even if a property name was given e.g. email property and email
|
|
|
* collection)
|
|
|
* @param string[] $values
|
|
|
* @return array
|
|
|
*
|
|
|
* @since 21.0.0
|
|
|
*/
|
|
|
public function searchUsers(string $property, array $values): array;
|
|
|
}
|