feat: enhance message retrieval logic with context-based filtering
- Updated the MessageSchema to include context-aware filtering for notifications, allowing retrieval of messages based on recipientId when the context is NOTIFICATION. - Improved the resolve function to handle subscription checks, ensuring that unauthorized access is properly managed. - Added error handling for cases where the context is not allowed, enhancing overall robustness of the message retrieval process.
This commit is contained in:
@@ -77,7 +77,14 @@ export class MessageSchema extends PothosSchema {
|
|||||||
type: [this.message()],
|
type: [this.message()],
|
||||||
description: 'Retrieve a list of messages with optional filtering, ordering, and pagination.',
|
description: 'Retrieve a list of messages with optional filtering, ordering, and pagination.',
|
||||||
args: this.builder.generator.findManyArgs('Message'),
|
args: this.builder.generator.findManyArgs('Message'),
|
||||||
resolve: async (query, _root, args) => {
|
resolve: async (query, _root, args, ctx, _info) => {
|
||||||
|
if (ctx.isSubscription) {
|
||||||
|
throw new Error('Not allowed')
|
||||||
|
}
|
||||||
|
// if message.context is NOTIFICATION, filter by recipientId
|
||||||
|
if (args.filter?.context === MessageContextType.NOTIFICATION) {
|
||||||
|
args.filter.recipientId = ctx.http.me?.id
|
||||||
|
}
|
||||||
return await this.prisma.message.findMany({
|
return await this.prisma.message.findMany({
|
||||||
...query,
|
...query,
|
||||||
skip: args.skip ?? undefined,
|
skip: args.skip ?? undefined,
|
||||||
|
|||||||
@@ -207,12 +207,7 @@ export class QuizSchema extends PothosSchema {
|
|||||||
type: this.quiz(),
|
type: this.quiz(),
|
||||||
args: {
|
args: {
|
||||||
data: t.arg({
|
data: t.arg({
|
||||||
type: this.builder.generator.getCreateInput('Quiz', [
|
type: this.builder.generator.getCreateInput('Quiz', ['id', 'centerMentorId', 'createdAt', 'updatedAt']),
|
||||||
'id',
|
|
||||||
'centerMentorId',
|
|
||||||
'createdAt',
|
|
||||||
'updatedAt',
|
|
||||||
]),
|
|
||||||
required: true,
|
required: true,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ export class RefundTicketSchema extends PothosSchema {
|
|||||||
bankName = 'Center Mentor Refund Account'
|
bankName = 'Center Mentor Refund Account'
|
||||||
} else {
|
} else {
|
||||||
// Existing bank lookup for customers
|
// Existing bank lookup for customers
|
||||||
|
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
||||||
const bank = banks.data.find((bank: any) => bank.bin === bankBin)
|
const bank = banks.data.find((bank: any) => bank.bin === bankBin)
|
||||||
if (!bank) {
|
if (!bank) {
|
||||||
throw new Error('Bank not found')
|
throw new Error('Bank not found')
|
||||||
|
|||||||
Reference in New Issue
Block a user