Passed
Push — master ( 8555d5...a51f0d )
by John
14:05 queued 13s
created
apps/comments/lib/Notification/Listener.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -90,7 +90,7 @@
 block discarded – undo
90 90
 		$notification
91 91
 			->setApp('comments')
92 92
 			->setObject('comment', $comment->getId())
93
-			->setSubject('mention', [ $comment->getObjectType(), $comment->getObjectId() ])
93
+			->setSubject('mention', [$comment->getObjectType(), $comment->getObjectId()])
94 94
 			->setDateTime($comment->getCreationDateTime());
95 95
 
96 96
 		return $notification;
Please login to merge, or discard this patch.
Indentation   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -30,85 +30,85 @@
 block discarded – undo
30 30
 
31 31
 class Listener {
32 32
 
33
-	protected IManager $notificationManager;
34
-	protected IUserManager $userManager;
33
+    protected IManager $notificationManager;
34
+    protected IUserManager $userManager;
35 35
 
36
-	/**
37
-	 * Listener constructor.
38
-	 */
39
-	public function __construct(
40
-		IManager $notificationManager,
41
-		IUserManager $userManager
42
-	) {
43
-		$this->notificationManager = $notificationManager;
44
-		$this->userManager = $userManager;
45
-	}
36
+    /**
37
+     * Listener constructor.
38
+     */
39
+    public function __construct(
40
+        IManager $notificationManager,
41
+        IUserManager $userManager
42
+    ) {
43
+        $this->notificationManager = $notificationManager;
44
+        $this->userManager = $userManager;
45
+    }
46 46
 
47
-	/**
48
-	 * @param CommentsEvent $event
49
-	 */
50
-	public function evaluate(CommentsEvent $event) {
51
-		$comment = $event->getComment();
47
+    /**
48
+     * @param CommentsEvent $event
49
+     */
50
+    public function evaluate(CommentsEvent $event) {
51
+        $comment = $event->getComment();
52 52
 
53
-		$mentions = $this->extractMentions($comment->getMentions());
54
-		if (empty($mentions)) {
55
-			// no one to notify
56
-			return;
57
-		}
53
+        $mentions = $this->extractMentions($comment->getMentions());
54
+        if (empty($mentions)) {
55
+            // no one to notify
56
+            return;
57
+        }
58 58
 
59
-		$notification = $this->instantiateNotification($comment);
59
+        $notification = $this->instantiateNotification($comment);
60 60
 
61
-		foreach ($mentions as $uid) {
62
-			if (($comment->getActorType() === 'users' && $uid === $comment->getActorId())
63
-				|| !$this->userManager->userExists($uid)
64
-			) {
65
-				// do not notify unknown users or yourself
66
-				continue;
67
-			}
61
+        foreach ($mentions as $uid) {
62
+            if (($comment->getActorType() === 'users' && $uid === $comment->getActorId())
63
+                || !$this->userManager->userExists($uid)
64
+            ) {
65
+                // do not notify unknown users or yourself
66
+                continue;
67
+            }
68 68
 
69
-			$notification->setUser($uid);
70
-			if ($event->getEvent() === CommentsEvent::EVENT_DELETE
71
-				|| $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) {
72
-				$this->notificationManager->markProcessed($notification);
73
-			} else {
74
-				$this->notificationManager->notify($notification);
75
-			}
76
-		}
77
-	}
69
+            $notification->setUser($uid);
70
+            if ($event->getEvent() === CommentsEvent::EVENT_DELETE
71
+                || $event->getEvent() === CommentsEvent::EVENT_PRE_UPDATE) {
72
+                $this->notificationManager->markProcessed($notification);
73
+            } else {
74
+                $this->notificationManager->notify($notification);
75
+            }
76
+        }
77
+    }
78 78
 
79
-	/**
80
-	 * creates a notification instance and fills it with comment data
81
-	 *
82
-	 * @param IComment $comment
83
-	 * @return \OCP\Notification\INotification
84
-	 */
85
-	public function instantiateNotification(IComment $comment) {
86
-		$notification = $this->notificationManager->createNotification();
87
-		$notification
88
-			->setApp('comments')
89
-			->setObject('comment', $comment->getId())
90
-			->setSubject('mention', [ $comment->getObjectType(), $comment->getObjectId() ])
91
-			->setDateTime($comment->getCreationDateTime());
79
+    /**
80
+     * creates a notification instance and fills it with comment data
81
+     *
82
+     * @param IComment $comment
83
+     * @return \OCP\Notification\INotification
84
+     */
85
+    public function instantiateNotification(IComment $comment) {
86
+        $notification = $this->notificationManager->createNotification();
87
+        $notification
88
+            ->setApp('comments')
89
+            ->setObject('comment', $comment->getId())
90
+            ->setSubject('mention', [ $comment->getObjectType(), $comment->getObjectId() ])
91
+            ->setDateTime($comment->getCreationDateTime());
92 92
 
93
-		return $notification;
94
-	}
93
+        return $notification;
94
+    }
95 95
 
96
-	/**
97
-	 * flattens the mention array returned from comments to a list of user ids.
98
-	 *
99
-	 * @param array $mentions
100
-	 * @return string[] containing the mentions, e.g. ['alice', 'bob']
101
-	 */
102
-	public function extractMentions(array $mentions) {
103
-		if (empty($mentions)) {
104
-			return [];
105
-		}
106
-		$uids = [];
107
-		foreach ($mentions as $mention) {
108
-			if ($mention['type'] === 'user') {
109
-				$uids[] = $mention['id'];
110
-			}
111
-		}
112
-		return $uids;
113
-	}
96
+    /**
97
+     * flattens the mention array returned from comments to a list of user ids.
98
+     *
99
+     * @param array $mentions
100
+     * @return string[] containing the mentions, e.g. ['alice', 'bob']
101
+     */
102
+    public function extractMentions(array $mentions) {
103
+        if (empty($mentions)) {
104
+            return [];
105
+        }
106
+        $uids = [];
107
+        foreach ($mentions as $mention) {
108
+            if ($mention['type'] === 'user') {
109
+                $uids[] = $mention['id'];
110
+            }
111
+        }
112
+        return $uids;
113
+    }
114 114
 }
Please login to merge, or discard this patch.
apps/comments/lib/EventHandler.php 1 patch
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -36,56 +36,56 @@
 block discarded – undo
36 36
  * @package OCA\Comments
37 37
  */
38 38
 class EventHandler implements ICommentsEventHandler {
39
-	/** @var ActivityListener */
40
-	private $activityListener;
39
+    /** @var ActivityListener */
40
+    private $activityListener;
41 41
 
42
-	/** @var NotificationListener */
43
-	private $notificationListener;
42
+    /** @var NotificationListener */
43
+    private $notificationListener;
44 44
 
45
-	public function __construct(ActivityListener $activityListener, NotificationListener $notificationListener) {
46
-		$this->activityListener = $activityListener;
47
-		$this->notificationListener = $notificationListener;
48
-	}
45
+    public function __construct(ActivityListener $activityListener, NotificationListener $notificationListener) {
46
+        $this->activityListener = $activityListener;
47
+        $this->notificationListener = $notificationListener;
48
+    }
49 49
 
50
-	/**
51
-	 * @param CommentsEvent $event
52
-	 */
53
-	public function handle(CommentsEvent $event) {
54
-		if ($event->getComment()->getObjectType() !== 'files') {
55
-			// this is a 'files'-specific Handler
56
-			return;
57
-		}
50
+    /**
51
+     * @param CommentsEvent $event
52
+     */
53
+    public function handle(CommentsEvent $event) {
54
+        if ($event->getComment()->getObjectType() !== 'files') {
55
+            // this is a 'files'-specific Handler
56
+            return;
57
+        }
58 58
 
59
-		$eventType = $event->getEvent();
60
-		if ($eventType === CommentsEvent::EVENT_ADD
61
-		) {
62
-			$this->notificationHandler($event);
63
-			$this->activityHandler($event);
64
-			return;
65
-		}
59
+        $eventType = $event->getEvent();
60
+        if ($eventType === CommentsEvent::EVENT_ADD
61
+        ) {
62
+            $this->notificationHandler($event);
63
+            $this->activityHandler($event);
64
+            return;
65
+        }
66 66
 
67
-		$applicableEvents = [
68
-			CommentsEvent::EVENT_PRE_UPDATE,
69
-			CommentsEvent::EVENT_UPDATE,
70
-			CommentsEvent::EVENT_DELETE,
71
-		];
72
-		if (in_array($eventType, $applicableEvents)) {
73
-			$this->notificationHandler($event);
74
-			return;
75
-		}
76
-	}
67
+        $applicableEvents = [
68
+            CommentsEvent::EVENT_PRE_UPDATE,
69
+            CommentsEvent::EVENT_UPDATE,
70
+            CommentsEvent::EVENT_DELETE,
71
+        ];
72
+        if (in_array($eventType, $applicableEvents)) {
73
+            $this->notificationHandler($event);
74
+            return;
75
+        }
76
+    }
77 77
 
78
-	/**
79
-	 * @param CommentsEvent $event
80
-	 */
81
-	private function activityHandler(CommentsEvent $event) {
82
-		$this->activityListener->commentEvent($event);
83
-	}
78
+    /**
79
+     * @param CommentsEvent $event
80
+     */
81
+    private function activityHandler(CommentsEvent $event) {
82
+        $this->activityListener->commentEvent($event);
83
+    }
84 84
 
85
-	/**
86
-	 * @param CommentsEvent $event
87
-	 */
88
-	private function notificationHandler(CommentsEvent $event) {
89
-		$this->notificationListener->evaluate($event);
90
-	}
85
+    /**
86
+     * @param CommentsEvent $event
87
+     */
88
+    private function notificationHandler(CommentsEvent $event) {
89
+        $this->notificationListener->evaluate($event);
90
+    }
91 91
 }
Please login to merge, or discard this patch.
apps/user_ldap/lib/User_Proxy.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -197,7 +197,7 @@  discard block
 block discarded – undo
197 197
 	 * @return string|false
198 198
 	 */
199 199
 	public function loginName2UserName($loginName) {
200
-		$id = 'LOGINNAME,' . $loginName;
200
+		$id = 'LOGINNAME,'.$loginName;
201 201
 		return $this->handleRequest($id, 'loginName2UserName', [$loginName]);
202 202
 	}
203 203
 	
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
 	 * @return string|false with the username
209 209
 	 */
210 210
 	public function dn2UserName($dn) {
211
-		$id = 'DN,' . $dn;
211
+		$id = 'DN,'.$dn;
212 212
 		return $this->handleRequest($id, 'dn2UserName', [$dn]);
213 213
 	}
214 214
 
Please login to merge, or discard this patch.
Indentation   +395 added lines, -395 removed lines patch added patch discarded remove patch
@@ -41,399 +41,399 @@
 block discarded – undo
41 41
 use OCP\UserInterface;
42 42
 
43 43
 class User_Proxy extends Proxy implements IUserBackend, UserInterface, IUserLDAP, ICountUsersBackend, ICountMappedUsersBackend {
44
-	private $backends = [];
45
-	/** @var User_LDAP */
46
-	private $refBackend = null;
47
-
48
-	private bool $isSetUp = false;
49
-	private Helper $helper;
50
-	private IConfig $ocConfig;
51
-	private INotificationManager $notificationManager;
52
-	private IUserSession $userSession;
53
-	private UserPluginManager $userPluginManager;
54
-
55
-	public function __construct(
56
-		Helper $helper,
57
-		ILDAPWrapper $ldap,
58
-		IConfig $ocConfig,
59
-		INotificationManager $notificationManager,
60
-		IUserSession $userSession,
61
-		UserPluginManager $userPluginManager
62
-	) {
63
-		parent::__construct($ldap);
64
-		$this->helper = $helper;
65
-		$this->ocConfig = $ocConfig;
66
-		$this->notificationManager = $notificationManager;
67
-		$this->userSession = $userSession;
68
-		$this->userPluginManager = $userPluginManager;
69
-	}
70
-
71
-	protected function setup(): void {
72
-		if ($this->isSetUp) {
73
-			return;
74
-		}
75
-
76
-		$serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
77
-		foreach ($serverConfigPrefixes as $configPrefix) {
78
-			$this->backends[$configPrefix] =
79
-				new User_LDAP($this->getAccess($configPrefix), $this->ocConfig, $this->notificationManager, $this->userSession, $this->userPluginManager);
80
-
81
-			if (is_null($this->refBackend)) {
82
-				$this->refBackend = &$this->backends[$configPrefix];
83
-			}
84
-		}
85
-
86
-		$this->isSetUp = true;
87
-	}
88
-
89
-	/**
90
-	 * Tries the backends one after the other until a positive result is returned from the specified method
91
-	 *
92
-	 * @param string $id the uid connected to the request
93
-	 * @param string $method the method of the user backend that shall be called
94
-	 * @param array $parameters an array of parameters to be passed
95
-	 * @return mixed the result of the method or false
96
-	 */
97
-	protected function walkBackends($id, $method, $parameters) {
98
-		$this->setup();
99
-
100
-		$uid = $id;
101
-		$cacheKey = $this->getUserCacheKey($uid);
102
-		foreach ($this->backends as $configPrefix => $backend) {
103
-			$instance = $backend;
104
-			if (!method_exists($instance, $method)
105
-				&& method_exists($this->getAccess($configPrefix), $method)) {
106
-				$instance = $this->getAccess($configPrefix);
107
-			}
108
-			if ($result = call_user_func_array([$instance, $method], $parameters)) {
109
-				if (!$this->isSingleBackend()) {
110
-					$this->writeToCache($cacheKey, $configPrefix);
111
-				}
112
-				return $result;
113
-			}
114
-		}
115
-		return false;
116
-	}
117
-
118
-	/**
119
-	 * Asks the backend connected to the server that supposely takes care of the uid from the request.
120
-	 *
121
-	 * @param string $id the uid connected to the request
122
-	 * @param string $method the method of the user backend that shall be called
123
-	 * @param array $parameters an array of parameters to be passed
124
-	 * @param mixed $passOnWhen the result matches this variable
125
-	 * @return mixed the result of the method or false
126
-	 */
127
-	protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen) {
128
-		$this->setup();
129
-
130
-		$uid = $id;
131
-		$cacheKey = $this->getUserCacheKey($uid);
132
-		$prefix = $this->getFromCache($cacheKey);
133
-		//in case the uid has been found in the past, try this stored connection first
134
-		if (!is_null($prefix)) {
135
-			if (isset($this->backends[$prefix])) {
136
-				$instance = $this->backends[$prefix];
137
-				if (!method_exists($instance, $method)
138
-					&& method_exists($this->getAccess($prefix), $method)) {
139
-					$instance = $this->getAccess($prefix);
140
-				}
141
-				$result = call_user_func_array([$instance, $method], $parameters);
142
-				if ($result === $passOnWhen) {
143
-					//not found here, reset cache to null if user vanished
144
-					//because sometimes methods return false with a reason
145
-					$userExists = call_user_func_array(
146
-						[$this->backends[$prefix], 'userExistsOnLDAP'],
147
-						[$uid]
148
-					);
149
-					if (!$userExists) {
150
-						$this->writeToCache($cacheKey, null);
151
-					}
152
-				}
153
-				return $result;
154
-			}
155
-		}
156
-		return false;
157
-	}
158
-
159
-	protected function activeBackends(): int {
160
-		$this->setup();
161
-		return count($this->backends);
162
-	}
163
-
164
-	/**
165
-	 * Check if backend implements actions
166
-	 *
167
-	 * @param int $actions bitwise-or'ed actions
168
-	 * @return boolean
169
-	 *
170
-	 * Returns the supported actions as int to be
171
-	 * compared with \OC\User\Backend::CREATE_USER etc.
172
-	 */
173
-	public function implementsActions($actions) {
174
-		$this->setup();
175
-		//it's the same across all our user backends obviously
176
-		return $this->refBackend->implementsActions($actions);
177
-	}
178
-
179
-	/**
180
-	 * Backend name to be shown in user management
181
-	 *
182
-	 * @return string the name of the backend to be shown
183
-	 */
184
-	public function getBackendName() {
185
-		$this->setup();
186
-		return $this->refBackend->getBackendName();
187
-	}
188
-
189
-	/**
190
-	 * Get a list of all users
191
-	 *
192
-	 * @param string $search
193
-	 * @param null|int $limit
194
-	 * @param null|int $offset
195
-	 * @return string[] an array of all uids
196
-	 */
197
-	public function getUsers($search = '', $limit = 10, $offset = 0) {
198
-		$this->setup();
199
-
200
-		//we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
201
-		$users = [];
202
-		foreach ($this->backends as $backend) {
203
-			$backendUsers = $backend->getUsers($search, $limit, $offset);
204
-			if (is_array($backendUsers)) {
205
-				$users = array_merge($users, $backendUsers);
206
-			}
207
-		}
208
-		return $users;
209
-	}
210
-
211
-	/**
212
-	 * check if a user exists
213
-	 *
214
-	 * @param string $uid the username
215
-	 * @return boolean
216
-	 */
217
-	public function userExists($uid) {
218
-		$existsOnLDAP = false;
219
-		$existsLocally = $this->handleRequest($uid, 'userExists', [$uid]);
220
-		if ($existsLocally) {
221
-			$existsOnLDAP = $this->userExistsOnLDAP($uid);
222
-		}
223
-		if ($existsLocally && !$existsOnLDAP) {
224
-			try {
225
-				$user = $this->getLDAPAccess($uid)->userManager->get($uid);
226
-				if ($user instanceof User) {
227
-					$user->markUser();
228
-				}
229
-			} catch (\Exception $e) {
230
-				// ignore
231
-			}
232
-		}
233
-		return $existsLocally;
234
-	}
235
-
236
-	/**
237
-	 * check if a user exists on LDAP
238
-	 *
239
-	 * @param string|\OCA\User_LDAP\User\User $user either the Nextcloud user
240
-	 * name or an instance of that user
241
-	 */
242
-	public function userExistsOnLDAP($user, bool $ignoreCache = false): bool {
243
-		$id = ($user instanceof User) ? $user->getUsername() : $user;
244
-		return $this->handleRequest($id, 'userExistsOnLDAP', [$user, $ignoreCache]);
245
-	}
246
-
247
-	/**
248
-	 * Check if the password is correct
249
-	 *
250
-	 * @param string $uid The username
251
-	 * @param string $password The password
252
-	 * @return bool
253
-	 *
254
-	 * Check if the password is correct without logging in the user
255
-	 */
256
-	public function checkPassword($uid, $password) {
257
-		return $this->handleRequest($uid, 'checkPassword', [$uid, $password]);
258
-	}
259
-
260
-	/**
261
-	 * returns the username for the given login name, if available
262
-	 *
263
-	 * @param string $loginName
264
-	 * @return string|false
265
-	 */
266
-	public function loginName2UserName($loginName) {
267
-		$id = 'LOGINNAME,' . $loginName;
268
-		return $this->handleRequest($id, 'loginName2UserName', [$loginName]);
269
-	}
270
-
271
-	/**
272
-	 * returns the username for the given LDAP DN, if available
273
-	 *
274
-	 * @param string $dn
275
-	 * @return string|false with the username
276
-	 */
277
-	public function dn2UserName($dn) {
278
-		$id = 'DN,' . $dn;
279
-		return $this->handleRequest($id, 'dn2UserName', [$dn]);
280
-	}
281
-
282
-	/**
283
-	 * get the user's home directory
284
-	 *
285
-	 * @param string $uid the username
286
-	 * @return boolean
287
-	 */
288
-	public function getHome($uid) {
289
-		return $this->handleRequest($uid, 'getHome', [$uid]);
290
-	}
291
-
292
-	/**
293
-	 * get display name of the user
294
-	 *
295
-	 * @param string $uid user ID of the user
296
-	 * @return string display name
297
-	 */
298
-	public function getDisplayName($uid) {
299
-		return $this->handleRequest($uid, 'getDisplayName', [$uid]);
300
-	}
301
-
302
-	/**
303
-	 * set display name of the user
304
-	 *
305
-	 * @param string $uid user ID of the user
306
-	 * @param string $displayName new display name
307
-	 * @return string display name
308
-	 */
309
-	public function setDisplayName($uid, $displayName) {
310
-		return $this->handleRequest($uid, 'setDisplayName', [$uid, $displayName]);
311
-	}
312
-
313
-	/**
314
-	 * checks whether the user is allowed to change his avatar in Nextcloud
315
-	 *
316
-	 * @param string $uid the Nextcloud user name
317
-	 * @return boolean either the user can or cannot
318
-	 */
319
-	public function canChangeAvatar($uid) {
320
-		return $this->handleRequest($uid, 'canChangeAvatar', [$uid], true);
321
-	}
322
-
323
-	/**
324
-	 * Get a list of all display names and user ids.
325
-	 *
326
-	 * @param string $search
327
-	 * @param int|null $limit
328
-	 * @param int|null $offset
329
-	 * @return array an array of all displayNames (value) and the corresponding uids (key)
330
-	 */
331
-	public function getDisplayNames($search = '', $limit = null, $offset = null) {
332
-		$this->setup();
333
-
334
-		//we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
335
-		$users = [];
336
-		foreach ($this->backends as $backend) {
337
-			$backendUsers = $backend->getDisplayNames($search, $limit, $offset);
338
-			if (is_array($backendUsers)) {
339
-				$users = $users + $backendUsers;
340
-			}
341
-		}
342
-		return $users;
343
-	}
344
-
345
-	/**
346
-	 * delete a user
347
-	 *
348
-	 * @param string $uid The username of the user to delete
349
-	 * @return bool
350
-	 *
351
-	 * Deletes a user
352
-	 */
353
-	public function deleteUser($uid) {
354
-		return $this->handleRequest($uid, 'deleteUser', [$uid]);
355
-	}
356
-
357
-	/**
358
-	 * Set password
359
-	 *
360
-	 * @param string $uid The username
361
-	 * @param string $password The new password
362
-	 * @return bool
363
-	 *
364
-	 */
365
-	public function setPassword($uid, $password) {
366
-		return $this->handleRequest($uid, 'setPassword', [$uid, $password]);
367
-	}
368
-
369
-	/**
370
-	 * @return bool
371
-	 */
372
-	public function hasUserListings() {
373
-		$this->setup();
374
-		return $this->refBackend->hasUserListings();
375
-	}
376
-
377
-	/**
378
-	 * Count the number of users
379
-	 *
380
-	 * @return int|bool
381
-	 */
382
-	public function countUsers() {
383
-		$this->setup();
384
-
385
-		$users = false;
386
-		foreach ($this->backends as $backend) {
387
-			$backendUsers = $backend->countUsers();
388
-			if ($backendUsers !== false) {
389
-				$users += $backendUsers;
390
-			}
391
-		}
392
-		return $users;
393
-	}
394
-
395
-	/**
396
-	 * Count the number of mapped users
397
-	 */
398
-	public function countMappedUsers(): int {
399
-		$this->setup();
400
-
401
-		$users = 0;
402
-		foreach ($this->backends as $backend) {
403
-			$users += $backend->countMappedUsers();
404
-		}
405
-		return $users;
406
-	}
407
-
408
-	/**
409
-	 * Return access for LDAP interaction.
410
-	 *
411
-	 * @param string $uid
412
-	 * @return Access instance of Access for LDAP interaction
413
-	 */
414
-	public function getLDAPAccess($uid) {
415
-		return $this->handleRequest($uid, 'getLDAPAccess', [$uid]);
416
-	}
417
-
418
-	/**
419
-	 * Return a new LDAP connection for the specified user.
420
-	 * The connection needs to be closed manually.
421
-	 *
422
-	 * @param string $uid
423
-	 * @return resource|\LDAP\Connection The LDAP connection
424
-	 */
425
-	public function getNewLDAPConnection($uid) {
426
-		return $this->handleRequest($uid, 'getNewLDAPConnection', [$uid]);
427
-	}
428
-
429
-	/**
430
-	 * Creates a new user in LDAP
431
-	 *
432
-	 * @param $username
433
-	 * @param $password
434
-	 * @return bool
435
-	 */
436
-	public function createUser($username, $password) {
437
-		return $this->handleRequest($username, 'createUser', [$username, $password]);
438
-	}
44
+    private $backends = [];
45
+    /** @var User_LDAP */
46
+    private $refBackend = null;
47
+
48
+    private bool $isSetUp = false;
49
+    private Helper $helper;
50
+    private IConfig $ocConfig;
51
+    private INotificationManager $notificationManager;
52
+    private IUserSession $userSession;
53
+    private UserPluginManager $userPluginManager;
54
+
55
+    public function __construct(
56
+        Helper $helper,
57
+        ILDAPWrapper $ldap,
58
+        IConfig $ocConfig,
59
+        INotificationManager $notificationManager,
60
+        IUserSession $userSession,
61
+        UserPluginManager $userPluginManager
62
+    ) {
63
+        parent::__construct($ldap);
64
+        $this->helper = $helper;
65
+        $this->ocConfig = $ocConfig;
66
+        $this->notificationManager = $notificationManager;
67
+        $this->userSession = $userSession;
68
+        $this->userPluginManager = $userPluginManager;
69
+    }
70
+
71
+    protected function setup(): void {
72
+        if ($this->isSetUp) {
73
+            return;
74
+        }
75
+
76
+        $serverConfigPrefixes = $this->helper->getServerConfigurationPrefixes(true);
77
+        foreach ($serverConfigPrefixes as $configPrefix) {
78
+            $this->backends[$configPrefix] =
79
+                new User_LDAP($this->getAccess($configPrefix), $this->ocConfig, $this->notificationManager, $this->userSession, $this->userPluginManager);
80
+
81
+            if (is_null($this->refBackend)) {
82
+                $this->refBackend = &$this->backends[$configPrefix];
83
+            }
84
+        }
85
+
86
+        $this->isSetUp = true;
87
+    }
88
+
89
+    /**
90
+     * Tries the backends one after the other until a positive result is returned from the specified method
91
+     *
92
+     * @param string $id the uid connected to the request
93
+     * @param string $method the method of the user backend that shall be called
94
+     * @param array $parameters an array of parameters to be passed
95
+     * @return mixed the result of the method or false
96
+     */
97
+    protected function walkBackends($id, $method, $parameters) {
98
+        $this->setup();
99
+
100
+        $uid = $id;
101
+        $cacheKey = $this->getUserCacheKey($uid);
102
+        foreach ($this->backends as $configPrefix => $backend) {
103
+            $instance = $backend;
104
+            if (!method_exists($instance, $method)
105
+                && method_exists($this->getAccess($configPrefix), $method)) {
106
+                $instance = $this->getAccess($configPrefix);
107
+            }
108
+            if ($result = call_user_func_array([$instance, $method], $parameters)) {
109
+                if (!$this->isSingleBackend()) {
110
+                    $this->writeToCache($cacheKey, $configPrefix);
111
+                }
112
+                return $result;
113
+            }
114
+        }
115
+        return false;
116
+    }
117
+
118
+    /**
119
+     * Asks the backend connected to the server that supposely takes care of the uid from the request.
120
+     *
121
+     * @param string $id the uid connected to the request
122
+     * @param string $method the method of the user backend that shall be called
123
+     * @param array $parameters an array of parameters to be passed
124
+     * @param mixed $passOnWhen the result matches this variable
125
+     * @return mixed the result of the method or false
126
+     */
127
+    protected function callOnLastSeenOn($id, $method, $parameters, $passOnWhen) {
128
+        $this->setup();
129
+
130
+        $uid = $id;
131
+        $cacheKey = $this->getUserCacheKey($uid);
132
+        $prefix = $this->getFromCache($cacheKey);
133
+        //in case the uid has been found in the past, try this stored connection first
134
+        if (!is_null($prefix)) {
135
+            if (isset($this->backends[$prefix])) {
136
+                $instance = $this->backends[$prefix];
137
+                if (!method_exists($instance, $method)
138
+                    && method_exists($this->getAccess($prefix), $method)) {
139
+                    $instance = $this->getAccess($prefix);
140
+                }
141
+                $result = call_user_func_array([$instance, $method], $parameters);
142
+                if ($result === $passOnWhen) {
143
+                    //not found here, reset cache to null if user vanished
144
+                    //because sometimes methods return false with a reason
145
+                    $userExists = call_user_func_array(
146
+                        [$this->backends[$prefix], 'userExistsOnLDAP'],
147
+                        [$uid]
148
+                    );
149
+                    if (!$userExists) {
150
+                        $this->writeToCache($cacheKey, null);
151
+                    }
152
+                }
153
+                return $result;
154
+            }
155
+        }
156
+        return false;
157
+    }
158
+
159
+    protected function activeBackends(): int {
160
+        $this->setup();
161
+        return count($this->backends);
162
+    }
163
+
164
+    /**
165
+     * Check if backend implements actions
166
+     *
167
+     * @param int $actions bitwise-or'ed actions
168
+     * @return boolean
169
+     *
170
+     * Returns the supported actions as int to be
171
+     * compared with \OC\User\Backend::CREATE_USER etc.
172
+     */
173
+    public function implementsActions($actions) {
174
+        $this->setup();
175
+        //it's the same across all our user backends obviously
176
+        return $this->refBackend->implementsActions($actions);
177
+    }
178
+
179
+    /**
180
+     * Backend name to be shown in user management
181
+     *
182
+     * @return string the name of the backend to be shown
183
+     */
184
+    public function getBackendName() {
185
+        $this->setup();
186
+        return $this->refBackend->getBackendName();
187
+    }
188
+
189
+    /**
190
+     * Get a list of all users
191
+     *
192
+     * @param string $search
193
+     * @param null|int $limit
194
+     * @param null|int $offset
195
+     * @return string[] an array of all uids
196
+     */
197
+    public function getUsers($search = '', $limit = 10, $offset = 0) {
198
+        $this->setup();
199
+
200
+        //we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
201
+        $users = [];
202
+        foreach ($this->backends as $backend) {
203
+            $backendUsers = $backend->getUsers($search, $limit, $offset);
204
+            if (is_array($backendUsers)) {
205
+                $users = array_merge($users, $backendUsers);
206
+            }
207
+        }
208
+        return $users;
209
+    }
210
+
211
+    /**
212
+     * check if a user exists
213
+     *
214
+     * @param string $uid the username
215
+     * @return boolean
216
+     */
217
+    public function userExists($uid) {
218
+        $existsOnLDAP = false;
219
+        $existsLocally = $this->handleRequest($uid, 'userExists', [$uid]);
220
+        if ($existsLocally) {
221
+            $existsOnLDAP = $this->userExistsOnLDAP($uid);
222
+        }
223
+        if ($existsLocally && !$existsOnLDAP) {
224
+            try {
225
+                $user = $this->getLDAPAccess($uid)->userManager->get($uid);
226
+                if ($user instanceof User) {
227
+                    $user->markUser();
228
+                }
229
+            } catch (\Exception $e) {
230
+                // ignore
231
+            }
232
+        }
233
+        return $existsLocally;
234
+    }
235
+
236
+    /**
237
+     * check if a user exists on LDAP
238
+     *
239
+     * @param string|\OCA\User_LDAP\User\User $user either the Nextcloud user
240
+     * name or an instance of that user
241
+     */
242
+    public function userExistsOnLDAP($user, bool $ignoreCache = false): bool {
243
+        $id = ($user instanceof User) ? $user->getUsername() : $user;
244
+        return $this->handleRequest($id, 'userExistsOnLDAP', [$user, $ignoreCache]);
245
+    }
246
+
247
+    /**
248
+     * Check if the password is correct
249
+     *
250
+     * @param string $uid The username
251
+     * @param string $password The password
252
+     * @return bool
253
+     *
254
+     * Check if the password is correct without logging in the user
255
+     */
256
+    public function checkPassword($uid, $password) {
257
+        return $this->handleRequest($uid, 'checkPassword', [$uid, $password]);
258
+    }
259
+
260
+    /**
261
+     * returns the username for the given login name, if available
262
+     *
263
+     * @param string $loginName
264
+     * @return string|false
265
+     */
266
+    public function loginName2UserName($loginName) {
267
+        $id = 'LOGINNAME,' . $loginName;
268
+        return $this->handleRequest($id, 'loginName2UserName', [$loginName]);
269
+    }
270
+
271
+    /**
272
+     * returns the username for the given LDAP DN, if available
273
+     *
274
+     * @param string $dn
275
+     * @return string|false with the username
276
+     */
277
+    public function dn2UserName($dn) {
278
+        $id = 'DN,' . $dn;
279
+        return $this->handleRequest($id, 'dn2UserName', [$dn]);
280
+    }
281
+
282
+    /**
283
+     * get the user's home directory
284
+     *
285
+     * @param string $uid the username
286
+     * @return boolean
287
+     */
288
+    public function getHome($uid) {
289
+        return $this->handleRequest($uid, 'getHome', [$uid]);
290
+    }
291
+
292
+    /**
293
+     * get display name of the user
294
+     *
295
+     * @param string $uid user ID of the user
296
+     * @return string display name
297
+     */
298
+    public function getDisplayName($uid) {
299
+        return $this->handleRequest($uid, 'getDisplayName', [$uid]);
300
+    }
301
+
302
+    /**
303
+     * set display name of the user
304
+     *
305
+     * @param string $uid user ID of the user
306
+     * @param string $displayName new display name
307
+     * @return string display name
308
+     */
309
+    public function setDisplayName($uid, $displayName) {
310
+        return $this->handleRequest($uid, 'setDisplayName', [$uid, $displayName]);
311
+    }
312
+
313
+    /**
314
+     * checks whether the user is allowed to change his avatar in Nextcloud
315
+     *
316
+     * @param string $uid the Nextcloud user name
317
+     * @return boolean either the user can or cannot
318
+     */
319
+    public function canChangeAvatar($uid) {
320
+        return $this->handleRequest($uid, 'canChangeAvatar', [$uid], true);
321
+    }
322
+
323
+    /**
324
+     * Get a list of all display names and user ids.
325
+     *
326
+     * @param string $search
327
+     * @param int|null $limit
328
+     * @param int|null $offset
329
+     * @return array an array of all displayNames (value) and the corresponding uids (key)
330
+     */
331
+    public function getDisplayNames($search = '', $limit = null, $offset = null) {
332
+        $this->setup();
333
+
334
+        //we do it just as the /OC_User implementation: do not play around with limit and offset but ask all backends
335
+        $users = [];
336
+        foreach ($this->backends as $backend) {
337
+            $backendUsers = $backend->getDisplayNames($search, $limit, $offset);
338
+            if (is_array($backendUsers)) {
339
+                $users = $users + $backendUsers;
340
+            }
341
+        }
342
+        return $users;
343
+    }
344
+
345
+    /**
346
+     * delete a user
347
+     *
348
+     * @param string $uid The username of the user to delete
349
+     * @return bool
350
+     *
351
+     * Deletes a user
352
+     */
353
+    public function deleteUser($uid) {
354
+        return $this->handleRequest($uid, 'deleteUser', [$uid]);
355
+    }
356
+
357
+    /**
358
+     * Set password
359
+     *
360
+     * @param string $uid The username
361
+     * @param string $password The new password
362
+     * @return bool
363
+     *
364
+     */
365
+    public function setPassword($uid, $password) {
366
+        return $this->handleRequest($uid, 'setPassword', [$uid, $password]);
367
+    }
368
+
369
+    /**
370
+     * @return bool
371
+     */
372
+    public function hasUserListings() {
373
+        $this->setup();
374
+        return $this->refBackend->hasUserListings();
375
+    }
376
+
377
+    /**
378
+     * Count the number of users
379
+     *
380
+     * @return int|bool
381
+     */
382
+    public function countUsers() {
383
+        $this->setup();
384
+
385
+        $users = false;
386
+        foreach ($this->backends as $backend) {
387
+            $backendUsers = $backend->countUsers();
388
+            if ($backendUsers !== false) {
389
+                $users += $backendUsers;
390
+            }
391
+        }
392
+        return $users;
393
+    }
394
+
395
+    /**
396
+     * Count the number of mapped users
397
+     */
398
+    public function countMappedUsers(): int {
399
+        $this->setup();
400
+
401
+        $users = 0;
402
+        foreach ($this->backends as $backend) {
403
+            $users += $backend->countMappedUsers();
404
+        }
405
+        return $users;
406
+    }
407
+
408
+    /**
409
+     * Return access for LDAP interaction.
410
+     *
411
+     * @param string $uid
412
+     * @return Access instance of Access for LDAP interaction
413
+     */
414
+    public function getLDAPAccess($uid) {
415
+        return $this->handleRequest($uid, 'getLDAPAccess', [$uid]);
416
+    }
417
+
418
+    /**
419
+     * Return a new LDAP connection for the specified user.
420
+     * The connection needs to be closed manually.
421
+     *
422
+     * @param string $uid
423
+     * @return resource|\LDAP\Connection The LDAP connection
424
+     */
425
+    public function getNewLDAPConnection($uid) {
426
+        return $this->handleRequest($uid, 'getNewLDAPConnection', [$uid]);
427
+    }
428
+
429
+    /**
430
+     * Creates a new user in LDAP
431
+     *
432
+     * @param $username
433
+     * @param $password
434
+     * @return bool
435
+     */
436
+    public function createUser($username, $password) {
437
+        return $this->handleRequest($username, 'createUser', [$username, $password]);
438
+    }
439 439
 }
Please login to merge, or discard this patch.
apps/user_ldap/lib/BackendUtility.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -26,13 +26,13 @@
 block discarded – undo
26 26
 namespace OCA\User_LDAP;
27 27
 
28 28
 abstract class BackendUtility {
29
-	protected $access;
29
+    protected $access;
30 30
 
31
-	/**
32
-	 * constructor, make sure the subclasses call this one!
33
-	 * @param Access $access an instance of Access for LDAP interaction
34
-	 */
35
-	public function __construct(Access $access) {
36
-		$this->access = $access;
37
-	}
31
+    /**
32
+     * constructor, make sure the subclasses call this one!
33
+     * @param Access $access an instance of Access for LDAP interaction
34
+     */
35
+    public function __construct(Access $access) {
36
+        $this->access = $access;
37
+    }
38 38
 }
Please login to merge, or discard this patch.
apps/user_ldap/ajax/getNewServerConfigPrefix.php 2 patches
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -38,12 +38,12 @@
 block discarded – undo
38 38
 
39 39
 $newConfig = new \OCA\User_LDAP\Configuration($nk, false);
40 40
 if (isset($_POST['copyConfig'])) {
41
-	$originalConfig = new \OCA\User_LDAP\Configuration($_POST['copyConfig']);
42
-	$newConfig->setConfiguration($originalConfig->getConfiguration());
41
+    $originalConfig = new \OCA\User_LDAP\Configuration($_POST['copyConfig']);
42
+    $newConfig->setConfiguration($originalConfig->getConfiguration());
43 43
 } else {
44
-	$configuration = new \OCA\User_LDAP\Configuration($nk, false);
45
-	$newConfig->setConfiguration($configuration->getDefaults());
46
-	$resultData['defaults'] = $configuration->getDefaults();
44
+    $configuration = new \OCA\User_LDAP\Configuration($nk, false);
45
+    $newConfig->setConfiguration($configuration->getDefaults());
46
+    $resultData['defaults'] = $configuration->getDefaults();
47 47
 }
48 48
 $newConfig->saveConfiguration();
49 49
 
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -33,7 +33,7 @@
 block discarded – undo
33 33
 $serverConnections = $helper->getServerConfigurationPrefixes();
34 34
 sort($serverConnections);
35 35
 $lk = array_pop($serverConnections);
36
-$ln = (int)str_replace('s', '', $lk);
36
+$ln = (int) str_replace('s', '', $lk);
37 37
 $nk = 's'.str_pad($ln + 1, 2, '0', STR_PAD_LEFT);
38 38
 
39 39
 $resultData = ['configPrefix' => $nk];
Please login to merge, or discard this patch.
apps/encryption/lib/Util.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -167,7 +167,7 @@  discard block
 block discarded – undo
167 167
 	 * @return bool
168 168
 	 */
169 169
 	public function userHasFiles($uid) {
170
-		return $this->files->file_exists($uid . '/files');
170
+		return $this->files->file_exists($uid.'/files');
171 171
 	}
172 172
 
173 173
 	/**
@@ -183,7 +183,7 @@  discard block
 block discarded – undo
183 183
 		if (count($parts) > 1) {
184 184
 			$owner = $parts[1];
185 185
 			if ($this->userManager->userExists($owner) === false) {
186
-				throw new \BadMethodCallException('Unknown user: ' .
186
+				throw new \BadMethodCallException('Unknown user: '.
187 187
 				'method expects path to a user folder relative to the data folder');
188 188
 			}
189 189
 		}
Please login to merge, or discard this patch.
Indentation   +147 added lines, -147 removed lines patch added patch discarded remove patch
@@ -36,164 +36,164 @@
 block discarded – undo
36 36
 use OCP\PreConditionNotMetException;
37 37
 
38 38
 class Util {
39
-	/**
40
-	 * @var View
41
-	 */
42
-	private $files;
43
-	/**
44
-	 * @var Crypt
45
-	 */
46
-	private $crypt;
47
-	/**
48
-	 * @var ILogger
49
-	 */
50
-	private $logger;
51
-	/**
52
-	 * @var bool|IUser
53
-	 */
54
-	private $user;
55
-	/**
56
-	 * @var IConfig
57
-	 */
58
-	private $config;
59
-	/**
60
-	 * @var IUserManager
61
-	 */
62
-	private $userManager;
39
+    /**
40
+     * @var View
41
+     */
42
+    private $files;
43
+    /**
44
+     * @var Crypt
45
+     */
46
+    private $crypt;
47
+    /**
48
+     * @var ILogger
49
+     */
50
+    private $logger;
51
+    /**
52
+     * @var bool|IUser
53
+     */
54
+    private $user;
55
+    /**
56
+     * @var IConfig
57
+     */
58
+    private $config;
59
+    /**
60
+     * @var IUserManager
61
+     */
62
+    private $userManager;
63 63
 
64
-	/**
65
-	 * Util constructor.
66
-	 *
67
-	 * @param View $files
68
-	 * @param Crypt $crypt
69
-	 * @param ILogger $logger
70
-	 * @param IUserSession $userSession
71
-	 * @param IConfig $config
72
-	 * @param IUserManager $userManager
73
-	 */
74
-	public function __construct(View $files,
75
-								Crypt $crypt,
76
-								ILogger $logger,
77
-								IUserSession $userSession,
78
-								IConfig $config,
79
-								IUserManager $userManager
80
-	) {
81
-		$this->files = $files;
82
-		$this->crypt = $crypt;
83
-		$this->logger = $logger;
84
-		$this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser() : false;
85
-		$this->config = $config;
86
-		$this->userManager = $userManager;
87
-	}
64
+    /**
65
+     * Util constructor.
66
+     *
67
+     * @param View $files
68
+     * @param Crypt $crypt
69
+     * @param ILogger $logger
70
+     * @param IUserSession $userSession
71
+     * @param IConfig $config
72
+     * @param IUserManager $userManager
73
+     */
74
+    public function __construct(View $files,
75
+                                Crypt $crypt,
76
+                                ILogger $logger,
77
+                                IUserSession $userSession,
78
+                                IConfig $config,
79
+                                IUserManager $userManager
80
+    ) {
81
+        $this->files = $files;
82
+        $this->crypt = $crypt;
83
+        $this->logger = $logger;
84
+        $this->user = $userSession && $userSession->isLoggedIn() ? $userSession->getUser() : false;
85
+        $this->config = $config;
86
+        $this->userManager = $userManager;
87
+    }
88 88
 
89
-	/**
90
-	 * check if recovery key is enabled for user
91
-	 *
92
-	 * @param string $uid
93
-	 * @return bool
94
-	 */
95
-	public function isRecoveryEnabledForUser($uid) {
96
-		$recoveryMode = $this->config->getUserValue($uid,
97
-			'encryption',
98
-			'recoveryEnabled',
99
-			'0');
89
+    /**
90
+     * check if recovery key is enabled for user
91
+     *
92
+     * @param string $uid
93
+     * @return bool
94
+     */
95
+    public function isRecoveryEnabledForUser($uid) {
96
+        $recoveryMode = $this->config->getUserValue($uid,
97
+            'encryption',
98
+            'recoveryEnabled',
99
+            '0');
100 100
 
101
-		return ($recoveryMode === '1');
102
-	}
101
+        return ($recoveryMode === '1');
102
+    }
103 103
 
104
-	/**
105
-	 * check if the home storage should be encrypted
106
-	 *
107
-	 * @return bool
108
-	 */
109
-	public function shouldEncryptHomeStorage() {
110
-		$encryptHomeStorage = $this->config->getAppValue(
111
-			'encryption',
112
-			'encryptHomeStorage',
113
-			'1'
114
-		);
104
+    /**
105
+     * check if the home storage should be encrypted
106
+     *
107
+     * @return bool
108
+     */
109
+    public function shouldEncryptHomeStorage() {
110
+        $encryptHomeStorage = $this->config->getAppValue(
111
+            'encryption',
112
+            'encryptHomeStorage',
113
+            '1'
114
+        );
115 115
 
116
-		return ($encryptHomeStorage === '1');
117
-	}
116
+        return ($encryptHomeStorage === '1');
117
+    }
118 118
 
119
-	/**
120
-	 * set the home storage encryption on/off
121
-	 *
122
-	 * @param bool $encryptHomeStorage
123
-	 */
124
-	public function setEncryptHomeStorage($encryptHomeStorage) {
125
-		$value = $encryptHomeStorage ? '1' : '0';
126
-		$this->config->setAppValue(
127
-			'encryption',
128
-			'encryptHomeStorage',
129
-			$value
130
-		);
131
-	}
119
+    /**
120
+     * set the home storage encryption on/off
121
+     *
122
+     * @param bool $encryptHomeStorage
123
+     */
124
+    public function setEncryptHomeStorage($encryptHomeStorage) {
125
+        $value = $encryptHomeStorage ? '1' : '0';
126
+        $this->config->setAppValue(
127
+            'encryption',
128
+            'encryptHomeStorage',
129
+            $value
130
+        );
131
+    }
132 132
 
133
-	/**
134
-	 * check if master key is enabled
135
-	 *
136
-	 * @return bool
137
-	 */
138
-	public function isMasterKeyEnabled() {
139
-		$userMasterKey = $this->config->getAppValue('encryption', 'useMasterKey', '1');
140
-		return ($userMasterKey === '1');
141
-	}
133
+    /**
134
+     * check if master key is enabled
135
+     *
136
+     * @return bool
137
+     */
138
+    public function isMasterKeyEnabled() {
139
+        $userMasterKey = $this->config->getAppValue('encryption', 'useMasterKey', '1');
140
+        return ($userMasterKey === '1');
141
+    }
142 142
 
143
-	/**
144
-	 * @param $enabled
145
-	 * @return bool
146
-	 */
147
-	public function setRecoveryForUser($enabled) {
148
-		$value = $enabled ? '1' : '0';
143
+    /**
144
+     * @param $enabled
145
+     * @return bool
146
+     */
147
+    public function setRecoveryForUser($enabled) {
148
+        $value = $enabled ? '1' : '0';
149 149
 
150
-		try {
151
-			$this->config->setUserValue($this->user->getUID(),
152
-				'encryption',
153
-				'recoveryEnabled',
154
-				$value);
155
-			return true;
156
-		} catch (PreConditionNotMetException $e) {
157
-			return false;
158
-		}
159
-	}
150
+        try {
151
+            $this->config->setUserValue($this->user->getUID(),
152
+                'encryption',
153
+                'recoveryEnabled',
154
+                $value);
155
+            return true;
156
+        } catch (PreConditionNotMetException $e) {
157
+            return false;
158
+        }
159
+    }
160 160
 
161
-	/**
162
-	 * @param string $uid
163
-	 * @return bool
164
-	 */
165
-	public function userHasFiles($uid) {
166
-		return $this->files->file_exists($uid . '/files');
167
-	}
161
+    /**
162
+     * @param string $uid
163
+     * @return bool
164
+     */
165
+    public function userHasFiles($uid) {
166
+        return $this->files->file_exists($uid . '/files');
167
+    }
168 168
 
169
-	/**
170
-	 * get owner from give path, path relative to data/ expected
171
-	 *
172
-	 * @param string $path relative to data/
173
-	 * @return string
174
-	 * @throws \BadMethodCallException
175
-	 */
176
-	public function getOwner($path) {
177
-		$owner = '';
178
-		$parts = explode('/', $path, 3);
179
-		if (count($parts) > 1) {
180
-			$owner = $parts[1];
181
-			if ($this->userManager->userExists($owner) === false) {
182
-				throw new \BadMethodCallException('Unknown user: ' .
183
-				'method expects path to a user folder relative to the data folder');
184
-			}
185
-		}
169
+    /**
170
+     * get owner from give path, path relative to data/ expected
171
+     *
172
+     * @param string $path relative to data/
173
+     * @return string
174
+     * @throws \BadMethodCallException
175
+     */
176
+    public function getOwner($path) {
177
+        $owner = '';
178
+        $parts = explode('/', $path, 3);
179
+        if (count($parts) > 1) {
180
+            $owner = $parts[1];
181
+            if ($this->userManager->userExists($owner) === false) {
182
+                throw new \BadMethodCallException('Unknown user: ' .
183
+                'method expects path to a user folder relative to the data folder');
184
+            }
185
+        }
186 186
 
187
-		return $owner;
188
-	}
187
+        return $owner;
188
+    }
189 189
 
190
-	/**
191
-	 * get storage of path
192
-	 *
193
-	 * @param string $path
194
-	 * @return \OC\Files\Storage\Storage|null
195
-	 */
196
-	public function getStorage($path) {
197
-		return $this->files->getMount($path)->getStorage();
198
-	}
190
+    /**
191
+     * get storage of path
192
+     *
193
+     * @param string $path
194
+     * @return \OC\Files\Storage\Storage|null
195
+     */
196
+    public function getStorage($path) {
197
+        return $this->files->getMount($path)->getStorage();
198
+    }
199 199
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Crypto/DecryptAll.php 2 patches
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -34,126 +34,126 @@
 block discarded – undo
34 34
 
35 35
 class DecryptAll {
36 36
 
37
-	/** @var Util  */
38
-	protected $util;
39
-
40
-	/** @var QuestionHelper  */
41
-	protected $questionHelper;
42
-
43
-	/** @var  Crypt */
44
-	protected $crypt;
45
-
46
-	/** @var  KeyManager */
47
-	protected $keyManager;
48
-
49
-	/** @var Session  */
50
-	protected $session;
51
-
52
-	/**
53
-	 * @param Util $util
54
-	 * @param KeyManager $keyManager
55
-	 * @param Crypt $crypt
56
-	 * @param Session $session
57
-	 * @param QuestionHelper $questionHelper
58
-	 */
59
-	public function __construct(
60
-		Util $util,
61
-		KeyManager $keyManager,
62
-		Crypt $crypt,
63
-		Session $session,
64
-		QuestionHelper $questionHelper
65
-	) {
66
-		$this->util = $util;
67
-		$this->keyManager = $keyManager;
68
-		$this->crypt = $crypt;
69
-		$this->session = $session;
70
-		$this->questionHelper = $questionHelper;
71
-	}
72
-
73
-	/**
74
-	 * prepare encryption module to decrypt all files
75
-	 *
76
-	 * @param InputInterface $input
77
-	 * @param OutputInterface $output
78
-	 * @param $user
79
-	 * @return bool
80
-	 */
81
-	public function prepare(InputInterface $input, OutputInterface $output, $user) {
82
-		$question = new Question('Please enter the recovery key password: ');
83
-
84
-		if ($this->util->isMasterKeyEnabled()) {
85
-			$output->writeln('Use master key to decrypt all files');
86
-			$user = $this->keyManager->getMasterKeyId();
87
-			$password = $this->keyManager->getMasterKeyPassword();
88
-		} else {
89
-			$recoveryKeyId = $this->keyManager->getRecoveryKeyId();
90
-			if (!empty($user)) {
91
-				$output->writeln('You can only decrypt the users files if you know');
92
-				$output->writeln('the users password or if he activated the recovery key.');
93
-				$output->writeln('');
94
-				$questionUseLoginPassword = new ConfirmationQuestion(
95
-					'Do you want to use the users login password to decrypt all files? (y/n) ',
96
-					false
97
-				);
98
-				$useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
99
-				if ($useLoginPassword) {
100
-					$question = new Question('Please enter the user\'s login password: ');
101
-				} elseif ($this->util->isRecoveryEnabledForUser($user) === false) {
102
-					$output->writeln('No recovery key available for user ' . $user);
103
-					return false;
104
-				} else {
105
-					$user = $recoveryKeyId;
106
-				}
107
-			} else {
108
-				$output->writeln('You can only decrypt the files of all users if the');
109
-				$output->writeln('recovery key is enabled by the admin and activated by the users.');
110
-				$output->writeln('');
111
-				$user = $recoveryKeyId;
112
-			}
113
-
114
-			$question->setHidden(true);
115
-			$question->setHiddenFallback(false);
116
-			$password = $this->questionHelper->ask($input, $output, $question);
117
-		}
118
-
119
-		$privateKey = $this->getPrivateKey($user, $password);
120
-		if ($privateKey !== false) {
121
-			$this->updateSession($user, $privateKey);
122
-			return true;
123
-		} else {
124
-			$output->writeln('Could not decrypt private key, maybe you entered the wrong password?');
125
-		}
126
-
127
-
128
-		return false;
129
-	}
130
-
131
-	/**
132
-	 * get the private key which will be used to decrypt all files
133
-	 *
134
-	 * @param string $user
135
-	 * @param string $password
136
-	 * @return bool|string
137
-	 * @throws \OCA\Encryption\Exceptions\PrivateKeyMissingException
138
-	 */
139
-	protected function getPrivateKey($user, $password) {
140
-		$recoveryKeyId = $this->keyManager->getRecoveryKeyId();
141
-		$masterKeyId = $this->keyManager->getMasterKeyId();
142
-		if ($user === $recoveryKeyId) {
143
-			$recoveryKey = $this->keyManager->getSystemPrivateKey($recoveryKeyId);
144
-			$privateKey = $this->crypt->decryptPrivateKey($recoveryKey, $password);
145
-		} elseif ($user === $masterKeyId) {
146
-			$masterKey = $this->keyManager->getSystemPrivateKey($masterKeyId);
147
-			$privateKey = $this->crypt->decryptPrivateKey($masterKey, $password, $masterKeyId);
148
-		} else {
149
-			$userKey = $this->keyManager->getPrivateKey($user);
150
-			$privateKey = $this->crypt->decryptPrivateKey($userKey, $password, $user);
151
-		}
152
-
153
-		return $privateKey;
154
-	}
155
-
156
-	protected function updateSession($user, $privateKey) {
157
-		$this->session->prepareDecryptAll($user, $privateKey);
158
-	}
37
+    /** @var Util  */
38
+    protected $util;
39
+
40
+    /** @var QuestionHelper  */
41
+    protected $questionHelper;
42
+
43
+    /** @var  Crypt */
44
+    protected $crypt;
45
+
46
+    /** @var  KeyManager */
47
+    protected $keyManager;
48
+
49
+    /** @var Session  */
50
+    protected $session;
51
+
52
+    /**
53
+     * @param Util $util
54
+     * @param KeyManager $keyManager
55
+     * @param Crypt $crypt
56
+     * @param Session $session
57
+     * @param QuestionHelper $questionHelper
58
+     */
59
+    public function __construct(
60
+        Util $util,
61
+        KeyManager $keyManager,
62
+        Crypt $crypt,
63
+        Session $session,
64
+        QuestionHelper $questionHelper
65
+    ) {
66
+        $this->util = $util;
67
+        $this->keyManager = $keyManager;
68
+        $this->crypt = $crypt;
69
+        $this->session = $session;
70
+        $this->questionHelper = $questionHelper;
71
+    }
72
+
73
+    /**
74
+     * prepare encryption module to decrypt all files
75
+     *
76
+     * @param InputInterface $input
77
+     * @param OutputInterface $output
78
+     * @param $user
79
+     * @return bool
80
+     */
81
+    public function prepare(InputInterface $input, OutputInterface $output, $user) {
82
+        $question = new Question('Please enter the recovery key password: ');
83
+
84
+        if ($this->util->isMasterKeyEnabled()) {
85
+            $output->writeln('Use master key to decrypt all files');
86
+            $user = $this->keyManager->getMasterKeyId();
87
+            $password = $this->keyManager->getMasterKeyPassword();
88
+        } else {
89
+            $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
90
+            if (!empty($user)) {
91
+                $output->writeln('You can only decrypt the users files if you know');
92
+                $output->writeln('the users password or if he activated the recovery key.');
93
+                $output->writeln('');
94
+                $questionUseLoginPassword = new ConfirmationQuestion(
95
+                    'Do you want to use the users login password to decrypt all files? (y/n) ',
96
+                    false
97
+                );
98
+                $useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
99
+                if ($useLoginPassword) {
100
+                    $question = new Question('Please enter the user\'s login password: ');
101
+                } elseif ($this->util->isRecoveryEnabledForUser($user) === false) {
102
+                    $output->writeln('No recovery key available for user ' . $user);
103
+                    return false;
104
+                } else {
105
+                    $user = $recoveryKeyId;
106
+                }
107
+            } else {
108
+                $output->writeln('You can only decrypt the files of all users if the');
109
+                $output->writeln('recovery key is enabled by the admin and activated by the users.');
110
+                $output->writeln('');
111
+                $user = $recoveryKeyId;
112
+            }
113
+
114
+            $question->setHidden(true);
115
+            $question->setHiddenFallback(false);
116
+            $password = $this->questionHelper->ask($input, $output, $question);
117
+        }
118
+
119
+        $privateKey = $this->getPrivateKey($user, $password);
120
+        if ($privateKey !== false) {
121
+            $this->updateSession($user, $privateKey);
122
+            return true;
123
+        } else {
124
+            $output->writeln('Could not decrypt private key, maybe you entered the wrong password?');
125
+        }
126
+
127
+
128
+        return false;
129
+    }
130
+
131
+    /**
132
+     * get the private key which will be used to decrypt all files
133
+     *
134
+     * @param string $user
135
+     * @param string $password
136
+     * @return bool|string
137
+     * @throws \OCA\Encryption\Exceptions\PrivateKeyMissingException
138
+     */
139
+    protected function getPrivateKey($user, $password) {
140
+        $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
141
+        $masterKeyId = $this->keyManager->getMasterKeyId();
142
+        if ($user === $recoveryKeyId) {
143
+            $recoveryKey = $this->keyManager->getSystemPrivateKey($recoveryKeyId);
144
+            $privateKey = $this->crypt->decryptPrivateKey($recoveryKey, $password);
145
+        } elseif ($user === $masterKeyId) {
146
+            $masterKey = $this->keyManager->getSystemPrivateKey($masterKeyId);
147
+            $privateKey = $this->crypt->decryptPrivateKey($masterKey, $password, $masterKeyId);
148
+        } else {
149
+            $userKey = $this->keyManager->getPrivateKey($user);
150
+            $privateKey = $this->crypt->decryptPrivateKey($userKey, $password, $user);
151
+        }
152
+
153
+        return $privateKey;
154
+    }
155
+
156
+    protected function updateSession($user, $privateKey) {
157
+        $this->session->prepareDecryptAll($user, $privateKey);
158
+    }
159 159
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -99,7 +99,7 @@
 block discarded – undo
99 99
 				if ($useLoginPassword) {
100 100
 					$question = new Question('Please enter the user\'s login password: ');
101 101
 				} elseif ($this->util->isRecoveryEnabledForUser($user) === false) {
102
-					$output->writeln('No recovery key available for user ' . $user);
102
+					$output->writeln('No recovery key available for user '.$user);
103 103
 					return false;
104 104
 				} else {
105 105
 					$user = $recoveryKeyId;
Please login to merge, or discard this patch.
apps/encryption/lib/Exceptions/PrivateKeyMissingException.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -28,13 +28,13 @@
 block discarded – undo
28 28
 
29 29
 class PrivateKeyMissingException extends GenericEncryptionException {
30 30
 
31
-	/**
32
-	 * @param string $userId
33
-	 */
34
-	public function __construct($userId) {
35
-		if (empty($userId)) {
36
-			$userId = "<no-user-id-given>";
37
-		}
38
-		parent::__construct("Private Key missing for user: $userId");
39
-	}
31
+    /**
32
+     * @param string $userId
33
+     */
34
+    public function __construct($userId) {
35
+        if (empty($userId)) {
36
+            $userId = "<no-user-id-given>";
37
+        }
38
+        parent::__construct("Private Key missing for user: $userId");
39
+    }
40 40
 }
Please login to merge, or discard this patch.
apps/encryption/lib/Exceptions/PublicKeyMissingException.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -25,13 +25,13 @@
 block discarded – undo
25 25
 
26 26
 class PublicKeyMissingException extends GenericEncryptionException {
27 27
 
28
-	/**
29
-	 * @param string $userId
30
-	 */
31
-	public function __construct($userId) {
32
-		if (empty($userId)) {
33
-			$userId = "<no-user-id-given>";
34
-		}
35
-		parent::__construct("Public Key missing for user: $userId");
36
-	}
28
+    /**
29
+     * @param string $userId
30
+     */
31
+    public function __construct($userId) {
32
+        if (empty($userId)) {
33
+            $userId = "<no-user-id-given>";
34
+        }
35
+        parent::__construct("Public Key missing for user: $userId");
36
+    }
37 37
 }
Please login to merge, or discard this patch.