lerna: starting point

This commit is contained in:
41666 2019-04-02 23:05:19 -05:00
parent f7e2898633
commit cb0b1d2410
No known key found for this signature in database
GPG key ID: BC51D07640DC10AF
17 changed files with 730 additions and 1067 deletions

View file

@ -61,6 +61,7 @@ export default (R: Router, $: AppContext) => {
const { r } = ctx.query
// check if already authed
if (await $.auth.isLoggedIn(ctx, { refresh: true })) {
log.debug('already authed.', ctx.session)
return ctx.redirect(r || '/')
}
@ -79,6 +80,7 @@ export default (R: Router, $: AppContext) => {
const { oauthRedirect: r } = ctx.session
delete ctx.session.oauthRedirect
if (await $.auth.isLoggedIn(ctx)) {
log.debug('user was logged in')
return ctx.redirect(r || '/')
}
@ -108,6 +110,7 @@ export default (R: Router, $: AppContext) => {
const tokens = await $.discord.initializeOAuth(code)
const user = await $.discord.getUserFromToken(tokens.access_token)
$.auth.injectSessionFromOAuth(ctx, tokens, user.id)
log.debug('user logged in', { tokens, user, s: ctx.session })
return ctx.redirect(r || '/')
} catch (e) {
log.error('token and auth fetch failure', e)

View file

@ -100,15 +100,6 @@ export default (R: Router, $: AppContext) => {
ctx.body = { ok: true }
})
R.get('/api/admin/servers', async (ctx: Context) => {
const { userId } = (ctx.session: { userId: string })
if (!$.discord.isRoot(userId)) {
return
}
ctx.body = $.discord.client.guilds.map(g => ({ url: `${$.config.appUrl}/s/${g.id}`, name: g.name, members: g.members.array().length, roles: g.roles.array().length }))
})
R.patch('/api/servers/:server/roles', async (ctx: Context) => {
const { userId } = (ctx.session: { userId: string })
const { server } = (ctx.params: { server: string })
@ -126,30 +117,20 @@ export default (R: Router, $: AppContext) => {
}
}
const { added, removed } = ((ctx.request.body: any): { added: string[], removed: string[] })
const originalRoles = gm.roles
let { added, removed } = ((ctx.request.body: any): { added: string[], removed: string[] })
const allowedRoles = await $.server.getAllowedRoles(server)
const allowedRoles: string[] = await $.server.getAllowedRoles(server)
const pred = r => $.discord.safeRole(server, r) && allowedRoles.indexOf(r) !== -1
const isSafe = (r: string) => $.discord.safeRole(server, r) && allowedRoles.includes(r)
if (added.length > 0) {
gm = await gm.addRoles(added.filter(pred))
}
added = added.filter(isSafe)
removed = removed.filter(isSafe)
setTimeout(() => {
if (gm == null) {
ctx.body = {
err: 'guild member disappeared on remove, this should never happen.'
}
ctx.status = 500
return
}
if (removed.length > 0) {
gm.removeRoles(removed.filter(pred))
}
}, 1000)
const newRoles = originalRoles.concat(added).filter(x => !removed.includes(x))
gm.edit({
roles: newRoles
})
ctx.body = { ok: true }
})