summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-02-09 00:11:16 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-02-09 00:11:16 +0900
commitbc1698e755cbfa33257360f5bdff781e8ecef517 (patch)
tree195b3b9654fcd13ccc708a508ccb55f2d2fee91a /src
parentRefactor: Clean up (diff)
downloadsharkey-bc1698e755cbfa33257360f5bdff781e8ecef517.tar.gz
sharkey-bc1698e755cbfa33257360f5bdff781e8ecef517.tar.bz2
sharkey-bc1698e755cbfa33257360f5bdff781e8ecef517.zip
nanka iroiro
Diffstat (limited to 'src')
-rw-r--r--src/api/endpoints.ts1
-rw-r--r--src/api/endpoints/i/authorized_apps.js60
-rw-r--r--src/web/app/common/tags/authorized-apps.tag34
-rw-r--r--src/web/app/common/tags/index.js1
-rw-r--r--src/web/app/desktop/tags/settings.tag5
-rw-r--r--src/web/app/mobile/router.ls3
-rw-r--r--src/web/app/mobile/tags/index.js1
-rw-r--r--src/web/app/mobile/tags/page/settings.tag1
-rw-r--r--src/web/app/mobile/tags/page/settings/authorized-apps.tag16
9 files changed, 122 insertions, 0 deletions
diff --git a/src/api/endpoints.ts b/src/api/endpoints.ts
index ad45f42bc7..e4abc06f53 100644
--- a/src/api/endpoints.ts
+++ b/src/api/endpoints.ts
@@ -46,6 +46,7 @@ export default [
{ name: 'i/appdata/get', shouldBeSignin: true },
{ name: 'i/appdata/set', shouldBeSignin: true },
{ name: 'i/signin_history', shouldBeSignin: true, kind: 'account-read' },
+ { name: 'i/authorized_apps', shouldBeSignin: true, secure: true },
{ name: 'i/notifications', shouldBeSignin: true, kind: 'notification-read' },
{ name: 'notifications/delete', shouldBeSignin: true, kind: 'notification-write' },
diff --git a/src/api/endpoints/i/authorized_apps.js b/src/api/endpoints/i/authorized_apps.js
new file mode 100644
index 0000000000..17f971af2f
--- /dev/null
+++ b/src/api/endpoints/i/authorized_apps.js
@@ -0,0 +1,60 @@
+'use strict';
+
+/**
+ * Module dependencies
+ */
+import * as mongo from 'mongodb';
+import AccessToken from '../../models/access-token';
+import App from '../../models/app';
+import serialize from '../../serializers/app';
+
+/**
+ * Get authorized apps of my account
+ *
+ * @param {Object} params
+ * @param {Object} user
+ * @return {Promise<object>}
+ */
+module.exports = (params, user) =>
+ new Promise(async (res, rej) =>
+{
+ // Get 'limit' parameter
+ let limit = params.limit;
+ if (limit !== undefined && limit !== null) {
+ limit = parseInt(limit, 10);
+
+ // From 1 to 100
+ if (!(1 <= limit && limit <= 100)) {
+ return rej('invalid limit range');
+ }
+ } else {
+ limit = 10;
+ }
+
+ // Get 'offset' parameter
+ let offset = params.offset;
+ if (offset !== undefined && offset !== null) {
+ offset = parseInt(offset, 10);
+ } else {
+ offset = 0;
+ }
+
+ // Get 'sort' parameter
+ let sort = params.sort || 'desc';
+
+ // Get tokens
+ const tokens = await AccessToken
+ .find({
+ user_id: user._id
+ }, {
+ limit: limit,
+ skip: offset,
+ sort: {
+ _id: sort == 'asc' ? 1 : -1
+ }
+ });
+
+ // Serialize
+ res(await Promise.all(tokens.map(async token =>
+ await serialize(token.app_id))));
+});
diff --git a/src/web/app/common/tags/authorized-apps.tag b/src/web/app/common/tags/authorized-apps.tag
new file mode 100644
index 0000000000..aedfc78fd9
--- /dev/null
+++ b/src/web/app/common/tags/authorized-apps.tag
@@ -0,0 +1,34 @@
+<mk-authorized-apps>
+ <p class="none" if={ apps.length == 0 }>連携しているアプリケーションはありません。</p>
+ <div class="apps" if={ apps.length != 0 }>
+ <div each={ apps }>
+ <p><b>{ app.name }</b></p>
+ <p>{ app.description }</p>
+ </div>
+ </div>
+ <style type="stylus">
+ :scope
+ display block
+
+ > .apps
+ > div
+ padding 16px 0 0 0
+ border-bottom solid 1px #eee
+
+ </style>
+ <script>
+ @mixin \api
+
+ @apps = []
+ @fetching = true
+
+ @on \mount ~>
+ @api \i/authorized_apps
+ .then (apps) ~>
+ @apps = apps
+ @fetching = false
+ @update!
+ .catch (err) ~>
+ console.error err
+ </script>
+</mk-authorized-apps>
diff --git a/src/web/app/common/tags/index.js b/src/web/app/common/tags/index.js
index a27dc11987..ef61d51ba4 100644
--- a/src/web/app/common/tags/index.js
+++ b/src/web/app/common/tags/index.js
@@ -17,3 +17,4 @@ require('./copyright.tag');
require('./signin-history.tag');
require('./api-info.tag');
require('./twitter-setting.tag');
+require('./authorized-apps.tag');
diff --git a/src/web/app/desktop/tags/settings.tag b/src/web/app/desktop/tags/settings.tag
index f446440dc8..3f8f759b47 100644
--- a/src/web/app/desktop/tags/settings.tag
+++ b/src/web/app/desktop/tags/settings.tag
@@ -63,6 +63,11 @@
</label>
</section>
+ <section class="apps" show={ page == 'apps' }>
+ <h1>アプリケーション</h1>
+ <mk-authorized-apps></mk-authorized-apps>
+ </section>
+
<section class="twitter" show={ page == 'twitter' }>
<h1>Twitter</h1>
<mk-twitter-setting></mk-twitter-setting>
diff --git a/src/web/app/mobile/router.ls b/src/web/app/mobile/router.ls
index 500f19e9a8..ae68f2177f 100644
--- a/src/web/app/mobile/router.ls
+++ b/src/web/app/mobile/router.ls
@@ -19,6 +19,7 @@ module.exports = (me) ~>
route \/i/settings/signin-history settings-signin
route \/i/settings/api settings-api
route \/i/settings/twitter settings-twitter
+ route \/i/settings/authorized-apps settings-authorized-apps
route \/post/new new-post
route \/post::post post
route \/search::query search
@@ -61,6 +62,8 @@ module.exports = (me) ~>
mount document.create-element \mk-api-info-page
function settings-twitter
mount document.create-element \mk-twitter-setting-page
+ function settings-authorized-apps
+ mount document.create-element \mk-authorized-apps-page
# 検索
function search ctx
diff --git a/src/web/app/mobile/tags/index.js b/src/web/app/mobile/tags/index.js
index eb0f10cf7b..a4374d4e16 100644
--- a/src/web/app/mobile/tags/index.js
+++ b/src/web/app/mobile/tags/index.js
@@ -17,6 +17,7 @@ require('./page/search.tag');
require('./page/settings.tag');
require('./page/settings/signin.tag');
require('./page/settings/api.tag');
+require('./page/settings/authorized-apps.tag');
require('./page/settings/twitter.tag');
require('./home.tag');
require('./home-timeline.tag');
diff --git a/src/web/app/mobile/tags/page/settings.tag b/src/web/app/mobile/tags/page/settings.tag
index 77bf36dbbd..18f03b3034 100644
--- a/src/web/app/mobile/tags/page/settings.tag
+++ b/src/web/app/mobile/tags/page/settings.tag
@@ -2,6 +2,7 @@
<mk-ui ref="ui">
<ul>
<li><a><i class="fa fa-user"></i>プロフィール</a></li>
+ <li><a href="./settings/authorized-apps"><i class="fa fa-puzzle-piece"></i>アプリケーション</a></li>
<li><a href="./settings/twitter"><i class="fa fa-twitter"></i>Twitter連携</a></li>
<li><a href="./settings/signin-history"><i class="fa fa-sign-in"></i>ログイン履歴</a></li>
<li><a href="./settings/api"><i class="fa fa-key"></i>API</a></li>
diff --git a/src/web/app/mobile/tags/page/settings/authorized-apps.tag b/src/web/app/mobile/tags/page/settings/authorized-apps.tag
new file mode 100644
index 0000000000..a1385c4937
--- /dev/null
+++ b/src/web/app/mobile/tags/page/settings/authorized-apps.tag
@@ -0,0 +1,16 @@
+<mk-authorized-apps-page>
+ <mk-ui ref="ui">
+ <mk-authorized-apps></mk-authorized-apps>
+ </mk-ui>
+ <style type="stylus">
+ :scope
+ display block
+ </style>
+ <script>
+ @mixin \ui
+
+ @on \mount ~>
+ document.title = 'Misskey | アプリケーション'
+ @ui.trigger \title '<i class="fa fa-puzzle-piece"></i>アプリケーション'
+ </script>
+</mk-authorized-apps-page>