mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-16 18:29:08 +00:00
lerna: starting point
This commit is contained in:
parent
f7e2898633
commit
cb0b1d2410
17 changed files with 730 additions and 1067 deletions
|
@ -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)
|
||||
|
|
|
@ -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 }
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue