strictNullChecks (#4666)

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip
This commit is contained in:
syuilo
2019-04-13 01:43:22 +09:00
committed by GitHub
parent 4ee40c3345
commit 987168b863
214 changed files with 939 additions and 785 deletions

View File

@@ -10,6 +10,7 @@ import signin from '../common/signin';
import fetchMeta from '../../../misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
import { ensure } from '../../../prelude/ensure';
function getUserToken(ctx: Koa.BaseContext) {
return ((ctx.headers['cookie'] || '').match(/i=(!\w+)/) || [null, null])[1];
@@ -43,7 +44,7 @@ router.get('/disconnect/discord', async ctx => {
const user = await Users.findOne({
host: null,
token: userToken
});
}).then(ensure);
await UserProfiles.update({
userId: user.id
@@ -71,8 +72,8 @@ async function getOAuth2() {
if (meta.enableDiscordIntegration) {
return new OAuth2(
meta.discordClientId,
meta.discordClientSecret,
meta.discordClientId!,
meta.discordClientSecret!,
'https://discordapp.com/',
'api/oauth2/authorize',
'api/oauth2/token');
@@ -82,6 +83,8 @@ async function getOAuth2() {
}
router.get('/connect/discord', async ctx => {
if (redis == null) return;
if (!compareOrigin(ctx)) {
ctx.throw(400, 'invalid origin');
return;
@@ -103,10 +106,12 @@ router.get('/connect/discord', async ctx => {
redis.set(userToken, JSON.stringify(params));
const oauth2 = await getOAuth2();
ctx.redirect(oauth2.getAuthorizeUrl(params));
ctx.redirect(oauth2!.getAuthorizeUrl(params));
});
router.get('/signin/discord', async ctx => {
if (redis == null) return;
const sessid = uuid();
const params = {
@@ -129,10 +134,12 @@ router.get('/signin/discord', async ctx => {
redis.set(sessid, JSON.stringify(params));
const oauth2 = await getOAuth2();
ctx.redirect(oauth2.getAuthorizeUrl(params));
ctx.redirect(oauth2!.getAuthorizeUrl(params));
});
router.get('/dc/cb', async ctx => {
if (redis == null) return;
const userToken = getUserToken(ctx);
const oauth2 = await getOAuth2();
@@ -153,7 +160,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
redis.get(sessid, async (_, state) => {
redis!.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -164,24 +171,22 @@ router.get('/dc/cb', async ctx => {
}
const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
oauth2.getOAuthAccessToken(
code,
{
grant_type: 'authorization_code',
redirect_uri
},
(err, accessToken, refreshToken, result) => {
if (err)
rej(err);
else if (result.error)
rej(result.error);
else
oauth2!.getOAuthAccessToken(code, {
grant_type: 'authorization_code',
redirect_uri
}, (err, accessToken, refreshToken, result) => {
if (err) {
rej(err);
} else if (result.error) {
rej(result.error);
} else {
res({
accessToken,
refreshToken,
expiresDate: Date.now() + Number(result.expires_in) * 1000
});
}));
}
}));
const { id, username, discriminator } = await new Promise<any>((res, rej) =>
request({
@@ -191,10 +196,11 @@ router.get('/dc/cb', async ctx => {
'User-Agent': config.userAgent
}
}, (err, response, body) => {
if (err)
if (err) {
rej(err);
else
} else {
res(JSON.parse(body));
}
}));
if (!id || !username || !discriminator) {
@@ -235,7 +241,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
redis.get(userToken, async (_, state) => {
redis!.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -246,24 +252,22 @@ router.get('/dc/cb', async ctx => {
}
const { accessToken, refreshToken, expiresDate } = await new Promise<any>((res, rej) =>
oauth2.getOAuthAccessToken(
code,
{
grant_type: 'authorization_code',
redirect_uri
},
(err, accessToken, refreshToken, result) => {
if (err)
rej(err);
else if (result.error)
rej(result.error);
else
res({
accessToken,
refreshToken,
expiresDate: Date.now() + Number(result.expires_in) * 1000
});
}));
oauth2!.getOAuthAccessToken(code, {
grant_type: 'authorization_code',
redirect_uri
}, (err, accessToken, refreshToken, result) => {
if (err) {
rej(err);
} else if (result.error) {
rej(result.error);
} else {
res({
accessToken,
refreshToken,
expiresDate: Date.now() + Number(result.expires_in) * 1000
});
}
}));
const { id, username, discriminator } = await new Promise<any>((res, rej) =>
request({
@@ -273,10 +277,11 @@ router.get('/dc/cb', async ctx => {
'User-Agent': config.userAgent
}
}, (err, response, body) => {
if (err)
if (err) {
rej(err);
else
} else {
res(JSON.parse(body));
}
}));
if (!id || !username || !discriminator) {
@@ -287,7 +292,7 @@ router.get('/dc/cb', async ctx => {
const user = await Users.findOne({
host: null,
token: userToken
});
}).then(ensure);
await UserProfiles.update({ userId: user.id }, {
discord: true,