aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/Authentication/TwoFactorAuth/IProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/Authentication/TwoFactorAuth/IProvider.php')
-rw-r--r--lib/public/Authentication/TwoFactorAuth/IProvider.php77
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/public/Authentication/TwoFactorAuth/IProvider.php b/lib/public/Authentication/TwoFactorAuth/IProvider.php
new file mode 100644
index 00000000000..27c4121f4ac
--- /dev/null
+++ b/lib/public/Authentication/TwoFactorAuth/IProvider.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCP\Authentication\TwoFactorAuth;
+
+use OCP\IUser;
+use OCP\Template\ITemplate;
+
+/**
+ * @since 9.1.0
+ */
+interface IProvider {
+ /**
+ * Get unique identifier of this 2FA provider
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getId(): string;
+
+ /**
+ * Get the display name for selecting the 2FA provider
+ *
+ * Example: "Email"
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getDisplayName(): string;
+
+ /**
+ * Get the description for selecting the 2FA provider
+ *
+ * Example: "Get a token via e-mail"
+ *
+ * @since 9.1.0
+ *
+ * @return string
+ */
+ public function getDescription(): string;
+
+ /**
+ * Get the template for rending the 2FA provider view
+ *
+ * @since 9.1.0
+ * @since 32.0.0 Broader return type ITemplate instead of \OCP\Template.
+ */
+ public function getTemplate(IUser $user): ITemplate;
+
+ /**
+ * Verify the given challenge
+ *
+ * @since 9.1.0
+ *
+ * @param IUser $user
+ * @param string $challenge
+ * @return bool
+ */
+ public function verifyChallenge(IUser $user, string $challenge): bool;
+
+ /**
+ * Decides whether 2FA is enabled for the given user
+ *
+ * @since 9.1.0
+ *
+ * @param IUser $user
+ * @return bool
+ */
+ public function isTwoFactorAuthEnabledForUser(IUser $user): bool;
+}