summaryrefslogtreecommitdiffstats
path: root/lib/private/Authentication/Token
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@owncloud.com>2016-05-19 11:20:22 +0200
committerChristoph Wurst <christoph@owncloud.com>2016-05-23 09:11:12 +0200
commit74277c25be2f3231e52a73a684bd14452a9ff2aa (patch)
treeca68eac57db357563e64e9f323df667fcc28f8f6 /lib/private/Authentication/Token
parent6495534bcdbbda8aa2748cc9f5d94dcb2bc7a04a (diff)
downloadnextcloud-server-74277c25be2f3231e52a73a684bd14452a9ff2aa.tar.gz
nextcloud-server-74277c25be2f3231e52a73a684bd14452a9ff2aa.zip
add button to invalidate browser sessions/device tokens
Diffstat (limited to 'lib/private/Authentication/Token')
-rw-r--r--lib/private/Authentication/Token/DefaultToken.php4
-rw-r--r--lib/private/Authentication/Token/DefaultTokenMapper.php13
-rw-r--r--lib/private/Authentication/Token/DefaultTokenProvider.php10
-rw-r--r--lib/private/Authentication/Token/IProvider.php10
-rw-r--r--lib/private/Authentication/Token/IToken.php6
5 files changed, 37 insertions, 6 deletions
diff --git a/lib/private/Authentication/Token/DefaultToken.php b/lib/private/Authentication/Token/DefaultToken.php
index ca4c723fba3..4a64eacb247 100644
--- a/lib/private/Authentication/Token/DefaultToken.php
+++ b/lib/private/Authentication/Token/DefaultToken.php
@@ -22,14 +22,12 @@
namespace OC\Authentication\Token;
-use JsonSerializable;
use OCP\AppFramework\Db\Entity;
/**
* @method void setId(int $id)
* @method void setUid(string $uid);
* @method void setPassword(string $password)
- * @method string getPassword()
* @method void setName(string $name)
* @method string getName()
* @method void setToken(string $token)
@@ -39,7 +37,7 @@ use OCP\AppFramework\Db\Entity;
* @method void setLastActivity(int $lastActivity)
* @method int getLastActivity()
*/
-class DefaultToken extends Entity implements IToken, JsonSerializable {
+class DefaultToken extends Entity implements IToken {
/**
* @var string user UID
diff --git a/lib/private/Authentication/Token/DefaultTokenMapper.php b/lib/private/Authentication/Token/DefaultTokenMapper.php
index 9f173571270..970c2242dbe 100644
--- a/lib/private/Authentication/Token/DefaultTokenMapper.php
+++ b/lib/private/Authentication/Token/DefaultTokenMapper.php
@@ -111,4 +111,17 @@ class DefaultTokenMapper extends Mapper {
return $entities;
}
+ /**
+ * @param IUser $user
+ * @param int $id
+ */
+ public function deleteById(IUser $user, $id) {
+ /* @var $qb IQueryBuilder */
+ $qb = $this->db->getQueryBuilder();
+ $qb->delete('authtoken')
+ ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
+ ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($user->getUID())));
+ $qb->execute();
+ }
+
}
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index 3527f4155a9..0f7c54dab57 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -151,6 +151,16 @@ class DefaultTokenProvider implements IProvider {
}
/**
+ * Invalidate (delete) the given token
+ *
+ * @param IUser $user
+ * @param int $id
+ */
+ public function invalidateTokenById(IUser $user, $id) {
+ $this->mapper->deleteById($user, $id);
+ }
+
+ /**
* Invalidate (delete) old session tokens
*/
public function invalidateOldTokens() {
diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php
index b8648dda5b7..e4e4581e738 100644
--- a/lib/private/Authentication/Token/IProvider.php
+++ b/lib/private/Authentication/Token/IProvider.php
@@ -47,7 +47,7 @@ interface IProvider {
* @return IToken
*/
public function getToken($tokenId) ;
-
+
/**
* @param string $token
* @throws InvalidTokenException
@@ -63,6 +63,14 @@ interface IProvider {
public function invalidateToken($token);
/**
+ * Invalidate (delete) the given token
+ *
+ * @param IUser $user
+ * @param int $id
+ */
+ public function invalidateTokenById(IUser $user, $id);
+
+ /**
* Update token activity timestamp
*
* @param IToken $token
diff --git a/lib/private/Authentication/Token/IToken.php b/lib/private/Authentication/Token/IToken.php
index 2a01ea75ea9..b741cd4ac22 100644
--- a/lib/private/Authentication/Token/IToken.php
+++ b/lib/private/Authentication/Token/IToken.php
@@ -22,7 +22,9 @@
namespace OC\Authentication\Token;
-interface IToken {
+use JsonSerializable;
+
+interface IToken extends JsonSerializable {
const TEMPORARY_TOKEN = 0;
const PERMANENT_TOKEN = 1;
@@ -30,7 +32,7 @@ interface IToken {
/**
* Get the token ID
*
- * @return string
+ * @return int
*/
public function getId();