Completed
Pull Request — master (#4479)
by Lukas
17:48
created
core/routes.php 1 patch
Indentation   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -35,38 +35,38 @@  discard block
 block discarded – undo
35 35
 
36 36
 $application = new Application();
37 37
 $application->registerRoutes($this, [
38
-	'routes' => [
39
-		['name' => 'lost#email', 'url' => '/lostpassword/email', 'verb' => 'POST'],
40
-		['name' => 'lost#resetform', 'url' => '/lostpassword/reset/form/{token}/{userId}', 'verb' => 'GET'],
41
-		['name' => 'lost#setPassword', 'url' => '/lostpassword/set/{token}/{userId}', 'verb' => 'POST'],
42
-		['name' => 'user#getDisplayNames', 'url' => '/displaynames', 'verb' => 'POST'],
43
-		['name' => 'avatar#getAvatar', 'url' => '/avatar/{userId}/{size}', 'verb' => 'GET'],
44
-		['name' => 'avatar#deleteAvatar', 'url' => '/avatar/', 'verb' => 'DELETE'],
45
-		['name' => 'avatar#postCroppedAvatar', 'url' => '/avatar/cropped', 'verb' => 'POST'],
46
-		['name' => 'avatar#getTmpAvatar', 'url' => '/avatar/tmp', 'verb' => 'GET'],
47
-		['name' => 'avatar#postAvatar', 'url' => '/avatar/', 'verb' => 'POST'],
48
-		['name' => 'login#tryLogin', 'url' => '/login', 'verb' => 'POST'],
49
-		['name' => 'login#confirmPassword', 'url' => '/login/confirm', 'verb' => 'POST'],
50
-		['name' => 'login#showLoginForm', 'url' => '/login', 'verb' => 'GET'],
51
-		['name' => 'login#logout', 'url' => '/logout', 'verb' => 'GET'],
52
-		['name' => 'ClientFlowLogin#showAuthPickerPage', 'url' => '/login/flow', 'verb' => 'GET'],
53
-		['name' => 'ClientFlowLogin#redirectPage', 'url' => '/login/flow/redirect', 'verb' => 'GET'],
54
-		['name' => 'ClientFlowLogin#generateAppPassword', 'url' => '/login/flow', 'verb' => 'POST'],
55
-		['name' => 'TwoFactorChallenge#selectChallenge', 'url' => '/login/selectchallenge', 'verb' => 'GET'],
56
-		['name' => 'TwoFactorChallenge#showChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'GET'],
57
-		['name' => 'TwoFactorChallenge#solveChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'POST'],
58
-		['name' => 'OCJS#getConfig', 'url' => '/core/js/oc.js', 'verb' => 'GET'],
59
-		['name' => 'Preview#getPreview', 'url' => '/core/preview', 'verb' => 'GET'],
60
-		['name' => 'Preview#getPreview', 'url' => '/core/preview.png', 'verb' => 'GET'],
61
-		['name' => 'Css#getCss', 'url' => '/css/{appName}/{fileName}', 'verb' => 'GET'],
62
-		['name' => 'Js#getJs', 'url' => '/js/{appName}/{fileName}', 'verb' => 'GET'],
63
-	],
64
-	'ocs' => [
65
-		['root' => '/cloud', 'name' => 'OCS#getCapabilities', 'url' => '/capabilities', 'verb' => 'GET'],
66
-		['root' => '', 'name' => 'OCS#getConfig', 'url' => '/config', 'verb' => 'GET'],
67
-		['root' => '/person', 'name' => 'OCS#personCheck', 'url' => '/check', 'verb' => 'POST'],
68
-		['root' => '/identityproof', 'name' => 'OCS#getIdentityProof', 'url' => '/key/{cloudId}', 'verb' => 'GET'],
69
-	],
38
+    'routes' => [
39
+        ['name' => 'lost#email', 'url' => '/lostpassword/email', 'verb' => 'POST'],
40
+        ['name' => 'lost#resetform', 'url' => '/lostpassword/reset/form/{token}/{userId}', 'verb' => 'GET'],
41
+        ['name' => 'lost#setPassword', 'url' => '/lostpassword/set/{token}/{userId}', 'verb' => 'POST'],
42
+        ['name' => 'user#getDisplayNames', 'url' => '/displaynames', 'verb' => 'POST'],
43
+        ['name' => 'avatar#getAvatar', 'url' => '/avatar/{userId}/{size}', 'verb' => 'GET'],
44
+        ['name' => 'avatar#deleteAvatar', 'url' => '/avatar/', 'verb' => 'DELETE'],
45
+        ['name' => 'avatar#postCroppedAvatar', 'url' => '/avatar/cropped', 'verb' => 'POST'],
46
+        ['name' => 'avatar#getTmpAvatar', 'url' => '/avatar/tmp', 'verb' => 'GET'],
47
+        ['name' => 'avatar#postAvatar', 'url' => '/avatar/', 'verb' => 'POST'],
48
+        ['name' => 'login#tryLogin', 'url' => '/login', 'verb' => 'POST'],
49
+        ['name' => 'login#confirmPassword', 'url' => '/login/confirm', 'verb' => 'POST'],
50
+        ['name' => 'login#showLoginForm', 'url' => '/login', 'verb' => 'GET'],
51
+        ['name' => 'login#logout', 'url' => '/logout', 'verb' => 'GET'],
52
+        ['name' => 'ClientFlowLogin#showAuthPickerPage', 'url' => '/login/flow', 'verb' => 'GET'],
53
+        ['name' => 'ClientFlowLogin#redirectPage', 'url' => '/login/flow/redirect', 'verb' => 'GET'],
54
+        ['name' => 'ClientFlowLogin#generateAppPassword', 'url' => '/login/flow', 'verb' => 'POST'],
55
+        ['name' => 'TwoFactorChallenge#selectChallenge', 'url' => '/login/selectchallenge', 'verb' => 'GET'],
56
+        ['name' => 'TwoFactorChallenge#showChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'GET'],
57
+        ['name' => 'TwoFactorChallenge#solveChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'POST'],
58
+        ['name' => 'OCJS#getConfig', 'url' => '/core/js/oc.js', 'verb' => 'GET'],
59
+        ['name' => 'Preview#getPreview', 'url' => '/core/preview', 'verb' => 'GET'],
60
+        ['name' => 'Preview#getPreview', 'url' => '/core/preview.png', 'verb' => 'GET'],
61
+        ['name' => 'Css#getCss', 'url' => '/css/{appName}/{fileName}', 'verb' => 'GET'],
62
+        ['name' => 'Js#getJs', 'url' => '/js/{appName}/{fileName}', 'verb' => 'GET'],
63
+    ],
64
+    'ocs' => [
65
+        ['root' => '/cloud', 'name' => 'OCS#getCapabilities', 'url' => '/capabilities', 'verb' => 'GET'],
66
+        ['root' => '', 'name' => 'OCS#getConfig', 'url' => '/config', 'verb' => 'GET'],
67
+        ['root' => '/person', 'name' => 'OCS#personCheck', 'url' => '/check', 'verb' => 'POST'],
68
+        ['root' => '/identityproof', 'name' => 'OCS#getIdentityProof', 'url' => '/key/{cloudId}', 'verb' => 'GET'],
69
+    ],
70 70
 ]);
71 71
 
72 72
 // Post installation check
@@ -75,62 +75,62 @@  discard block
 block discarded – undo
75 75
 // Core ajax actions
76 76
 // Search
77 77
 $this->create('search_ajax_search', '/core/search')
78
-	->actionInclude('core/search/ajax/search.php');
78
+    ->actionInclude('core/search/ajax/search.php');
79 79
 // Routing
80 80
 $this->create('core_ajax_update', '/core/ajax/update.php')
81
-	->actionInclude('core/ajax/update.php');
81
+    ->actionInclude('core/ajax/update.php');
82 82
 
83 83
 // File routes
84 84
 $this->create('files.viewcontroller.showFile', '/f/{fileid}')->action(function($urlParams) {
85
-	$app = new \OCA\Files\AppInfo\Application($urlParams);
86
-	$app->dispatch('ViewController', 'index');
85
+    $app = new \OCA\Files\AppInfo\Application($urlParams);
86
+    $app->dispatch('ViewController', 'index');
87 87
 });
88 88
 
89 89
 // Call routes
90 90
 $this->create('spreed.pagecontroller.showCall', '/call/{token}')->action(function($urlParams) {
91
-	if (class_exists(\OCA\Spreed\AppInfo\Application::class, false)) {
92
-		$app = new \OCA\Spreed\AppInfo\Application($urlParams);
93
-		$app->dispatch('PageController', 'index');
94
-	} else {
95
-		throw new \OC\HintException('App spreed is not enabled');
96
-	}
91
+    if (class_exists(\OCA\Spreed\AppInfo\Application::class, false)) {
92
+        $app = new \OCA\Spreed\AppInfo\Application($urlParams);
93
+        $app->dispatch('PageController', 'index');
94
+    } else {
95
+        throw new \OC\HintException('App spreed is not enabled');
96
+    }
97 97
 });
98 98
 
99 99
 // Sharing routes
100 100
 $this->create('files_sharing.sharecontroller.showShare', '/s/{token}')->action(function($urlParams) {
101
-	if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
102
-		$app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
103
-		$app->dispatch('ShareController', 'showShare');
104
-	} else {
105
-		throw new \OC\HintException('App file sharing is not enabled');
106
-	}
101
+    if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
102
+        $app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
103
+        $app->dispatch('ShareController', 'showShare');
104
+    } else {
105
+        throw new \OC\HintException('App file sharing is not enabled');
106
+    }
107 107
 });
108 108
 $this->create('files_sharing.sharecontroller.authenticate', '/s/{token}/authenticate')->post()->action(function($urlParams) {
109
-	if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
110
-		$app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
111
-		$app->dispatch('ShareController', 'authenticate');
112
-	} else {
113
-		throw new \OC\HintException('App file sharing is not enabled');
114
-	}
109
+    if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
110
+        $app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
111
+        $app->dispatch('ShareController', 'authenticate');
112
+    } else {
113
+        throw new \OC\HintException('App file sharing is not enabled');
114
+    }
115 115
 });
116 116
 $this->create('files_sharing.sharecontroller.showAuthenticate', '/s/{token}/authenticate')->get()->action(function($urlParams) {
117
-	if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
118
-		$app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
119
-		$app->dispatch('ShareController', 'showAuthenticate');
120
-	} else {
121
-		throw new \OC\HintException('App file sharing is not enabled');
122
-	}
117
+    if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
118
+        $app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
119
+        $app->dispatch('ShareController', 'showAuthenticate');
120
+    } else {
121
+        throw new \OC\HintException('App file sharing is not enabled');
122
+    }
123 123
 });
124 124
 $this->create('files_sharing.sharecontroller.downloadShare', '/s/{token}/download')->get()->action(function($urlParams) {
125
-	if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
126
-		$app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
127
-		$app->dispatch('ShareController', 'downloadShare');
128
-	} else {
129
-		throw new \OC\HintException('App file sharing is not enabled');
130
-	}
125
+    if (class_exists(\OCA\Files_Sharing\AppInfo\Application::class, false)) {
126
+        $app = new \OCA\Files_Sharing\AppInfo\Application($urlParams);
127
+        $app->dispatch('ShareController', 'downloadShare');
128
+    } else {
129
+        throw new \OC\HintException('App file sharing is not enabled');
130
+    }
131 131
 });
132 132
 
133 133
 // used for heartbeat
134 134
 $this->create('heartbeat', '/heartbeat')->action(function(){
135
-	// do nothing
135
+    // do nothing
136 136
 });
Please login to merge, or discard this patch.
core/Controller/ClientFlowLoginController.php 2 patches
Indentation   +189 added lines, -189 removed lines patch added patch discarded remove patch
@@ -39,194 +39,194 @@
 block discarded – undo
39 39
 use OCP\Session\Exceptions\SessionNotAvailableException;
40 40
 
41 41
 class ClientFlowLoginController extends Controller {
42
-	/** @var IUserSession */
43
-	private $userSession;
44
-	/** @var IL10N */
45
-	private $l10n;
46
-	/** @var Defaults */
47
-	private $defaults;
48
-	/** @var ISession */
49
-	private $session;
50
-	/** @var IProvider */
51
-	private $tokenProvider;
52
-	/** @var ISecureRandom */
53
-	private $random;
54
-	/** @var IURLGenerator */
55
-	private $urlGenerator;
56
-
57
-	const stateName = 'client.flow.state.token';
58
-
59
-	/**
60
-	 * @param string $appName
61
-	 * @param IRequest $request
62
-	 * @param IUserSession $userSession
63
-	 * @param IL10N $l10n
64
-	 * @param Defaults $defaults
65
-	 * @param ISession $session
66
-	 * @param IProvider $tokenProvider
67
-	 * @param ISecureRandom $random
68
-	 * @param IURLGenerator $urlGenerator
69
-	 */
70
-	public function __construct($appName,
71
-								IRequest $request,
72
-								IUserSession $userSession,
73
-								IL10N $l10n,
74
-								Defaults $defaults,
75
-								ISession $session,
76
-								IProvider $tokenProvider,
77
-								ISecureRandom $random,
78
-								IURLGenerator $urlGenerator) {
79
-		parent::__construct($appName, $request);
80
-		$this->userSession = $userSession;
81
-		$this->l10n = $l10n;
82
-		$this->defaults = $defaults;
83
-		$this->session = $session;
84
-		$this->tokenProvider = $tokenProvider;
85
-		$this->random = $random;
86
-		$this->urlGenerator = $urlGenerator;
87
-	}
88
-
89
-	/**
90
-	 * @return string
91
-	 */
92
-	private function getClientName() {
93
-		return $this->request->getHeader('USER_AGENT') !== null ? $this->request->getHeader('USER_AGENT') : 'unknown';
94
-	}
95
-
96
-	/**
97
-	 * @param string $stateToken
98
-	 * @return bool
99
-	 */
100
-	private function isValidToken($stateToken) {
101
-		$currentToken = $this->session->get(self::stateName);
102
-		return $currentToken === $stateToken;
103
-	}
104
-
105
-	/**
106
-	 * @return TemplateResponse
107
-	 */
108
-	private function stateTokenForbiddenResponse() {
109
-		$response = new TemplateResponse(
110
-			$this->appName,
111
-			'403',
112
-			[
113
-				'file' => $this->l10n->t('State token does not match'),
114
-			],
115
-			'guest'
116
-		);
117
-		$response->setStatus(Http::STATUS_FORBIDDEN);
118
-		return $response;
119
-	}
120
-
121
-	/**
122
-	 * @PublicPage
123
-	 * @NoCSRFRequired
124
-	 * @UseSession
125
-	 *
126
-	 * @return TemplateResponse
127
-	 */
128
-	public function showAuthPickerPage() {
129
-		if($this->userSession->isLoggedIn()) {
130
-			return new TemplateResponse(
131
-				$this->appName,
132
-				'403',
133
-				[
134
-					'file' => $this->l10n->t('Auth flow can only be started unauthenticated.'),
135
-				],
136
-				'guest'
137
-			);
138
-		}
139
-
140
-		$stateToken = $this->random->generate(
141
-			64,
142
-			ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_DIGITS
143
-		);
144
-		$this->session->set(self::stateName, $stateToken);
145
-
146
-		return new TemplateResponse(
147
-			$this->appName,
148
-			'loginflow/authpicker',
149
-			[
150
-				'client' => $this->getClientName(),
151
-				'instanceName' => $this->defaults->getName(),
152
-				'urlGenerator' => $this->urlGenerator,
153
-				'stateToken' => $stateToken,
154
-			],
155
-			'guest'
156
-		);
157
-	}
158
-
159
-	/**
160
-	 * @NoAdminRequired
161
-	 * @NoCSRFRequired
162
-	 * @UseSession
163
-	 *
164
-	 * @param string $stateToken
165
-	 * @return TemplateResponse
166
-	 */
167
-	public function redirectPage($stateToken = '') {
168
-		if(!$this->isValidToken($stateToken)) {
169
-			return $this->stateTokenForbiddenResponse();
170
-		}
171
-
172
-		return new TemplateResponse(
173
-			$this->appName,
174
-			'loginflow/redirect',
175
-			[
176
-				'urlGenerator' => $this->urlGenerator,
177
-				'stateToken' => $stateToken,
178
-			],
179
-			'empty'
180
-		);
181
-	}
182
-
183
-	/**
184
-	 * @NoAdminRequired
185
-	 * @UseSession
186
-	 *
187
-	 * @param string $stateToken
188
-	 * @return Http\RedirectResponse|Response
189
-	 */
190
-	public function generateAppPassword($stateToken) {
191
-		$this->session->remove(self::stateName);
192
-		if(!$this->isValidToken($stateToken)) {
193
-			return $this->stateTokenForbiddenResponse();
194
-		}
195
-
196
-		try {
197
-			$sessionId = $this->session->getId();
198
-		} catch (SessionNotAvailableException $ex) {
199
-			$response = new Response();
200
-			$response->setStatus(Http::STATUS_FORBIDDEN);
201
-			return $response;
202
-		}
203
-
204
-		try {
205
-			$sessionToken = $this->tokenProvider->getToken($sessionId);
206
-			$loginName = $sessionToken->getLoginName();
207
-			try {
208
-				$password = $this->tokenProvider->getPassword($sessionToken, $sessionId);
209
-			} catch (PasswordlessTokenException $ex) {
210
-				$password = null;
211
-			}
212
-		} catch (InvalidTokenException $ex) {
213
-			$response = new Response();
214
-			$response->setStatus(Http::STATUS_FORBIDDEN);
215
-			return $response;
216
-		}
217
-
218
-		$token = $this->random->generate(60);
219
-		$this->tokenProvider->generateToken(
220
-			$token,
221
-			$this->userSession->getUser()->getUID(),
222
-			$loginName,
223
-			$password,
224
-			$this->getClientName(),
225
-			IToken::PERMANENT_TOKEN,
226
-			IToken::DO_NOT_REMEMBER
227
-		);
228
-
229
-		return new Http\RedirectResponse('nc://' . urlencode($loginName) . ':' . urlencode($token) . '@' . $this->request->getServerHost());
230
-	}
42
+    /** @var IUserSession */
43
+    private $userSession;
44
+    /** @var IL10N */
45
+    private $l10n;
46
+    /** @var Defaults */
47
+    private $defaults;
48
+    /** @var ISession */
49
+    private $session;
50
+    /** @var IProvider */
51
+    private $tokenProvider;
52
+    /** @var ISecureRandom */
53
+    private $random;
54
+    /** @var IURLGenerator */
55
+    private $urlGenerator;
56
+
57
+    const stateName = 'client.flow.state.token';
58
+
59
+    /**
60
+     * @param string $appName
61
+     * @param IRequest $request
62
+     * @param IUserSession $userSession
63
+     * @param IL10N $l10n
64
+     * @param Defaults $defaults
65
+     * @param ISession $session
66
+     * @param IProvider $tokenProvider
67
+     * @param ISecureRandom $random
68
+     * @param IURLGenerator $urlGenerator
69
+     */
70
+    public function __construct($appName,
71
+                                IRequest $request,
72
+                                IUserSession $userSession,
73
+                                IL10N $l10n,
74
+                                Defaults $defaults,
75
+                                ISession $session,
76
+                                IProvider $tokenProvider,
77
+                                ISecureRandom $random,
78
+                                IURLGenerator $urlGenerator) {
79
+        parent::__construct($appName, $request);
80
+        $this->userSession = $userSession;
81
+        $this->l10n = $l10n;
82
+        $this->defaults = $defaults;
83
+        $this->session = $session;
84
+        $this->tokenProvider = $tokenProvider;
85
+        $this->random = $random;
86
+        $this->urlGenerator = $urlGenerator;
87
+    }
88
+
89
+    /**
90
+     * @return string
91
+     */
92
+    private function getClientName() {
93
+        return $this->request->getHeader('USER_AGENT') !== null ? $this->request->getHeader('USER_AGENT') : 'unknown';
94
+    }
95
+
96
+    /**
97
+     * @param string $stateToken
98
+     * @return bool
99
+     */
100
+    private function isValidToken($stateToken) {
101
+        $currentToken = $this->session->get(self::stateName);
102
+        return $currentToken === $stateToken;
103
+    }
104
+
105
+    /**
106
+     * @return TemplateResponse
107
+     */
108
+    private function stateTokenForbiddenResponse() {
109
+        $response = new TemplateResponse(
110
+            $this->appName,
111
+            '403',
112
+            [
113
+                'file' => $this->l10n->t('State token does not match'),
114
+            ],
115
+            'guest'
116
+        );
117
+        $response->setStatus(Http::STATUS_FORBIDDEN);
118
+        return $response;
119
+    }
120
+
121
+    /**
122
+     * @PublicPage
123
+     * @NoCSRFRequired
124
+     * @UseSession
125
+     *
126
+     * @return TemplateResponse
127
+     */
128
+    public function showAuthPickerPage() {
129
+        if($this->userSession->isLoggedIn()) {
130
+            return new TemplateResponse(
131
+                $this->appName,
132
+                '403',
133
+                [
134
+                    'file' => $this->l10n->t('Auth flow can only be started unauthenticated.'),
135
+                ],
136
+                'guest'
137
+            );
138
+        }
139
+
140
+        $stateToken = $this->random->generate(
141
+            64,
142
+            ISecureRandom::CHAR_LOWER.ISecureRandom::CHAR_UPPER.ISecureRandom::CHAR_DIGITS
143
+        );
144
+        $this->session->set(self::stateName, $stateToken);
145
+
146
+        return new TemplateResponse(
147
+            $this->appName,
148
+            'loginflow/authpicker',
149
+            [
150
+                'client' => $this->getClientName(),
151
+                'instanceName' => $this->defaults->getName(),
152
+                'urlGenerator' => $this->urlGenerator,
153
+                'stateToken' => $stateToken,
154
+            ],
155
+            'guest'
156
+        );
157
+    }
158
+
159
+    /**
160
+     * @NoAdminRequired
161
+     * @NoCSRFRequired
162
+     * @UseSession
163
+     *
164
+     * @param string $stateToken
165
+     * @return TemplateResponse
166
+     */
167
+    public function redirectPage($stateToken = '') {
168
+        if(!$this->isValidToken($stateToken)) {
169
+            return $this->stateTokenForbiddenResponse();
170
+        }
171
+
172
+        return new TemplateResponse(
173
+            $this->appName,
174
+            'loginflow/redirect',
175
+            [
176
+                'urlGenerator' => $this->urlGenerator,
177
+                'stateToken' => $stateToken,
178
+            ],
179
+            'empty'
180
+        );
181
+    }
182
+
183
+    /**
184
+     * @NoAdminRequired
185
+     * @UseSession
186
+     *
187
+     * @param string $stateToken
188
+     * @return Http\RedirectResponse|Response
189
+     */
190
+    public function generateAppPassword($stateToken) {
191
+        $this->session->remove(self::stateName);
192
+        if(!$this->isValidToken($stateToken)) {
193
+            return $this->stateTokenForbiddenResponse();
194
+        }
195
+
196
+        try {
197
+            $sessionId = $this->session->getId();
198
+        } catch (SessionNotAvailableException $ex) {
199
+            $response = new Response();
200
+            $response->setStatus(Http::STATUS_FORBIDDEN);
201
+            return $response;
202
+        }
203
+
204
+        try {
205
+            $sessionToken = $this->tokenProvider->getToken($sessionId);
206
+            $loginName = $sessionToken->getLoginName();
207
+            try {
208
+                $password = $this->tokenProvider->getPassword($sessionToken, $sessionId);
209
+            } catch (PasswordlessTokenException $ex) {
210
+                $password = null;
211
+            }
212
+        } catch (InvalidTokenException $ex) {
213
+            $response = new Response();
214
+            $response->setStatus(Http::STATUS_FORBIDDEN);
215
+            return $response;
216
+        }
217
+
218
+        $token = $this->random->generate(60);
219
+        $this->tokenProvider->generateToken(
220
+            $token,
221
+            $this->userSession->getUser()->getUID(),
222
+            $loginName,
223
+            $password,
224
+            $this->getClientName(),
225
+            IToken::PERMANENT_TOKEN,
226
+            IToken::DO_NOT_REMEMBER
227
+        );
228
+
229
+        return new Http\RedirectResponse('nc://' . urlencode($loginName) . ':' . urlencode($token) . '@' . $this->request->getServerHost());
230
+    }
231 231
 
232 232
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -126,7 +126,7 @@  discard block
 block discarded – undo
126 126
 	 * @return TemplateResponse
127 127
 	 */
128 128
 	public function showAuthPickerPage() {
129
-		if($this->userSession->isLoggedIn()) {
129
+		if ($this->userSession->isLoggedIn()) {
130 130
 			return new TemplateResponse(
131 131
 				$this->appName,
132 132
 				'403',
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
 	 * @return TemplateResponse
166 166
 	 */
167 167
 	public function redirectPage($stateToken = '') {
168
-		if(!$this->isValidToken($stateToken)) {
168
+		if (!$this->isValidToken($stateToken)) {
169 169
 			return $this->stateTokenForbiddenResponse();
170 170
 		}
171 171
 
@@ -189,7 +189,7 @@  discard block
 block discarded – undo
189 189
 	 */
190 190
 	public function generateAppPassword($stateToken) {
191 191
 		$this->session->remove(self::stateName);
192
-		if(!$this->isValidToken($stateToken)) {
192
+		if (!$this->isValidToken($stateToken)) {
193 193
 			return $this->stateTokenForbiddenResponse();
194 194
 		}
195 195
 
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 			IToken::DO_NOT_REMEMBER
227 227
 		);
228 228
 
229
-		return new Http\RedirectResponse('nc://' . urlencode($loginName) . ':' . urlencode($token) . '@' . $this->request->getServerHost());
229
+		return new Http\RedirectResponse('nc://'.urlencode($loginName).':'.urlencode($token).'@'.$this->request->getServerHost());
230 230
 	}
231 231
 
232 232
 }
Please login to merge, or discard this patch.