chore(server): core IoC #77 - apitoken resolvers to TS

This commit is contained in:
Kristaps Fabians Geikins
2024-10-16 17:56:46 +03:00
parent fe1997b86d
commit 1d006beb47
3 changed files with 18 additions and 18 deletions
@@ -42,7 +42,7 @@ export type ApiTokenRecord = {
lastChars: Nullable<string>
revoked: boolean
lifespan: number | bigint
createdAt: string
createdAt: Date
lastUsed: Date
}
@@ -37,7 +37,7 @@ export type GetUserPersonalAccessTokens = (userId: string) => Promise<
name: string | null
lastChars: string | null
createdAt: Date
lifespan: number
lifespan: number | bigint
lastUsed: Date
scopes: ServerScope[]
}[]
@@ -1,15 +1,16 @@
const { ForbiddenError } = require('@/modules/shared/errors')
const { createPersonalAccessTokenFactory } = require('../../services/tokens')
const { canCreatePAT } = require('@/modules/core/helpers/token')
const { db } = require('@/db/knex')
const {
import { ForbiddenError } from '@/modules/shared/errors'
import { canCreatePAT, isValidScope } from '@/modules/core/helpers/token'
import { db } from '@/db/knex'
import {
storeApiTokenFactory,
storeTokenScopesFactory,
storeTokenResourceAccessDefinitionsFactory,
storePersonalApiTokenFactory,
getUserPersonalAccessTokensFactory,
revokeUserTokenByIdFactory
} = require('@/modules/core/repositories/tokens')
} from '@/modules/core/repositories/tokens'
import { Resolvers } from '@/modules/core/graph/generated/graphql'
import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens'
const createPersonalAccessToken = createPersonalAccessTokenFactory({
storeApiToken: storeApiTokenFactory({ db }),
@@ -22,11 +23,10 @@ const createPersonalAccessToken = createPersonalAccessTokenFactory({
const getUserTokens = getUserPersonalAccessTokensFactory({ db })
const revokeToken = revokeUserTokenByIdFactory({ db })
/** @type {import('@/modules/core/graph/generated/graphql').Resolvers} */
const resolvers = {
Query: {},
User: {
async apiTokens(parent, args, context) {
async apiTokens(parent, _args, context) {
// TODO!
if (parent.id !== context.userId)
throw new ForbiddenError('You can only view your own tokens')
@@ -36,7 +36,7 @@ const resolvers = {
}
},
Mutation: {
async apiTokenCreate(parent, args, context) {
async apiTokenCreate(_parent, args, context) {
canCreatePAT({
scopes: {
user: context.scopes || [],
@@ -45,20 +45,20 @@ const resolvers = {
})
return await createPersonalAccessToken(
context.userId,
context.userId!,
args.token.name,
args.token.scopes,
args.token.lifespan
args.token.scopes.filter(isValidScope),
args.token.lifespan || undefined
)
},
async apiTokenRevoke(parent, args, context) {
async apiTokenRevoke(_parent, args, context) {
let id = null
if (args.token.toLowerCase().includes('bearer')) id = args.token.split(' ')[1]
else id = args.token
await revokeToken(id, context.userId) // let's not revoke other people's tokens
await revokeToken(id, context.userId!) // let's not revoke other people's tokens
return true
}
}
}
} as Resolvers
module.exports = resolvers
export = resolvers