nanka iroiro

This commit is contained in:
syuilo 2017-02-09 00:11:16 +09:00
parent 0aa6d848fa
commit bc1698e755
9 changed files with 122 additions and 0 deletions

View file

@ -46,6 +46,7 @@ export default [
{ name: 'i/appdata/get', shouldBeSignin: true }, { name: 'i/appdata/get', shouldBeSignin: true },
{ name: 'i/appdata/set', shouldBeSignin: true }, { name: 'i/appdata/set', shouldBeSignin: true },
{ name: 'i/signin_history', shouldBeSignin: true, kind: 'account-read' }, { 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: 'i/notifications', shouldBeSignin: true, kind: 'notification-read' },
{ name: 'notifications/delete', shouldBeSignin: true, kind: 'notification-write' }, { name: 'notifications/delete', shouldBeSignin: true, kind: 'notification-write' },

View file

@ -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))));
});

View file

@ -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>

View file

@ -17,3 +17,4 @@ require('./copyright.tag');
require('./signin-history.tag'); require('./signin-history.tag');
require('./api-info.tag'); require('./api-info.tag');
require('./twitter-setting.tag'); require('./twitter-setting.tag');
require('./authorized-apps.tag');

View file

@ -63,6 +63,11 @@
</label> </label>
</section> </section>
<section class="apps" show={ page == 'apps' }>
<h1>アプリケーション</h1>
<mk-authorized-apps></mk-authorized-apps>
</section>
<section class="twitter" show={ page == 'twitter' }> <section class="twitter" show={ page == 'twitter' }>
<h1>Twitter</h1> <h1>Twitter</h1>
<mk-twitter-setting></mk-twitter-setting> <mk-twitter-setting></mk-twitter-setting>

View file

@ -19,6 +19,7 @@ module.exports = (me) ~>
route \/i/settings/signin-history settings-signin route \/i/settings/signin-history settings-signin
route \/i/settings/api settings-api route \/i/settings/api settings-api
route \/i/settings/twitter settings-twitter route \/i/settings/twitter settings-twitter
route \/i/settings/authorized-apps settings-authorized-apps
route \/post/new new-post route \/post/new new-post
route \/post::post post route \/post::post post
route \/search::query search route \/search::query search
@ -61,6 +62,8 @@ module.exports = (me) ~>
mount document.create-element \mk-api-info-page mount document.create-element \mk-api-info-page
function settings-twitter function settings-twitter
mount document.create-element \mk-twitter-setting-page mount document.create-element \mk-twitter-setting-page
function settings-authorized-apps
mount document.create-element \mk-authorized-apps-page
# 検索 # 検索
function search ctx function search ctx

View file

@ -17,6 +17,7 @@ require('./page/search.tag');
require('./page/settings.tag'); require('./page/settings.tag');
require('./page/settings/signin.tag'); require('./page/settings/signin.tag');
require('./page/settings/api.tag'); require('./page/settings/api.tag');
require('./page/settings/authorized-apps.tag');
require('./page/settings/twitter.tag'); require('./page/settings/twitter.tag');
require('./home.tag'); require('./home.tag');
require('./home-timeline.tag'); require('./home-timeline.tag');

View file

@ -2,6 +2,7 @@
<mk-ui ref="ui"> <mk-ui ref="ui">
<ul> <ul>
<li><a><i class="fa fa-user"></i>プロフィール</a></li> <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/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/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> <li><a href="./settings/api"><i class="fa fa-key"></i>API</a></li>

View file

@ -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>