Skip to content
Next Next commit
Move IToken and IProvider::getToken to OCP
Signed-off-by: Côme Chilliet <[email protected]>
  • Loading branch information
come-nc committed Oct 20, 2023
commit f94fb33062bf3a10e5b0b2023194ad55ce18c3fb
1 change: 1 addition & 0 deletions lib/composer/composer/autoload_classmap.php
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@
'OCP\\Authentication\\LoginCredentials\\ICredentials' => $baseDir . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
'OCP\\Authentication\\LoginCredentials\\IStore' => $baseDir . '/lib/public/Authentication/LoginCredentials/IStore.php',
'OCP\\Authentication\\Token\\IProvider' => $baseDir . '/lib/public/Authentication/Token/IProvider.php',
'OCP\\Authentication\\Token\\IToken' => $baseDir . '/lib/public/Authentication/Token/IToken.php',
'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => $baseDir . '/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
Expand Down
1 change: 1 addition & 0 deletions lib/composer/composer/autoload_static.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OCP\\Authentication\\LoginCredentials\\ICredentials' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/ICredentials.php',
'OCP\\Authentication\\LoginCredentials\\IStore' => __DIR__ . '/../../..' . '/lib/public/Authentication/LoginCredentials/IStore.php',
'OCP\\Authentication\\Token\\IProvider' => __DIR__ . '/../../..' . '/lib/public/Authentication/Token/IProvider.php',
'OCP\\Authentication\\Token\\IToken' => __DIR__ . '/../../..' . '/lib/public/Authentication/Token/IToken.php',
'OCP\\Authentication\\TwoFactorAuth\\ALoginSetupController' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/ALoginSetupController.php',
'OCP\\Authentication\\TwoFactorAuth\\IActivatableAtLogin' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IActivatableAtLogin.php',
'OCP\\Authentication\\TwoFactorAuth\\IActivatableByAdmin' => __DIR__ . '/../../..' . '/lib/public/Authentication/TwoFactorAuth/IActivatableByAdmin.php',
Expand Down
106 changes: 2 additions & 104 deletions lib/private/Authentication/Token/IToken.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,109 +26,7 @@
*/
namespace OC\Authentication\Token;

use JsonSerializable;
use OCP\Authentication\Token\IToken as OCPIToken;

interface IToken extends JsonSerializable {
public const TEMPORARY_TOKEN = 0;
public const PERMANENT_TOKEN = 1;
public const WIPE_TOKEN = 2;
public const DO_NOT_REMEMBER = 0;
public const REMEMBER = 1;

/**
* Get the token ID
*
* @return int
*/
public function getId(): int;

/**
* Get the user UID
*
* @return string
*/
public function getUID(): string;

/**
* Get the login name used when generating the token
*
* @return string
*/
public function getLoginName(): string;

/**
* Get the (encrypted) login password
*
* @return string|null
*/
public function getPassword();

/**
* Get the timestamp of the last password check
*
* @return int
*/
public function getLastCheck(): int;

/**
* Set the timestamp of the last password check
*
* @param int $time
*/
public function setLastCheck(int $time);

/**
* Get the authentication scope for this token
*
* @return string
*/
public function getScope(): string;

/**
* Get the authentication scope for this token
*
* @return array
*/
public function getScopeAsArray(): array;

/**
* Set the authentication scope for this token
*
* @param array $scope
*/
public function setScope($scope);

/**
* Get the name of the token
* @return string
*/
public function getName(): string;

/**
* Get the remember state of the token
*
* @return int
*/
public function getRemember(): int;

/**
* Set the token
*
* @param string $token
*/
public function setToken(string $token);

/**
* Set the password
*
* @param string $password
*/
public function setPassword(string $password);

/**
* Set the expiration time of the token
*
* @param int|null $expires
*/
public function setExpires($expires);
interface IToken extends OCPIToken {
}
11 changes: 11 additions & 0 deletions lib/public/Authentication/Token/IProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,15 @@ interface IProvider {
* @return void
*/
public function invalidateTokensOfUser(string $uid, ?string $clientName);

/**
* Get a token by token string id
*
* @since 28.0.0
* @throws InvalidTokenException
* @throws ExpiredTokenException
* @throws WipeTokenException
* @return IToken
*/
public function getToken(string $tokenId): IToken;
}
124 changes: 124 additions & 0 deletions lib/public/Authentication/Token/IToken.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
<?php

declare(strict_types=1);

/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Christoph Wurst <[email protected]>
* @author Robin Appelman <[email protected]>
* @author Roeland Jago Douma <[email protected]>
*
* @license AGPL-3.0
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
namespace OCP\Authentication\Token;

use JsonSerializable;

/**
* @since 28.0.0
*/
interface IToken extends JsonSerializable {
public const TEMPORARY_TOKEN = 0;
public const PERMANENT_TOKEN = 1;
public const WIPE_TOKEN = 2;
public const DO_NOT_REMEMBER = 0;
public const REMEMBER = 1;

/**
* Get the token ID
* @since 28.0.0
*/
public function getId(): int;

/**
* Get the user UID
* @since 28.0.0
*/
public function getUID(): string;

/**
* Get the login name used when generating the token
* @since 28.0.0
*/
public function getLoginName(): string;

/**
* Get the (encrypted) login password
* @since 28.0.0
*/
public function getPassword(): ?string;

/**
* Get the timestamp of the last password check
* @since 28.0.0
*/
public function getLastCheck(): int;

/**
* Set the timestamp of the last password check
* @since 28.0.0
*/
public function setLastCheck(int $time): void;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: do we need to expose setters as well our would read access be sufficient for the public API?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it’s better to be able to deprecate the OC interface and avoid having to juggle with the two interfaces forever.
It would be pretty to have the setters in the OC but I fear it’s not worth the hassle.


/**
* Get the authentication scope for this token
* @since 28.0.0
*/
public function getScope(): string;

/**
* Get the authentication scope for this token
* @since 28.0.0
*/
public function getScopeAsArray(): array;

/**
* Set the authentication scope for this token
* @since 28.0.0
*/
public function setScope(array $scope): void;

/**
* Get the name of the token
* @since 28.0.0
*/
public function getName(): string;

/**
* Get the remember state of the token
* @since 28.0.0
*/
public function getRemember(): int;

/**
* Set the token
* @since 28.0.0
*/
public function setToken(string $token): void;

/**
* Set the password
* @since 28.0.0
*/
public function setPassword(string $password): void;

/**
* Set the expiration time of the token
* @since 28.0.0
*/
public function setExpires(?int $expires): void;
}