Passed
Push — master ( c81798...ecad09 )
by Joas
27:22 queued 13:12
created
lib/private/Preview/WatcherConnector.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
 	public function connectWatcher() {
58 58
 		// Do not connect if we are not setup yet!
59 59
 		if ($this->config->getValue('instanceid', null) !== null) {
60
-			$this->root->listen('\OC\Files', 'postWrite', function (Node $node) {
60
+			$this->root->listen('\OC\Files', 'postWrite', function(Node $node) {
61 61
 				$this->getWatcher()->postWrite($node);
62 62
 			});
63 63
 
Please login to merge, or discard this patch.
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -30,39 +30,39 @@
 block discarded – undo
30 30
 use OCP\Files\Node;
31 31
 
32 32
 class WatcherConnector {
33
-	/** @var IRootFolder */
34
-	private $root;
33
+    /** @var IRootFolder */
34
+    private $root;
35 35
 
36
-	/** @var SystemConfig */
37
-	private $config;
36
+    /** @var SystemConfig */
37
+    private $config;
38 38
 
39
-	/**
40
-	 * WatcherConnector constructor.
41
-	 *
42
-	 * @param IRootFolder $root
43
-	 * @param SystemConfig $config
44
-	 */
45
-	public function __construct(IRootFolder $root,
46
-								SystemConfig $config) {
47
-		$this->root = $root;
48
-		$this->config = $config;
49
-	}
39
+    /**
40
+     * WatcherConnector constructor.
41
+     *
42
+     * @param IRootFolder $root
43
+     * @param SystemConfig $config
44
+     */
45
+    public function __construct(IRootFolder $root,
46
+                                SystemConfig $config) {
47
+        $this->root = $root;
48
+        $this->config = $config;
49
+    }
50 50
 
51
-	/**
52
-	 * @return Watcher
53
-	 */
54
-	private function getWatcher(): Watcher {
55
-		return \OC::$server->query(Watcher::class);
56
-	}
51
+    /**
52
+     * @return Watcher
53
+     */
54
+    private function getWatcher(): Watcher {
55
+        return \OC::$server->query(Watcher::class);
56
+    }
57 57
 
58
-	public function connectWatcher() {
59
-		// Do not connect if we are not setup yet!
60
-		if ($this->config->getValue('instanceid', null) !== null) {
61
-			$this->root->listen('\OC\Files', 'postWrite', function (Node $node) {
62
-				$this->getWatcher()->postWrite($node);
63
-			});
58
+    public function connectWatcher() {
59
+        // Do not connect if we are not setup yet!
60
+        if ($this->config->getValue('instanceid', null) !== null) {
61
+            $this->root->listen('\OC\Files', 'postWrite', function (Node $node) {
62
+                $this->getWatcher()->postWrite($node);
63
+            });
64 64
 
65
-			\OC_Hook::connect('\OCP\Versions', 'rollback', $this->getWatcher(), 'versionRollback');
66
-		}
67
-	}
65
+            \OC_Hook::connect('\OCP\Versions', 'rollback', $this->getWatcher(), 'versionRollback');
66
+        }
67
+    }
68 68
 }
Please login to merge, or discard this patch.
apps/oauth2/lib/Controller/LoginRedirectorController.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -71,7 +71,7 @@
 block discarded – undo
71 71
 
72 72
 		if ($response_type !== 'code') {
73 73
 			//Fail
74
-			$url = $client->getRedirectUri() . '?error=unsupported_response_type&state=' . $state;
74
+			$url = $client->getRedirectUri().'?error=unsupported_response_type&state='.$state;
75 75
 			return new RedirectResponse($url);
76 76
 		}
77 77
 
Please login to merge, or discard this patch.
Indentation   +63 added lines, -63 removed lines patch added patch discarded remove patch
@@ -39,72 +39,72 @@
 block discarded – undo
39 39
 use OCP\IURLGenerator;
40 40
 
41 41
 class LoginRedirectorController extends Controller {
42
-	/** @var IURLGenerator */
43
-	private $urlGenerator;
44
-	/** @var ClientMapper */
45
-	private $clientMapper;
46
-	/** @var ISession */
47
-	private $session;
48
-	/** @var IL10N */
49
-	private $l;
42
+    /** @var IURLGenerator */
43
+    private $urlGenerator;
44
+    /** @var ClientMapper */
45
+    private $clientMapper;
46
+    /** @var ISession */
47
+    private $session;
48
+    /** @var IL10N */
49
+    private $l;
50 50
 
51
-	/**
52
-	 * @param string $appName
53
-	 * @param IRequest $request
54
-	 * @param IURLGenerator $urlGenerator
55
-	 * @param ClientMapper $clientMapper
56
-	 * @param ISession $session
57
-	 * @param IL10N $l
58
-	 */
59
-	public function __construct(string $appName,
60
-								IRequest $request,
61
-								IURLGenerator $urlGenerator,
62
-								ClientMapper $clientMapper,
63
-								ISession $session,
64
-								IL10N $l) {
65
-		parent::__construct($appName, $request);
66
-		$this->urlGenerator = $urlGenerator;
67
-		$this->clientMapper = $clientMapper;
68
-		$this->session = $session;
69
-		$this->l = $l;
70
-	}
51
+    /**
52
+     * @param string $appName
53
+     * @param IRequest $request
54
+     * @param IURLGenerator $urlGenerator
55
+     * @param ClientMapper $clientMapper
56
+     * @param ISession $session
57
+     * @param IL10N $l
58
+     */
59
+    public function __construct(string $appName,
60
+                                IRequest $request,
61
+                                IURLGenerator $urlGenerator,
62
+                                ClientMapper $clientMapper,
63
+                                ISession $session,
64
+                                IL10N $l) {
65
+        parent::__construct($appName, $request);
66
+        $this->urlGenerator = $urlGenerator;
67
+        $this->clientMapper = $clientMapper;
68
+        $this->session = $session;
69
+        $this->l = $l;
70
+    }
71 71
 
72
-	/**
73
-	 * @PublicPage
74
-	 * @NoCSRFRequired
75
-	 * @UseSession
76
-	 *
77
-	 * @param string $client_id
78
-	 * @param string $state
79
-	 * @param string $response_type
80
-	 * @return Response
81
-	 */
82
-	public function authorize($client_id,
83
-							  $state,
84
-							  $response_type): Response {
85
-		try {
86
-			$client = $this->clientMapper->getByIdentifier($client_id);
87
-		} catch (ClientNotFoundException $e) {
88
-			$params = [
89
-				'content' => $this->l->t('Your client is not authorized to connect. Please inform the administrator of your client.'),
90
-			];
91
-			return new TemplateResponse('core', '404', $params, 'guest');
92
-		}
72
+    /**
73
+     * @PublicPage
74
+     * @NoCSRFRequired
75
+     * @UseSession
76
+     *
77
+     * @param string $client_id
78
+     * @param string $state
79
+     * @param string $response_type
80
+     * @return Response
81
+     */
82
+    public function authorize($client_id,
83
+                                $state,
84
+                                $response_type): Response {
85
+        try {
86
+            $client = $this->clientMapper->getByIdentifier($client_id);
87
+        } catch (ClientNotFoundException $e) {
88
+            $params = [
89
+                'content' => $this->l->t('Your client is not authorized to connect. Please inform the administrator of your client.'),
90
+            ];
91
+            return new TemplateResponse('core', '404', $params, 'guest');
92
+        }
93 93
 
94
-		if ($response_type !== 'code') {
95
-			//Fail
96
-			$url = $client->getRedirectUri() . '?error=unsupported_response_type&state=' . $state;
97
-			return new RedirectResponse($url);
98
-		}
94
+        if ($response_type !== 'code') {
95
+            //Fail
96
+            $url = $client->getRedirectUri() . '?error=unsupported_response_type&state=' . $state;
97
+            return new RedirectResponse($url);
98
+        }
99 99
 
100
-		$this->session->set('oauth.state', $state);
100
+        $this->session->set('oauth.state', $state);
101 101
 
102
-		$targetUrl = $this->urlGenerator->linkToRouteAbsolute(
103
-			'core.ClientFlowLogin.showAuthPickerPage',
104
-			[
105
-				'clientIdentifier' => $client->getClientIdentifier(),
106
-			]
107
-		);
108
-		return new RedirectResponse($targetUrl);
109
-	}
102
+        $targetUrl = $this->urlGenerator->linkToRouteAbsolute(
103
+            'core.ClientFlowLogin.showAuthPickerPage',
104
+            [
105
+                'clientIdentifier' => $client->getClientIdentifier(),
106
+            ]
107
+        );
108
+        return new RedirectResponse($targetUrl);
109
+    }
110 110
 }
Please login to merge, or discard this patch.
apps/files_external/lib/Lib/Auth/SMB/KerberosAuth.php 1 patch
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -25,10 +25,10 @@
 block discarded – undo
25 25
 use OCP\IL10N;
26 26
 
27 27
 class KerberosAuth extends AuthMechanism {
28
-	public function __construct(IL10N $l) {
29
-		$this
30
-			->setIdentifier('smb::kerberos')
31
-			->setScheme(self::SCHEME_SMB)
32
-			->setText($l->t('Kerberos ticket'));
33
-	}
28
+    public function __construct(IL10N $l) {
29
+        $this
30
+            ->setIdentifier('smb::kerberos')
31
+            ->setScheme(self::SCHEME_SMB)
32
+            ->setText($l->t('Kerberos ticket'));
33
+    }
34 34
 }
Please login to merge, or discard this patch.
lib/private/Authentication/Token/PublicKeyTokenMapper.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -129,7 +129,7 @@
 block discarded – undo
129 129
 		$data = $result->fetchAll();
130 130
 		$result->closeCursor();
131 131
 
132
-		$entities = array_map(function ($row) {
132
+		$entities = array_map(function($row) {
133 133
 			return PublicKeyToken::fromRow($row);
134 134
 		}, $data);
135 135
 
Please login to merge, or discard this patch.
Indentation   +193 added lines, -193 removed lines patch added patch discarded remove patch
@@ -36,197 +36,197 @@
 block discarded – undo
36 36
  * @template-extends QBMapper<PublicKeyToken>
37 37
  */
38 38
 class PublicKeyTokenMapper extends QBMapper {
39
-	public function __construct(IDBConnection $db) {
40
-		parent::__construct($db, 'authtoken');
41
-	}
42
-
43
-	/**
44
-	 * Invalidate (delete) a given token
45
-	 *
46
-	 * @param string $token
47
-	 */
48
-	public function invalidate(string $token) {
49
-		/* @var $qb IQueryBuilder */
50
-		$qb = $this->db->getQueryBuilder();
51
-		$qb->delete($this->tableName)
52
-			->where($qb->expr()->eq('token', $qb->createNamedParameter($token)))
53
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
54
-			->execute();
55
-	}
56
-
57
-	/**
58
-	 * @param int $olderThan
59
-	 * @param int $remember
60
-	 */
61
-	public function invalidateOld(int $olderThan, int $remember = IToken::DO_NOT_REMEMBER) {
62
-		/* @var $qb IQueryBuilder */
63
-		$qb = $this->db->getQueryBuilder();
64
-		$qb->delete($this->tableName)
65
-			->where($qb->expr()->lt('last_activity', $qb->createNamedParameter($olderThan, IQueryBuilder::PARAM_INT)))
66
-			->andWhere($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN, IQueryBuilder::PARAM_INT)))
67
-			->andWhere($qb->expr()->eq('remember', $qb->createNamedParameter($remember, IQueryBuilder::PARAM_INT)))
68
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
69
-			->execute();
70
-	}
71
-
72
-	/**
73
-	 * Get the user UID for the given token
74
-	 *
75
-	 * @throws DoesNotExistException
76
-	 */
77
-	public function getToken(string $token): PublicKeyToken {
78
-		/* @var $qb IQueryBuilder */
79
-		$qb = $this->db->getQueryBuilder();
80
-		$result = $qb->select('*')
81
-			->from($this->tableName)
82
-			->where($qb->expr()->eq('token', $qb->createNamedParameter($token)))
83
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
84
-			->execute();
85
-
86
-		$data = $result->fetch();
87
-		$result->closeCursor();
88
-		if ($data === false) {
89
-			throw new DoesNotExistException('token does not exist');
90
-		}
91
-		return PublicKeyToken::fromRow($data);
92
-	}
93
-
94
-	/**
95
-	 * Get the token for $id
96
-	 *
97
-	 * @throws DoesNotExistException
98
-	 */
99
-	public function getTokenById(int $id): PublicKeyToken {
100
-		/* @var $qb IQueryBuilder */
101
-		$qb = $this->db->getQueryBuilder();
102
-		$result = $qb->select('*')
103
-			->from($this->tableName)
104
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
105
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
106
-			->execute();
107
-
108
-		$data = $result->fetch();
109
-		$result->closeCursor();
110
-		if ($data === false) {
111
-			throw new DoesNotExistException('token does not exist');
112
-		}
113
-		return PublicKeyToken::fromRow($data);
114
-	}
115
-
116
-	/**
117
-	 * Get all tokens of a user
118
-	 *
119
-	 * The provider may limit the number of result rows in case of an abuse
120
-	 * where a high number of (session) tokens is generated
121
-	 *
122
-	 * @param string $uid
123
-	 * @return PublicKeyToken[]
124
-	 */
125
-	public function getTokenByUser(string $uid): array {
126
-		/* @var $qb IQueryBuilder */
127
-		$qb = $this->db->getQueryBuilder();
128
-		$qb->select('*')
129
-			->from($this->tableName)
130
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
131
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
132
-			->setMaxResults(1000);
133
-		$result = $qb->execute();
134
-		$data = $result->fetchAll();
135
-		$result->closeCursor();
136
-
137
-		$entities = array_map(function ($row) {
138
-			return PublicKeyToken::fromRow($row);
139
-		}, $data);
140
-
141
-		return $entities;
142
-	}
143
-
144
-	public function deleteById(string $uid, int $id) {
145
-		/* @var $qb IQueryBuilder */
146
-		$qb = $this->db->getQueryBuilder();
147
-		$qb->delete($this->tableName)
148
-			->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
149
-			->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
150
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
151
-		$qb->execute();
152
-	}
153
-
154
-	/**
155
-	 * delete all auth token which belong to a specific client if the client was deleted
156
-	 *
157
-	 * @param string $name
158
-	 */
159
-	public function deleteByName(string $name) {
160
-		$qb = $this->db->getQueryBuilder();
161
-		$qb->delete($this->tableName)
162
-			->where($qb->expr()->eq('name', $qb->createNamedParameter($name), IQueryBuilder::PARAM_STR))
163
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
164
-		$qb->execute();
165
-	}
166
-
167
-	public function deleteTempToken(PublicKeyToken $except) {
168
-		$qb = $this->db->getQueryBuilder();
169
-
170
-		$qb->delete($this->tableName)
171
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($except->getUID())))
172
-			->andWhere($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN)))
173
-			->andWhere($qb->expr()->neq('id', $qb->createNamedParameter($except->getId())))
174
-			->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
175
-
176
-		$qb->execute();
177
-	}
178
-
179
-	public function hasExpiredTokens(string $uid): bool {
180
-		$qb = $this->db->getQueryBuilder();
181
-		$qb->select('*')
182
-			->from($this->tableName)
183
-			->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
184
-			->andWhere($qb->expr()->eq('password_invalid', $qb->createNamedParameter(true), IQueryBuilder::PARAM_BOOL))
185
-			->setMaxResults(1);
186
-
187
-		$cursor = $qb->execute();
188
-		$data = $cursor->fetchAll();
189
-		$cursor->closeCursor();
190
-
191
-		return count($data) === 1;
192
-	}
193
-
194
-	/**
195
-	 * Update the last activity timestamp
196
-	 *
197
-	 * In highly concurrent setups it can happen that two parallel processes
198
-	 * trigger the update at (nearly) the same time. In that special case it's
199
-	 * not necessary to hit the database with two actual updates. Therefore the
200
-	 * target last activity is included in the WHERE clause with a few seconds
201
-	 * of tolerance.
202
-	 *
203
-	 * Example:
204
-	 * - process 1 (P1) reads the token at timestamp 1500
205
-	 * - process 1 (P2) reads the token at timestamp 1501
206
-	 * - activity update interval is 100
207
-	 *
208
-	 * This means
209
-	 *
210
-	 * - P1 will see a last_activity smaller than the current time and update
211
-	 *   the token row
212
-	 * - If P2 reads after P1 had written, it will see 1600 as last activity
213
-	 *   and the comparison on last_activity won't be truthy. This means no rows
214
-	 *   need to be updated a second time
215
-	 * - If P2 reads before P1 had written, it will see 1501 as last activity,
216
-	 *   but the comparison on last_activity will still not be truthy and the
217
-	 *   token row is not updated a second time
218
-	 *
219
-	 * @param IToken $token
220
-	 * @param int $now
221
-	 */
222
-	public function updateActivity(IToken $token, int $now): void {
223
-		$qb = $this->db->getQueryBuilder();
224
-		$update = $qb->update($this->getTableName())
225
-			->set('last_activity', $qb->createNamedParameter($now, IQueryBuilder::PARAM_INT))
226
-			->where(
227
-				$qb->expr()->eq('id', $qb->createNamedParameter($token->getId(), IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT),
228
-				$qb->expr()->lt('last_activity', $qb->createNamedParameter($now - 15, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT)
229
-			);
230
-		$update->executeStatement();
231
-	}
39
+    public function __construct(IDBConnection $db) {
40
+        parent::__construct($db, 'authtoken');
41
+    }
42
+
43
+    /**
44
+     * Invalidate (delete) a given token
45
+     *
46
+     * @param string $token
47
+     */
48
+    public function invalidate(string $token) {
49
+        /* @var $qb IQueryBuilder */
50
+        $qb = $this->db->getQueryBuilder();
51
+        $qb->delete($this->tableName)
52
+            ->where($qb->expr()->eq('token', $qb->createNamedParameter($token)))
53
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
54
+            ->execute();
55
+    }
56
+
57
+    /**
58
+     * @param int $olderThan
59
+     * @param int $remember
60
+     */
61
+    public function invalidateOld(int $olderThan, int $remember = IToken::DO_NOT_REMEMBER) {
62
+        /* @var $qb IQueryBuilder */
63
+        $qb = $this->db->getQueryBuilder();
64
+        $qb->delete($this->tableName)
65
+            ->where($qb->expr()->lt('last_activity', $qb->createNamedParameter($olderThan, IQueryBuilder::PARAM_INT)))
66
+            ->andWhere($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN, IQueryBuilder::PARAM_INT)))
67
+            ->andWhere($qb->expr()->eq('remember', $qb->createNamedParameter($remember, IQueryBuilder::PARAM_INT)))
68
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
69
+            ->execute();
70
+    }
71
+
72
+    /**
73
+     * Get the user UID for the given token
74
+     *
75
+     * @throws DoesNotExistException
76
+     */
77
+    public function getToken(string $token): PublicKeyToken {
78
+        /* @var $qb IQueryBuilder */
79
+        $qb = $this->db->getQueryBuilder();
80
+        $result = $qb->select('*')
81
+            ->from($this->tableName)
82
+            ->where($qb->expr()->eq('token', $qb->createNamedParameter($token)))
83
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
84
+            ->execute();
85
+
86
+        $data = $result->fetch();
87
+        $result->closeCursor();
88
+        if ($data === false) {
89
+            throw new DoesNotExistException('token does not exist');
90
+        }
91
+        return PublicKeyToken::fromRow($data);
92
+    }
93
+
94
+    /**
95
+     * Get the token for $id
96
+     *
97
+     * @throws DoesNotExistException
98
+     */
99
+    public function getTokenById(int $id): PublicKeyToken {
100
+        /* @var $qb IQueryBuilder */
101
+        $qb = $this->db->getQueryBuilder();
102
+        $result = $qb->select('*')
103
+            ->from($this->tableName)
104
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
105
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
106
+            ->execute();
107
+
108
+        $data = $result->fetch();
109
+        $result->closeCursor();
110
+        if ($data === false) {
111
+            throw new DoesNotExistException('token does not exist');
112
+        }
113
+        return PublicKeyToken::fromRow($data);
114
+    }
115
+
116
+    /**
117
+     * Get all tokens of a user
118
+     *
119
+     * The provider may limit the number of result rows in case of an abuse
120
+     * where a high number of (session) tokens is generated
121
+     *
122
+     * @param string $uid
123
+     * @return PublicKeyToken[]
124
+     */
125
+    public function getTokenByUser(string $uid): array {
126
+        /* @var $qb IQueryBuilder */
127
+        $qb = $this->db->getQueryBuilder();
128
+        $qb->select('*')
129
+            ->from($this->tableName)
130
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
131
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)))
132
+            ->setMaxResults(1000);
133
+        $result = $qb->execute();
134
+        $data = $result->fetchAll();
135
+        $result->closeCursor();
136
+
137
+        $entities = array_map(function ($row) {
138
+            return PublicKeyToken::fromRow($row);
139
+        }, $data);
140
+
141
+        return $entities;
142
+    }
143
+
144
+    public function deleteById(string $uid, int $id) {
145
+        /* @var $qb IQueryBuilder */
146
+        $qb = $this->db->getQueryBuilder();
147
+        $qb->delete($this->tableName)
148
+            ->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
149
+            ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
150
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
151
+        $qb->execute();
152
+    }
153
+
154
+    /**
155
+     * delete all auth token which belong to a specific client if the client was deleted
156
+     *
157
+     * @param string $name
158
+     */
159
+    public function deleteByName(string $name) {
160
+        $qb = $this->db->getQueryBuilder();
161
+        $qb->delete($this->tableName)
162
+            ->where($qb->expr()->eq('name', $qb->createNamedParameter($name), IQueryBuilder::PARAM_STR))
163
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
164
+        $qb->execute();
165
+    }
166
+
167
+    public function deleteTempToken(PublicKeyToken $except) {
168
+        $qb = $this->db->getQueryBuilder();
169
+
170
+        $qb->delete($this->tableName)
171
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($except->getUID())))
172
+            ->andWhere($qb->expr()->eq('type', $qb->createNamedParameter(IToken::TEMPORARY_TOKEN)))
173
+            ->andWhere($qb->expr()->neq('id', $qb->createNamedParameter($except->getId())))
174
+            ->andWhere($qb->expr()->eq('version', $qb->createNamedParameter(PublicKeyToken::VERSION, IQueryBuilder::PARAM_INT)));
175
+
176
+        $qb->execute();
177
+    }
178
+
179
+    public function hasExpiredTokens(string $uid): bool {
180
+        $qb = $this->db->getQueryBuilder();
181
+        $qb->select('*')
182
+            ->from($this->tableName)
183
+            ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid)))
184
+            ->andWhere($qb->expr()->eq('password_invalid', $qb->createNamedParameter(true), IQueryBuilder::PARAM_BOOL))
185
+            ->setMaxResults(1);
186
+
187
+        $cursor = $qb->execute();
188
+        $data = $cursor->fetchAll();
189
+        $cursor->closeCursor();
190
+
191
+        return count($data) === 1;
192
+    }
193
+
194
+    /**
195
+     * Update the last activity timestamp
196
+     *
197
+     * In highly concurrent setups it can happen that two parallel processes
198
+     * trigger the update at (nearly) the same time. In that special case it's
199
+     * not necessary to hit the database with two actual updates. Therefore the
200
+     * target last activity is included in the WHERE clause with a few seconds
201
+     * of tolerance.
202
+     *
203
+     * Example:
204
+     * - process 1 (P1) reads the token at timestamp 1500
205
+     * - process 1 (P2) reads the token at timestamp 1501
206
+     * - activity update interval is 100
207
+     *
208
+     * This means
209
+     *
210
+     * - P1 will see a last_activity smaller than the current time and update
211
+     *   the token row
212
+     * - If P2 reads after P1 had written, it will see 1600 as last activity
213
+     *   and the comparison on last_activity won't be truthy. This means no rows
214
+     *   need to be updated a second time
215
+     * - If P2 reads before P1 had written, it will see 1501 as last activity,
216
+     *   but the comparison on last_activity will still not be truthy and the
217
+     *   token row is not updated a second time
218
+     *
219
+     * @param IToken $token
220
+     * @param int $now
221
+     */
222
+    public function updateActivity(IToken $token, int $now): void {
223
+        $qb = $this->db->getQueryBuilder();
224
+        $update = $qb->update($this->getTableName())
225
+            ->set('last_activity', $qb->createNamedParameter($now, IQueryBuilder::PARAM_INT))
226
+            ->where(
227
+                $qb->expr()->eq('id', $qb->createNamedParameter($token->getId(), IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT),
228
+                $qb->expr()->lt('last_activity', $qb->createNamedParameter($now - 15, IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT)
229
+            );
230
+        $update->executeStatement();
231
+    }
232 232
 }
Please login to merge, or discard this patch.
lib/public/Federation/Exceptions/BadRequestException.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -36,7 +36,7 @@
 block discarded – undo
36 36
 		$l = \OC::$server->getL10N('federation');
37 37
 		$this->parameterList = $missingParameters;
38 38
 		$parameterList = implode(',', $missingParameters);
39
-		$message = 'Parameters missing in order to complete the request. Missing Parameters: ' . $parameterList;
39
+		$message = 'Parameters missing in order to complete the request. Missing Parameters: '.$parameterList;
40 40
 		$hint = $l->t('Parameters missing in order to complete the request. Missing Parameters: "%s"', [$parameterList]);
41 41
 		parent::__construct($message, $hint);
42 42
 	}
Please login to merge, or discard this patch.
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -32,45 +32,45 @@
 block discarded – undo
32 32
  * @since 14.0.0
33 33
  */
34 34
 class BadRequestException extends HintException {
35
-	private $parameterList;
35
+    private $parameterList;
36 36
 
37
-	/**
38
-	 * BadRequestException constructor.
39
-	 *
40
-	 * @since 14.0.0
41
-	 *
42
-	 * @param array $missingParameters
43
-	 */
44
-	public function __construct(array $missingParameters) {
45
-		$l = \OC::$server->getL10N('federation');
46
-		$this->parameterList = $missingParameters;
47
-		$parameterList = implode(',', $missingParameters);
48
-		$message = 'Parameters missing in order to complete the request. Missing Parameters: ' . $parameterList;
49
-		$hint = $l->t('Parameters missing in order to complete the request. Missing Parameters: "%s"', [$parameterList]);
50
-		parent::__construct($message, $hint);
51
-	}
37
+    /**
38
+     * BadRequestException constructor.
39
+     *
40
+     * @since 14.0.0
41
+     *
42
+     * @param array $missingParameters
43
+     */
44
+    public function __construct(array $missingParameters) {
45
+        $l = \OC::$server->getL10N('federation');
46
+        $this->parameterList = $missingParameters;
47
+        $parameterList = implode(',', $missingParameters);
48
+        $message = 'Parameters missing in order to complete the request. Missing Parameters: ' . $parameterList;
49
+        $hint = $l->t('Parameters missing in order to complete the request. Missing Parameters: "%s"', [$parameterList]);
50
+        parent::__construct($message, $hint);
51
+    }
52 52
 
53
-	/**
54
-	 * get array with the return message as defined in the OCM API
55
-	 *
56
-	 * @since 14.0.0
57
-	 *
58
-	 * @return array
59
-	 */
60
-	public function getReturnMessage() {
61
-		$result = [
62
-			'message' => 'RESOURCE_NOT_FOUND',
63
-			'validationErrors' => [
64
-			]
65
-		];
53
+    /**
54
+     * get array with the return message as defined in the OCM API
55
+     *
56
+     * @since 14.0.0
57
+     *
58
+     * @return array
59
+     */
60
+    public function getReturnMessage() {
61
+        $result = [
62
+            'message' => 'RESOURCE_NOT_FOUND',
63
+            'validationErrors' => [
64
+            ]
65
+        ];
66 66
 
67
-		foreach ($this->parameterList as $missingParameter) {
68
-			$result['validationErrors'] = [
69
-				'name' => $missingParameter,
70
-				'message' => 'NOT_FOUND'
71
-			];
72
-		}
67
+        foreach ($this->parameterList as $missingParameter) {
68
+            $result['validationErrors'] = [
69
+                'name' => $missingParameter,
70
+                'message' => 'NOT_FOUND'
71
+            ];
72
+        }
73 73
 
74
-		return $result;
75
-	}
74
+        return $result;
75
+    }
76 76
 }
Please login to merge, or discard this patch.
lib/private/Files/ObjectStore/Azure.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -59,9 +59,9 @@  discard block
 block discarded – undo
59 59
 	private function getBlobClient() {
60 60
 		if (!$this->blobClient) {
61 61
 			$protocol = $this->endpoint ? substr($this->endpoint, 0, strpos($this->endpoint, ':')) : 'https';
62
-			$connectionString = "DefaultEndpointsProtocol=" . $protocol . ";AccountName=" . $this->accountName . ";AccountKey=" . $this->accountKey;
62
+			$connectionString = "DefaultEndpointsProtocol=".$protocol.";AccountName=".$this->accountName.";AccountKey=".$this->accountKey;
63 63
 			if ($this->endpoint) {
64
-				$connectionString .= ';BlobEndpoint=' . $this->endpoint;
64
+				$connectionString .= ';BlobEndpoint='.$this->endpoint;
65 65
 			}
66 66
 			$this->blobClient = BlobRestProxy::createBlobService($connectionString);
67 67
 
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
 	 * @return string the container or bucket name where objects are stored
77 77
 	 */
78 78
 	public function getStorageId() {
79
-		return 'azure::blob::' . $this->containerName;
79
+		return 'azure::blob::'.$this->containerName;
80 80
 	}
81 81
 
82 82
 	/**
Please login to merge, or discard this patch.
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -29,109 +29,109 @@
 block discarded – undo
29 29
 use OCP\Files\ObjectStore\IObjectStore;
30 30
 
31 31
 class Azure implements IObjectStore {
32
-	/** @var string */
33
-	private $containerName;
34
-	/** @var string */
35
-	private $accountName;
36
-	/** @var string */
37
-	private $accountKey;
38
-	/** @var BlobRestProxy|null */
39
-	private $blobClient = null;
40
-	/** @var string|null */
41
-	private $endpoint = null;
42
-	/** @var bool  */
43
-	private $autoCreate = false;
32
+    /** @var string */
33
+    private $containerName;
34
+    /** @var string */
35
+    private $accountName;
36
+    /** @var string */
37
+    private $accountKey;
38
+    /** @var BlobRestProxy|null */
39
+    private $blobClient = null;
40
+    /** @var string|null */
41
+    private $endpoint = null;
42
+    /** @var bool  */
43
+    private $autoCreate = false;
44 44
 
45
-	/**
46
-	 * @param array $parameters
47
-	 */
48
-	public function __construct($parameters) {
49
-		$this->containerName = $parameters['container'];
50
-		$this->accountName = $parameters['account_name'];
51
-		$this->accountKey = $parameters['account_key'];
52
-		if (isset($parameters['endpoint'])) {
53
-			$this->endpoint = $parameters['endpoint'];
54
-		}
55
-		if (isset($parameters['autocreate'])) {
56
-			$this->autoCreate = $parameters['autocreate'];
57
-		}
58
-	}
45
+    /**
46
+     * @param array $parameters
47
+     */
48
+    public function __construct($parameters) {
49
+        $this->containerName = $parameters['container'];
50
+        $this->accountName = $parameters['account_name'];
51
+        $this->accountKey = $parameters['account_key'];
52
+        if (isset($parameters['endpoint'])) {
53
+            $this->endpoint = $parameters['endpoint'];
54
+        }
55
+        if (isset($parameters['autocreate'])) {
56
+            $this->autoCreate = $parameters['autocreate'];
57
+        }
58
+    }
59 59
 
60
-	/**
61
-	 * @return BlobRestProxy
62
-	 */
63
-	private function getBlobClient() {
64
-		if (!$this->blobClient) {
65
-			$protocol = $this->endpoint ? substr($this->endpoint, 0, strpos($this->endpoint, ':')) : 'https';
66
-			$connectionString = "DefaultEndpointsProtocol=" . $protocol . ";AccountName=" . $this->accountName . ";AccountKey=" . $this->accountKey;
67
-			if ($this->endpoint) {
68
-				$connectionString .= ';BlobEndpoint=' . $this->endpoint;
69
-			}
70
-			$this->blobClient = BlobRestProxy::createBlobService($connectionString);
60
+    /**
61
+     * @return BlobRestProxy
62
+     */
63
+    private function getBlobClient() {
64
+        if (!$this->blobClient) {
65
+            $protocol = $this->endpoint ? substr($this->endpoint, 0, strpos($this->endpoint, ':')) : 'https';
66
+            $connectionString = "DefaultEndpointsProtocol=" . $protocol . ";AccountName=" . $this->accountName . ";AccountKey=" . $this->accountKey;
67
+            if ($this->endpoint) {
68
+                $connectionString .= ';BlobEndpoint=' . $this->endpoint;
69
+            }
70
+            $this->blobClient = BlobRestProxy::createBlobService($connectionString);
71 71
 
72
-			if ($this->autoCreate) {
73
-				try {
74
-					$this->blobClient->createContainer($this->containerName);
75
-				} catch (ServiceException $e) {
76
-					if ($e->getCode() === 409) {
77
-						// already exists
78
-					} else {
79
-						throw $e;
80
-					}
81
-				}
82
-			}
83
-		}
84
-		return $this->blobClient;
85
-	}
72
+            if ($this->autoCreate) {
73
+                try {
74
+                    $this->blobClient->createContainer($this->containerName);
75
+                } catch (ServiceException $e) {
76
+                    if ($e->getCode() === 409) {
77
+                        // already exists
78
+                    } else {
79
+                        throw $e;
80
+                    }
81
+                }
82
+            }
83
+        }
84
+        return $this->blobClient;
85
+    }
86 86
 
87
-	/**
88
-	 * @return string the container or bucket name where objects are stored
89
-	 */
90
-	public function getStorageId() {
91
-		return 'azure::blob::' . $this->containerName;
92
-	}
87
+    /**
88
+     * @return string the container or bucket name where objects are stored
89
+     */
90
+    public function getStorageId() {
91
+        return 'azure::blob::' . $this->containerName;
92
+    }
93 93
 
94
-	/**
95
-	 * @param string $urn the unified resource name used to identify the object
96
-	 * @return resource stream with the read data
97
-	 * @throws \Exception when something goes wrong, message will be logged
98
-	 */
99
-	public function readObject($urn) {
100
-		$blob = $this->getBlobClient()->getBlob($this->containerName, $urn);
101
-		return $blob->getContentStream();
102
-	}
94
+    /**
95
+     * @param string $urn the unified resource name used to identify the object
96
+     * @return resource stream with the read data
97
+     * @throws \Exception when something goes wrong, message will be logged
98
+     */
99
+    public function readObject($urn) {
100
+        $blob = $this->getBlobClient()->getBlob($this->containerName, $urn);
101
+        return $blob->getContentStream();
102
+    }
103 103
 
104
-	public function writeObject($urn, $stream, string $mimetype = null) {
105
-		$options = new CreateBlockBlobOptions();
106
-		if ($mimetype) {
107
-			$options->setContentType($mimetype);
108
-		}
109
-		$this->getBlobClient()->createBlockBlob($this->containerName, $urn, $stream, $options);
110
-	}
104
+    public function writeObject($urn, $stream, string $mimetype = null) {
105
+        $options = new CreateBlockBlobOptions();
106
+        if ($mimetype) {
107
+            $options->setContentType($mimetype);
108
+        }
109
+        $this->getBlobClient()->createBlockBlob($this->containerName, $urn, $stream, $options);
110
+    }
111 111
 
112
-	/**
113
-	 * @param string $urn the unified resource name used to identify the object
114
-	 * @return void
115
-	 * @throws \Exception when something goes wrong, message will be logged
116
-	 */
117
-	public function deleteObject($urn) {
118
-		$this->getBlobClient()->deleteBlob($this->containerName, $urn);
119
-	}
112
+    /**
113
+     * @param string $urn the unified resource name used to identify the object
114
+     * @return void
115
+     * @throws \Exception when something goes wrong, message will be logged
116
+     */
117
+    public function deleteObject($urn) {
118
+        $this->getBlobClient()->deleteBlob($this->containerName, $urn);
119
+    }
120 120
 
121
-	public function objectExists($urn) {
122
-		try {
123
-			$this->getBlobClient()->getBlobMetadata($this->containerName, $urn);
124
-			return true;
125
-		} catch (ServiceException $e) {
126
-			if ($e->getCode() === 404) {
127
-				return false;
128
-			} else {
129
-				throw $e;
130
-			}
131
-		}
132
-	}
121
+    public function objectExists($urn) {
122
+        try {
123
+            $this->getBlobClient()->getBlobMetadata($this->containerName, $urn);
124
+            return true;
125
+        } catch (ServiceException $e) {
126
+            if ($e->getCode() === 404) {
127
+                return false;
128
+            } else {
129
+                throw $e;
130
+            }
131
+        }
132
+    }
133 133
 
134
-	public function copyObject($from, $to) {
135
-		$this->getBlobClient()->copyBlob($this->containerName, $to, $this->containerName, $from);
136
-	}
134
+    public function copyObject($from, $to) {
135
+        $this->getBlobClient()->copyBlob($this->containerName, $to, $this->containerName, $from);
136
+    }
137 137
 }
Please login to merge, or discard this patch.
lib/private/Authentication/Token/PublicKeyToken.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -184,7 +184,7 @@
 block discarded – undo
184 184
 		if (is_array($scope)) {
185 185
 			parent::setScope(json_encode($scope));
186 186
 		} else {
187
-			parent::setScope((string)$scope);
187
+			parent::setScope((string) $scope);
188 188
 		}
189 189
 	}
190 190
 
Please login to merge, or discard this patch.
Indentation   +188 added lines, -188 removed lines patch added patch discarded remove patch
@@ -49,192 +49,192 @@
 block discarded – undo
49 49
  * @method setPasswordHash(string $hash)
50 50
  */
51 51
 class PublicKeyToken extends Entity implements INamedToken, IWipeableToken {
52
-	public const VERSION = 2;
53
-
54
-	/** @var string user UID */
55
-	protected $uid;
56
-
57
-	/** @var string login name used for generating the token */
58
-	protected $loginName;
59
-
60
-	/** @var string encrypted user password */
61
-	protected $password;
62
-
63
-	/** @var string hashed user password */
64
-	protected $passwordHash;
65
-
66
-	/** @var string token name (e.g. browser/OS) */
67
-	protected $name;
68
-
69
-	/** @var string */
70
-	protected $token;
71
-
72
-	/** @var int */
73
-	protected $type;
74
-
75
-	/** @var int */
76
-	protected $remember;
77
-
78
-	/** @var int */
79
-	protected $lastActivity;
80
-
81
-	/** @var int */
82
-	protected $lastCheck;
83
-
84
-	/** @var string */
85
-	protected $scope;
86
-
87
-	/** @var int */
88
-	protected $expires;
89
-
90
-	/** @var string */
91
-	protected $privateKey;
92
-
93
-	/** @var string */
94
-	protected $publicKey;
95
-
96
-	/** @var int */
97
-	protected $version;
98
-
99
-	/** @var bool */
100
-	protected $passwordInvalid;
101
-
102
-	public function __construct() {
103
-		$this->addType('uid', 'string');
104
-		$this->addType('loginName', 'string');
105
-		$this->addType('password', 'string');
106
-		$this->addType('passwordHash', 'string');
107
-		$this->addType('name', 'string');
108
-		$this->addType('token', 'string');
109
-		$this->addType('type', 'int');
110
-		$this->addType('remember', 'int');
111
-		$this->addType('lastActivity', 'int');
112
-		$this->addType('lastCheck', 'int');
113
-		$this->addType('scope', 'string');
114
-		$this->addType('expires', 'int');
115
-		$this->addType('publicKey', 'string');
116
-		$this->addType('privateKey', 'string');
117
-		$this->addType('version', 'int');
118
-		$this->addType('passwordInvalid', 'bool');
119
-	}
120
-
121
-	public function getId(): int {
122
-		return $this->id;
123
-	}
124
-
125
-	public function getUID(): string {
126
-		return $this->uid;
127
-	}
128
-
129
-	/**
130
-	 * Get the login name used when generating the token
131
-	 *
132
-	 * @return string
133
-	 */
134
-	public function getLoginName(): string {
135
-		return parent::getLoginName();
136
-	}
137
-
138
-	/**
139
-	 * Get the (encrypted) login password
140
-	 *
141
-	 * @return string|null
142
-	 */
143
-	public function getPassword() {
144
-		return parent::getPassword();
145
-	}
146
-
147
-	public function jsonSerialize(): array {
148
-		return [
149
-			'id' => $this->id,
150
-			'name' => $this->name,
151
-			'lastActivity' => $this->lastActivity,
152
-			'type' => $this->type,
153
-			'scope' => $this->getScopeAsArray()
154
-		];
155
-	}
156
-
157
-	/**
158
-	 * Get the timestamp of the last password check
159
-	 *
160
-	 * @return int
161
-	 */
162
-	public function getLastCheck(): int {
163
-		return parent::getLastCheck();
164
-	}
165
-
166
-	/**
167
-	 * Get the timestamp of the last password check
168
-	 *
169
-	 * @param int $time
170
-	 */
171
-	public function setLastCheck(int $time) {
172
-		parent::setLastCheck($time);
173
-	}
174
-
175
-	public function getScope(): string {
176
-		$scope = parent::getScope();
177
-		if ($scope === null) {
178
-			return '';
179
-		}
180
-
181
-		return $scope;
182
-	}
183
-
184
-	public function getScopeAsArray(): array {
185
-		$scope = json_decode($this->getScope(), true);
186
-		if (!$scope) {
187
-			return [
188
-				'filesystem' => true
189
-			];
190
-		}
191
-		return $scope;
192
-	}
193
-
194
-	public function setScope($scope) {
195
-		if (is_array($scope)) {
196
-			parent::setScope(json_encode($scope));
197
-		} else {
198
-			parent::setScope((string)$scope);
199
-		}
200
-	}
201
-
202
-	public function getName(): string {
203
-		return parent::getName();
204
-	}
205
-
206
-	public function setName(string $name): void {
207
-		parent::setName($name);
208
-	}
209
-
210
-	public function getRemember(): int {
211
-		return parent::getRemember();
212
-	}
213
-
214
-	public function setToken(string $token) {
215
-		parent::setToken($token);
216
-	}
217
-
218
-	public function setPassword(string $password = null) {
219
-		parent::setPassword($password);
220
-	}
221
-
222
-	public function setExpires($expires) {
223
-		parent::setExpires($expires);
224
-	}
225
-
226
-	/**
227
-	 * @return int|null
228
-	 */
229
-	public function getExpires() {
230
-		return parent::getExpires();
231
-	}
232
-
233
-	public function setPasswordInvalid(bool $invalid) {
234
-		parent::setPasswordInvalid($invalid);
235
-	}
236
-
237
-	public function wipe(): void {
238
-		parent::setType(IToken::WIPE_TOKEN);
239
-	}
52
+    public const VERSION = 2;
53
+
54
+    /** @var string user UID */
55
+    protected $uid;
56
+
57
+    /** @var string login name used for generating the token */
58
+    protected $loginName;
59
+
60
+    /** @var string encrypted user password */
61
+    protected $password;
62
+
63
+    /** @var string hashed user password */
64
+    protected $passwordHash;
65
+
66
+    /** @var string token name (e.g. browser/OS) */
67
+    protected $name;
68
+
69
+    /** @var string */
70
+    protected $token;
71
+
72
+    /** @var int */
73
+    protected $type;
74
+
75
+    /** @var int */
76
+    protected $remember;
77
+
78
+    /** @var int */
79
+    protected $lastActivity;
80
+
81
+    /** @var int */
82
+    protected $lastCheck;
83
+
84
+    /** @var string */
85
+    protected $scope;
86
+
87
+    /** @var int */
88
+    protected $expires;
89
+
90
+    /** @var string */
91
+    protected $privateKey;
92
+
93
+    /** @var string */
94
+    protected $publicKey;
95
+
96
+    /** @var int */
97
+    protected $version;
98
+
99
+    /** @var bool */
100
+    protected $passwordInvalid;
101
+
102
+    public function __construct() {
103
+        $this->addType('uid', 'string');
104
+        $this->addType('loginName', 'string');
105
+        $this->addType('password', 'string');
106
+        $this->addType('passwordHash', 'string');
107
+        $this->addType('name', 'string');
108
+        $this->addType('token', 'string');
109
+        $this->addType('type', 'int');
110
+        $this->addType('remember', 'int');
111
+        $this->addType('lastActivity', 'int');
112
+        $this->addType('lastCheck', 'int');
113
+        $this->addType('scope', 'string');
114
+        $this->addType('expires', 'int');
115
+        $this->addType('publicKey', 'string');
116
+        $this->addType('privateKey', 'string');
117
+        $this->addType('version', 'int');
118
+        $this->addType('passwordInvalid', 'bool');
119
+    }
120
+
121
+    public function getId(): int {
122
+        return $this->id;
123
+    }
124
+
125
+    public function getUID(): string {
126
+        return $this->uid;
127
+    }
128
+
129
+    /**
130
+     * Get the login name used when generating the token
131
+     *
132
+     * @return string
133
+     */
134
+    public function getLoginName(): string {
135
+        return parent::getLoginName();
136
+    }
137
+
138
+    /**
139
+     * Get the (encrypted) login password
140
+     *
141
+     * @return string|null
142
+     */
143
+    public function getPassword() {
144
+        return parent::getPassword();
145
+    }
146
+
147
+    public function jsonSerialize(): array {
148
+        return [
149
+            'id' => $this->id,
150
+            'name' => $this->name,
151
+            'lastActivity' => $this->lastActivity,
152
+            'type' => $this->type,
153
+            'scope' => $this->getScopeAsArray()
154
+        ];
155
+    }
156
+
157
+    /**
158
+     * Get the timestamp of the last password check
159
+     *
160
+     * @return int
161
+     */
162
+    public function getLastCheck(): int {
163
+        return parent::getLastCheck();
164
+    }
165
+
166
+    /**
167
+     * Get the timestamp of the last password check
168
+     *
169
+     * @param int $time
170
+     */
171
+    public function setLastCheck(int $time) {
172
+        parent::setLastCheck($time);
173
+    }
174
+
175
+    public function getScope(): string {
176
+        $scope = parent::getScope();
177
+        if ($scope === null) {
178
+            return '';
179
+        }
180
+
181
+        return $scope;
182
+    }
183
+
184
+    public function getScopeAsArray(): array {
185
+        $scope = json_decode($this->getScope(), true);
186
+        if (!$scope) {
187
+            return [
188
+                'filesystem' => true
189
+            ];
190
+        }
191
+        return $scope;
192
+    }
193
+
194
+    public function setScope($scope) {
195
+        if (is_array($scope)) {
196
+            parent::setScope(json_encode($scope));
197
+        } else {
198
+            parent::setScope((string)$scope);
199
+        }
200
+    }
201
+
202
+    public function getName(): string {
203
+        return parent::getName();
204
+    }
205
+
206
+    public function setName(string $name): void {
207
+        parent::setName($name);
208
+    }
209
+
210
+    public function getRemember(): int {
211
+        return parent::getRemember();
212
+    }
213
+
214
+    public function setToken(string $token) {
215
+        parent::setToken($token);
216
+    }
217
+
218
+    public function setPassword(string $password = null) {
219
+        parent::setPassword($password);
220
+    }
221
+
222
+    public function setExpires($expires) {
223
+        parent::setExpires($expires);
224
+    }
225
+
226
+    /**
227
+     * @return int|null
228
+     */
229
+    public function getExpires() {
230
+        return parent::getExpires();
231
+    }
232
+
233
+    public function setPasswordInvalid(bool $invalid) {
234
+        parent::setPasswordInvalid($invalid);
235
+    }
236
+
237
+    public function wipe(): void {
238
+        parent::setType(IToken::WIPE_TOKEN);
239
+    }
240 240
 }
Please login to merge, or discard this patch.
lib/public/IL10N.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -107,7 +107,7 @@
 block discarded – undo
107 107
 	 * @return string language
108 108
 	 * @since 7.0.0
109 109
 	 */
110
-	public function getLanguageCode(): string ;
110
+	public function getLanguageCode(): string;
111 111
 
112 112
 	/**
113 113
 	 * * The code (en_US, fr_CA, ...) of the locale that is used for this IL10N object
Please login to merge, or discard this patch.
Indentation   +68 added lines, -68 removed lines patch added patch discarded remove patch
@@ -43,77 +43,77 @@
 block discarded – undo
43 43
  * @since 6.0.0
44 44
  */
45 45
 interface IL10N {
46
-	/**
47
-	 * Translating
48
-	 * @param string $text The text we need a translation for
49
-	 * @param array|string $parameters default:array() Parameters for sprintf
50
-	 * @return string Translation or the same text
51
-	 *
52
-	 * Returns the translation. If no translation is found, $text will be
53
-	 * returned.
54
-	 * @since 6.0.0
55
-	 */
56
-	public function t(string $text, $parameters = []): string;
46
+    /**
47
+     * Translating
48
+     * @param string $text The text we need a translation for
49
+     * @param array|string $parameters default:array() Parameters for sprintf
50
+     * @return string Translation or the same text
51
+     *
52
+     * Returns the translation. If no translation is found, $text will be
53
+     * returned.
54
+     * @since 6.0.0
55
+     */
56
+    public function t(string $text, $parameters = []): string;
57 57
 
58
-	/**
59
-	 * Translating
60
-	 * @param string $text_singular the string to translate for exactly one object
61
-	 * @param string $text_plural the string to translate for n objects
62
-	 * @param integer $count Number of objects
63
-	 * @param array $parameters default:array() Parameters for sprintf
64
-	 * @return string Translation or the same text
65
-	 *
66
-	 * Returns the translation. If no translation is found, $text will be
67
-	 * returned. %n will be replaced with the number of objects.
68
-	 *
69
-	 * The correct plural is determined by the plural_forms-function
70
-	 * provided by the po file.
71
-	 * @since 6.0.0
72
-	 *
73
-	 */
74
-	public function n(string $text_singular, string $text_plural, int $count, array $parameters = []): string;
58
+    /**
59
+     * Translating
60
+     * @param string $text_singular the string to translate for exactly one object
61
+     * @param string $text_plural the string to translate for n objects
62
+     * @param integer $count Number of objects
63
+     * @param array $parameters default:array() Parameters for sprintf
64
+     * @return string Translation or the same text
65
+     *
66
+     * Returns the translation. If no translation is found, $text will be
67
+     * returned. %n will be replaced with the number of objects.
68
+     *
69
+     * The correct plural is determined by the plural_forms-function
70
+     * provided by the po file.
71
+     * @since 6.0.0
72
+     *
73
+     */
74
+    public function n(string $text_singular, string $text_plural, int $count, array $parameters = []): string;
75 75
 
76
-	/**
77
-	 * Localization
78
-	 * @param string $type Type of localization
79
-	 * @param \DateTime|int|string $data parameters for this localization
80
-	 * @param array $options currently supports following options:
81
-	 * 			- 'width': handed into \Punic\Calendar::formatDate as second parameter
82
-	 * @return string|int|false
83
-	 *
84
-	 * Returns the localized data.
85
-	 *
86
-	 * Implemented types:
87
-	 *  - date
88
-	 *    - Creates a date
89
-	 *    - l10n-field: date
90
-	 *    - params: timestamp (int/string)
91
-	 *  - datetime
92
-	 *    - Creates date and time
93
-	 *    - l10n-field: datetime
94
-	 *    - params: timestamp (int/string)
95
-	 *  - time
96
-	 *    - Creates a time
97
-	 *    - l10n-field: time
98
-	 *    - params: timestamp (int/string)
99
-	 * @since 6.0.0 - parameter $options was added in 8.0.0
100
-	 */
101
-	public function l(string $type, $data, array $options = []);
76
+    /**
77
+     * Localization
78
+     * @param string $type Type of localization
79
+     * @param \DateTime|int|string $data parameters for this localization
80
+     * @param array $options currently supports following options:
81
+     * 			- 'width': handed into \Punic\Calendar::formatDate as second parameter
82
+     * @return string|int|false
83
+     *
84
+     * Returns the localized data.
85
+     *
86
+     * Implemented types:
87
+     *  - date
88
+     *    - Creates a date
89
+     *    - l10n-field: date
90
+     *    - params: timestamp (int/string)
91
+     *  - datetime
92
+     *    - Creates date and time
93
+     *    - l10n-field: datetime
94
+     *    - params: timestamp (int/string)
95
+     *  - time
96
+     *    - Creates a time
97
+     *    - l10n-field: time
98
+     *    - params: timestamp (int/string)
99
+     * @since 6.0.0 - parameter $options was added in 8.0.0
100
+     */
101
+    public function l(string $type, $data, array $options = []);
102 102
 
103 103
 
104
-	/**
105
-	 * The code (en, de, ...) of the language that is used for this IL10N object
106
-	 *
107
-	 * @return string language
108
-	 * @since 7.0.0
109
-	 */
110
-	public function getLanguageCode(): string ;
104
+    /**
105
+     * The code (en, de, ...) of the language that is used for this IL10N object
106
+     *
107
+     * @return string language
108
+     * @since 7.0.0
109
+     */
110
+    public function getLanguageCode(): string ;
111 111
 
112
-	/**
113
-	 * * The code (en_US, fr_CA, ...) of the locale that is used for this IL10N object
114
-	 *
115
-	 * @return string locale
116
-	 * @since 14.0.0
117
-	 */
118
-	public function getLocaleCode(): string;
112
+    /**
113
+     * * The code (en_US, fr_CA, ...) of the locale that is used for this IL10N object
114
+     *
115
+     * @return string locale
116
+     * @since 14.0.0
117
+     */
118
+    public function getLocaleCode(): string;
119 119
 }
Please login to merge, or discard this patch.
lib/private/Updater/ChangesResult.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -40,22 +40,22 @@
 block discarded – undo
40 40
  * @method void setData(string $data)
41 41
  */
42 42
 class ChangesResult extends Entity {
43
-	/** @var string */
44
-	protected $version = '';
43
+    /** @var string */
44
+    protected $version = '';
45 45
 
46
-	/** @var string */
47
-	protected $etag = '';
46
+    /** @var string */
47
+    protected $etag = '';
48 48
 
49
-	/** @var int */
50
-	protected $lastCheck = 0;
49
+    /** @var int */
50
+    protected $lastCheck = 0;
51 51
 
52
-	/** @var string */
53
-	protected $data = '';
52
+    /** @var string */
53
+    protected $data = '';
54 54
 
55
-	public function __construct() {
56
-		$this->addType('version', 'string');
57
-		$this->addType('etag', 'string');
58
-		$this->addType('lastCheck', 'int');
59
-		$this->addType('data', 'string');
60
-	}
55
+    public function __construct() {
56
+        $this->addType('version', 'string');
57
+        $this->addType('etag', 'string');
58
+        $this->addType('lastCheck', 'int');
59
+        $this->addType('data', 'string');
60
+    }
61 61
 }
Please login to merge, or discard this patch.