upadte
This commit is contained in:
48
github/list.ts
Normal file
48
github/list.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import { app } from '@/app.ts';
|
||||
import { CustomError } from '@kevisual/router';
|
||||
import { getAccessToken } from './lib/get-token.ts';
|
||||
import { GithubModel } from './models/github.ts';
|
||||
|
||||
app
|
||||
.route({
|
||||
path: 'github',
|
||||
key: 'token',
|
||||
middleware: ['auth'],
|
||||
})
|
||||
.define(async (ctx) => {
|
||||
const tokenUser = ctx.state.tokenUser;
|
||||
const github = await GithubModel.findOne({
|
||||
where: {
|
||||
uid: tokenUser.id,
|
||||
},
|
||||
logging: false,
|
||||
});
|
||||
if (github) {
|
||||
ctx.body = {
|
||||
githubToken: github.githubToken,
|
||||
};
|
||||
return;
|
||||
}
|
||||
const { code } = ctx.query;
|
||||
if (!code) {
|
||||
throw new CustomError(400, 'code is required');
|
||||
}
|
||||
try {
|
||||
console.log('get access token from github, code:', code);
|
||||
const token = await getAccessToken(code);
|
||||
if (!token) {
|
||||
throw new CustomError(500, 'Failed to get access token');
|
||||
}
|
||||
await GithubModel.create({
|
||||
uid: tokenUser.id,
|
||||
githubToken: token,
|
||||
});
|
||||
ctx.body = {
|
||||
githubToken: token,
|
||||
};
|
||||
} catch (e) {
|
||||
console.error('get access token from github error:', e);
|
||||
throw new CustomError(500, 'Failed to get access token');
|
||||
}
|
||||
})
|
||||
.addTo(app);
|
||||
Reference in New Issue
Block a user