aboutsummaryrefslogtreecommitdiffstats
path: root/apps/oauth2
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2022-05-20 17:07:21 +0200
committerCarl Schwan <carl@carlschwan.eu>2022-07-14 12:16:13 +0200
commit53db418ee90eb366dc4488afcb02c8a6d5085097 (patch)
treede00140c7fd92bf85bdf6853197abbf093396849 /apps/oauth2
parentd3f66e2310ef790794aba81f12d7ab6a035736c3 (diff)
downloadnextcloud-server-53db418ee90eb366dc4488afcb02c8a6d5085097.tar.gz
nextcloud-server-53db418ee90eb366dc4488afcb02c8a6d5085097.zip
Cleanup oauth2 admin settings
- Use more vue components - Add link to doc Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/oauth2')
-rw-r--r--apps/oauth2/lib/Settings/Admin.php25
-rw-r--r--apps/oauth2/src/App.vue32
-rw-r--r--apps/oauth2/src/components/OAuthItem.vue17
-rw-r--r--apps/oauth2/tests/Settings/AdminTest.php9
4 files changed, 60 insertions, 23 deletions
diff --git a/apps/oauth2/lib/Settings/Admin.php b/apps/oauth2/lib/Settings/Admin.php
index ddf5302a1aa..aa2bd6db012 100644
--- a/apps/oauth2/lib/Settings/Admin.php
+++ b/apps/oauth2/lib/Settings/Admin.php
@@ -28,21 +28,23 @@ namespace OCA\OAuth2\Settings;
use OCA\OAuth2\Db\ClientMapper;
use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IInitialStateService;
+use OCP\AppFramework\Services\IInitialState;
use OCP\Settings\ISettings;
+use OCP\IURLGenerator;
class Admin implements ISettings {
+ private IInitialState $initialState;
+ private ClientMapper $clientMapper;
+ private IURLGenerator $urlGenerator;
- /** @var IInitialStateService */
- private $initialStateService;
-
- /** @var ClientMapper */
- private $clientMapper;
-
- public function __construct(IInitialStateService $initialStateService,
- ClientMapper $clientMapper) {
- $this->initialStateService = $initialStateService;
+ public function __construct(
+ IInitialState $initialState,
+ ClientMapper $clientMapper,
+ IURLGenerator $urlGenerator
+ ) {
+ $this->initialState = $initialState;
$this->clientMapper = $clientMapper;
+ $this->urlGenerator = $urlGenerator;
}
public function getForm(): TemplateResponse {
@@ -58,7 +60,8 @@ class Admin implements ISettings {
'clientSecret' => $client->getSecret(),
];
}
- $this->initialStateService->provideInitialState('oauth2', 'clients', $result);
+ $this->initialState->provideInitialState('clients', $result);
+ $this->initialState->provideInitialState('oauth2-doc-link', $this->urlGenerator->linkToDocs('admin-oauth2'));
return new TemplateResponse(
'oauth2',
diff --git a/apps/oauth2/src/App.vue b/apps/oauth2/src/App.vue
index afb98ed77d2..3636a532ce1 100644
--- a/apps/oauth2/src/App.vue
+++ b/apps/oauth2/src/App.vue
@@ -20,11 +20,9 @@
-
-->
<template>
- <div id="oauth2" class="section">
- <h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2>
- <p class="settings-hint">
- {{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }}
- </p>
+ <SettingsSection :title="t('oauth2', 'OAuth 2.0 clients')"
+ :description="t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName })"
+ :doc-url="oauthDocLink">
<table v-if="clients.length > 0" class="grid">
<thead>
<tr>
@@ -56,20 +54,28 @@
type="url"
name="redirectUri"
:placeholder="t('oauth2', 'Redirection URI')">
- <input type="submit" class="button" :value="t('oauth2', 'Add')">
+ <Button class="inline-button">
+ {{ t('oauth2', 'Add') }}
+ </Button>
</form>
- </div>
+ </SettingsSection>
</template>
<script>
import axios from '@nextcloud/axios'
import OAuthItem from './components/OAuthItem'
import { generateUrl } from '@nextcloud/router'
+import { getCapabilities } from '@nextcloud/capabilities'
+import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection'
+import Button from '@nextcloud/vue/dist/Components/Button'
+import { loadState } from '@nextcloud/initial-state'
export default {
name: 'App',
components: {
OAuthItem,
+ SettingsSection,
+ Button,
},
props: {
clients: {
@@ -85,8 +91,14 @@ export default {
errorMsg: '',
error: false,
},
+ oauthDocLink: loadState('oauth2', 'oauth2-doc-link'),
}
},
+ computed: {
+ instanceName() {
+ return getCapabilities().theming.name
+ },
+ },
methods: {
deleteClient(id) {
axios.delete(generateUrl('apps/oauth2/clients/{id}', { id }))
@@ -122,4 +134,10 @@ export default {
table {
max-width: 800px;
}
+
+ /** Overwrite button height and position to be aligned with the text input */
+ .inline-button {
+ min-height: 34px !important;
+ display: inline-flex !important;
+ }
</style>
diff --git a/apps/oauth2/src/components/OAuthItem.vue b/apps/oauth2/src/components/OAuthItem.vue
index 72d04d2aac3..6f4c5ad0f7e 100644
--- a/apps/oauth2/src/components/OAuthItem.vue
+++ b/apps/oauth2/src/components/OAuthItem.vue
@@ -42,14 +42,29 @@
</table>
</td>
<td class="action-column">
- <span><a class="icon-delete has-tooltip" :title="t('oauth2', 'Delete')" @click="$emit('delete', id)" /></span>
+ <Button type="tertiary-no-background"
+ :aria-label="t('oauth2', 'Delete')"
+ @click="$emit('delete', id)">
+ <template #icon>
+ <Delete :size="20"
+ :title="t('oauth2', 'Delete')" />
+ </template>
+ </Button>
</td>
</tr>
</template>
<script>
+
+import Delete from 'vue-material-design-icons/Delete'
+import Button from '@nextcloud/vue/dist/Components/Button'
+
export default {
name: 'OAuthItem',
+ components: {
+ Delete,
+ Button,
+ },
props: {
client: {
type: Object,
diff --git a/apps/oauth2/tests/Settings/AdminTest.php b/apps/oauth2/tests/Settings/AdminTest.php
index 93a9c528420..fc5ebbb8365 100644
--- a/apps/oauth2/tests/Settings/AdminTest.php
+++ b/apps/oauth2/tests/Settings/AdminTest.php
@@ -26,7 +26,8 @@ namespace OCA\OAuth2\Tests\Settings;
use OCA\OAuth2\Db\ClientMapper;
use OCA\OAuth2\Settings\Admin;
use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IInitialStateService;
+use OCP\AppFramework\Services\IInitialState;
+use OCP\IURLGenerator;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -36,7 +37,7 @@ class AdminTest extends TestCase {
private $admin;
/** @var IInitialStateService|MockObject */
- private $initialStateService;
+ private $initialState;
/** @var ClientMapper|MockObject */
private $clientMapper;
@@ -44,10 +45,10 @@ class AdminTest extends TestCase {
protected function setUp(): void {
parent::setUp();
- $this->initialStateService = $this->createMock(IInitialStateService::class);
+ $this->initialState = $this->createMock(IInitialState::class);
$this->clientMapper = $this->createMock(ClientMapper::class);
- $this->admin = new Admin($this->initialStateService, $this->clientMapper);
+ $this->admin = new Admin($this->initialState, $this->clientMapper, $this->createMock(IURLGenerator::class));
}
public function testGetForm() {