summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2018-04-09 08:45:27 +0200
committerGitHub <noreply@github.com>2018-04-09 08:45:27 +0200
commitb2350810e0dc32c47b38e03b9149e136c0c4ea8b (patch)
treefa2c696e1631b3b2db70f58f20477712850671a6
parent04f8b99dce920f254cdf3443b2e947e1326173fb (diff)
parent177c8972cc138ad759b02dc06a935b2b11e61a1f (diff)
downloadnextcloud-server-b2350810e0dc32c47b38e03b9149e136c0c4ea8b.tar.gz
nextcloud-server-b2350810e0dc32c47b38e03b9149e136c0c4ea8b.zip
Merge pull request #9115 from nextcloud/feature/noid/login_flow_wording
Improve login flow
-rw-r--r--core/Controller/ClientFlowLoginController.php38
-rw-r--r--core/routes.php1
-rw-r--r--core/templates/loginflow/authpicker.php10
-rw-r--r--core/templates/loginflow/grant.php46
4 files changed, 90 insertions, 5 deletions
diff --git a/core/Controller/ClientFlowLoginController.php b/core/Controller/ClientFlowLoginController.php
index 23bd42a0f18..ab9d98df8d6 100644
--- a/core/Controller/ClientFlowLoginController.php
+++ b/core/Controller/ClientFlowLoginController.php
@@ -213,6 +213,44 @@ class ClientFlowLoginController extends Controller {
* @param string $clientIdentifier
* @return TemplateResponse
*/
+ public function grantPage($stateToken = '',
+ $clientIdentifier = '') {
+ if(!$this->isValidToken($stateToken)) {
+ return $this->stateTokenForbiddenResponse();
+ }
+
+ $clientName = $this->getClientName();
+ $client = null;
+ if($clientIdentifier !== '') {
+ $client = $this->clientMapper->getByIdentifier($clientIdentifier);
+ $clientName = $client->getName();
+ }
+
+ return new TemplateResponse(
+ $this->appName,
+ 'loginflow/grant',
+ [
+ 'client' => $clientName,
+ 'clientIdentifier' => $clientIdentifier,
+ 'instanceName' => $this->defaults->getName(),
+ 'urlGenerator' => $this->urlGenerator,
+ 'stateToken' => $stateToken,
+ 'serverHost' => $this->request->getServerHost(),
+ 'oauthState' => $this->session->get('oauth.state'),
+ ],
+ 'guest'
+ );
+ }
+
+ /**
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @UseSession
+ *
+ * @param string $stateToken
+ * @param string $clientIdentifier
+ * @return TemplateResponse
+ */
public function redirectPage($stateToken = '',
$clientIdentifier = '') {
if(!$this->isValidToken($stateToken)) {
diff --git a/core/routes.php b/core/routes.php
index 1c7be78bc78..cc1bd34d898 100644
--- a/core/routes.php
+++ b/core/routes.php
@@ -54,6 +54,7 @@ $application->registerRoutes($this, [
['name' => 'ClientFlowLogin#showAuthPickerPage', 'url' => '/login/flow', 'verb' => 'GET'],
['name' => 'ClientFlowLogin#redirectPage', 'url' => '/login/flow/redirect', 'verb' => 'GET'],
['name' => 'ClientFlowLogin#generateAppPassword', 'url' => '/login/flow', 'verb' => 'POST'],
+ ['name' => 'ClientFlowLogin#grantPage', 'url' => '/login/flow/grant', 'verb' => 'GET'],
['name' => 'TwoFactorChallenge#selectChallenge', 'url' => '/login/selectchallenge', 'verb' => 'GET'],
['name' => 'TwoFactorChallenge#showChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'GET'],
['name' => 'TwoFactorChallenge#solveChallenge', 'url' => '/login/challenge/{challengeProviderId}', 'verb' => 'POST'],
diff --git a/core/templates/loginflow/authpicker.php b/core/templates/loginflow/authpicker.php
index 1858f8bcb62..4e2282a1807 100644
--- a/core/templates/loginflow/authpicker.php
+++ b/core/templates/loginflow/authpicker.php
@@ -28,9 +28,9 @@ $urlGenerator = $_['urlGenerator'];
?>
<div class="picker-window">
- <h2><?php p($l->t('Account access')) ?></h2>
+ <h2><?php p($l->t('Connect to your account')) ?></h2>
<p class="info">
- <?php print_unescaped($l->t('You are about to grant %s access to your %s account.', [
+ <?php print_unescaped($l->t('Please log in before granting %s access to your %s account.', [
'<strong>' . \OCP\Util::sanitizeHTML($_['client']) . '</strong>',
\OCP\Util::sanitizeHTML($_['instanceName'])
])) ?>
@@ -39,8 +39,8 @@ $urlGenerator = $_['urlGenerator'];
<br/>
<p id="redirect-link">
- <a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLogin.redirectPage', ['stateToken' => $_['stateToken'], 'clientIdentifier' => $_['clientIdentifier'], 'oauthState' => $_['oauthState']])) ?>">
- <input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Grant access')) ?>">
+ <a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLogin.grantPage', ['stateToken' => $_['stateToken'], 'clientIdentifier' => $_['clientIdentifier'], 'oauthState' => $_['oauthState']])) ?>">
+ <input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Log in')) ?>">
</a>
</p>
@@ -59,5 +59,5 @@ $urlGenerator = $_['urlGenerator'];
</div>
<?php if(empty($_['oauthState'])): ?>
-<a id="app-token-login" class="warning" href="#"><?php p($l->t('Alternative login using app token')) ?></a>
+<a id="app-token-login" class="warning" href="#"><?php p($l->t('Alternative log in using app token')) ?></a>
<?php endif; ?>
diff --git a/core/templates/loginflow/grant.php b/core/templates/loginflow/grant.php
new file mode 100644
index 00000000000..6278e910bdb
--- /dev/null
+++ b/core/templates/loginflow/grant.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+script('core', 'login/authpicker');
+style('core', 'login/authpicker');
+
+/** @var array $_ */
+/** @var \OCP\IURLGenerator $urlGenerator */
+$urlGenerator = $_['urlGenerator'];
+?>
+
+<div class="picker-window">
+ <h2><?php p($l->t('Account access')) ?></h2>
+ <p class="info">
+ <?php print_unescaped($l->t('You are about to grant %s access to your %s account.', [
+ '<strong>' . \OCP\Util::sanitizeHTML($_['client']) . '</strong>',
+ \OCP\Util::sanitizeHTML($_['instanceName'])
+ ])) ?>
+ </p>
+
+ <br/>
+
+ <p id="redirect-link">
+ <a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLogin.redirectPage', ['stateToken' => $_['stateToken'], 'clientIdentifier' => $_['clientIdentifier'], 'oauthState' => $_['oauthState']])) ?>">
+ <input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Grant access')) ?>">
+ </a>
+ </p>
+</div>