Passed
Push — master ( 2911df...737931 )
by Joas
14:09 queued 12s
created
lib/public/Group/Backend/ICountDisabledInGroup.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -29,8 +29,8 @@
 block discarded – undo
29 29
  */
30 30
 interface ICountDisabledInGroup {
31 31
 
32
-	/**
33
-	 * @since 14.0.0
34
-	 */
35
-	public function countDisabledInGroup(string $gid): int;
32
+    /**
33
+     * @since 14.0.0
34
+     */
35
+    public function countDisabledInGroup(string $gid): int;
36 36
 }
Please login to merge, or discard this patch.
core/Migrations/Version14000Date20180516101403.php 1 patch
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -29,28 +29,28 @@
 block discarded – undo
29 29
 
30 30
 class Version14000Date20180516101403 extends SimpleMigrationStep {
31 31
 
32
-	/**
33
-	 * @param IOutput $output
34
-	 * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
35
-	 * @param array $options
36
-	 * @return null|ISchemaWrapper
37
-	 */
38
-	public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
39
-		/** @var ISchemaWrapper $schema */
40
-		$schema = $schemaClosure();
32
+    /**
33
+     * @param IOutput $output
34
+     * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
35
+     * @param array $options
36
+     * @return null|ISchemaWrapper
37
+     */
38
+    public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
39
+        /** @var ISchemaWrapper $schema */
40
+        $schema = $schemaClosure();
41 41
 
42
-		$table = $schema->getTable('authtoken');
42
+        $table = $schema->getTable('authtoken');
43 43
 
44
-		if (!$table->hasColumn('expires')) {
45
-			$table->addColumn('expires', 'integer', [
46
-				'notnull' => false,
47
-				'length' => 4,
48
-				'default' => null,
49
-				'unsigned' => true,
50
-			]);
44
+        if (!$table->hasColumn('expires')) {
45
+            $table->addColumn('expires', 'integer', [
46
+                'notnull' => false,
47
+                'length' => 4,
48
+                'default' => null,
49
+                'unsigned' => true,
50
+            ]);
51 51
 
52
-			return $schema;
53
-		}
54
-		return null;
55
-	}
52
+            return $schema;
53
+        }
54
+        return null;
55
+    }
56 56
 }
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/Federation/CloudFederationFactory.php 1 patch
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -27,37 +27,37 @@
 block discarded – undo
27 27
 
28 28
 class CloudFederationFactory implements ICloudFederationFactory {
29 29
 
30
-	/**
31
-	 * get a CloudFederationShare Object to prepare a share you want to send
32
-	 *
33
-	 * @param string $shareWith
34
-	 * @param string $name resource name (e.g. document.odt)
35
-	 * @param string $description share description (optional)
36
-	 * @param string $providerId resource UID on the provider side
37
-	 * @param string $owner provider specific UID of the user who owns the resource
38
-	 * @param string $ownerDisplayName display name of the user who shared the item
39
-	 * @param string $sharedBy provider specific UID of the user who shared the resource
40
-	 * @param string $sharedByDisplayName display name of the user who shared the resource
41
-	 * @param string $sharedSecret used to authenticate requests across servers
42
-	 * @param string $shareType ('group' or 'user' share)
43
-	 * @param $resourceType ('file', 'calendar',...)
44
-	 * @return ICloudFederationShare
45
-	 *
46
-	 * @since 14.0.0
47
-	 */
48
-	public function getCloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $sharedSecret, $shareType, $resourceType) {
49
-		return new CloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $shareType, $resourceType, $sharedSecret);
50
-	}
30
+    /**
31
+     * get a CloudFederationShare Object to prepare a share you want to send
32
+     *
33
+     * @param string $shareWith
34
+     * @param string $name resource name (e.g. document.odt)
35
+     * @param string $description share description (optional)
36
+     * @param string $providerId resource UID on the provider side
37
+     * @param string $owner provider specific UID of the user who owns the resource
38
+     * @param string $ownerDisplayName display name of the user who shared the item
39
+     * @param string $sharedBy provider specific UID of the user who shared the resource
40
+     * @param string $sharedByDisplayName display name of the user who shared the resource
41
+     * @param string $sharedSecret used to authenticate requests across servers
42
+     * @param string $shareType ('group' or 'user' share)
43
+     * @param $resourceType ('file', 'calendar',...)
44
+     * @return ICloudFederationShare
45
+     *
46
+     * @since 14.0.0
47
+     */
48
+    public function getCloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $sharedSecret, $shareType, $resourceType) {
49
+        return new CloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $shareType, $resourceType, $sharedSecret);
50
+    }
51 51
 
52
-	/**
53
-	 * get a Cloud FederationNotification object to prepare a notification you
54
-	 * want to send
55
-	 *
56
-	 * @return ICloudFederationNotification
57
-	 *
58
-	 * @since 14.0.0
59
-	 */
60
-	public function getCloudFederationNotification() {
61
-		return new CloudFederationNotification();
62
-	}
52
+    /**
53
+     * get a Cloud FederationNotification object to prepare a notification you
54
+     * want to send
55
+     *
56
+     * @return ICloudFederationNotification
57
+     *
58
+     * @since 14.0.0
59
+     */
60
+    public function getCloudFederationNotification() {
61
+        return new CloudFederationNotification();
62
+    }
63 63
 }
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.
apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php 2 patches
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -35,31 +35,31 @@
 block discarded – undo
35 35
  */
36 36
 class RSAPrivateKey extends AuthMechanism {
37 37
 
38
-	/** @var IConfig */
39
-	private $config;
38
+    /** @var IConfig */
39
+    private $config;
40 40
 
41
-	public function __construct(IL10N $l, IConfig $config) {
42
-		$this->config = $config;
41
+    public function __construct(IL10N $l, IConfig $config) {
42
+        $this->config = $config;
43 43
 
44
-		$this
45
-			->setIdentifier('publickey::rsa_private')
46
-			->setScheme(self::SCHEME_PUBLICKEY)
47
-			->setText($l->t('RSA private key'))
48
-			->addParameters([
49
-				new DefinitionParameter('user', $l->t('Username')),
50
-				(new DefinitionParameter('password', $l->t('Password')))
51
-					->setFlag(DefinitionParameter::FLAG_OPTIONAL)
52
-					->setType(DefinitionParameter::VALUE_PASSWORD),
53
-				new DefinitionParameter('private_key', $l->t('Private key')),
54
-			]);
55
-	}
44
+        $this
45
+            ->setIdentifier('publickey::rsa_private')
46
+            ->setScheme(self::SCHEME_PUBLICKEY)
47
+            ->setText($l->t('RSA private key'))
48
+            ->addParameters([
49
+                new DefinitionParameter('user', $l->t('Username')),
50
+                (new DefinitionParameter('password', $l->t('Password')))
51
+                    ->setFlag(DefinitionParameter::FLAG_OPTIONAL)
52
+                    ->setType(DefinitionParameter::VALUE_PASSWORD),
53
+                new DefinitionParameter('private_key', $l->t('Private key')),
54
+            ]);
55
+    }
56 56
 
57
-	public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = null) {
58
-		$auth = new RSACrypt();
59
-		$auth->setPassword($this->config->getSystemValue('secret', ''));
60
-		if (!$auth->loadKey($storage->getBackendOption('private_key'))) {
61
-			throw new \RuntimeException('unable to load private key');
62
-		}
63
-		$storage->setBackendOption('public_key_auth', $auth);
64
-	}
57
+    public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = null) {
58
+        $auth = new RSACrypt();
59
+        $auth->setPassword($this->config->getSystemValue('secret', ''));
60
+        if (!$auth->loadKey($storage->getBackendOption('private_key'))) {
61
+            throw new \RuntimeException('unable to load private key');
62
+        }
63
+        $storage->setBackendOption('public_key_auth', $auth);
64
+    }
65 65
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@
 block discarded – undo
54 54
 			]);
55 55
 	}
56 56
 
57
-	public function manipulateStorageConfig(StorageConfig &$storage, IUser $user = null) {
57
+	public function manipulateStorageConfig(StorageConfig & $storage, IUser $user = null) {
58 58
 		$auth = new RSACrypt();
59 59
 		$auth->setPassword($this->config->getSystemValue('secret', ''));
60 60
 		if (!$auth->loadKey($storage->getBackendOption('private_key'))) {
Please login to merge, or discard this patch.