diff --git a/app/controllers/user_controller.ts b/app/controllers/user_controller.ts index 35f83c8..560733a 100644 --- a/app/controllers/user_controller.ts +++ b/app/controllers/user_controller.ts @@ -10,11 +10,16 @@ export default class UserController { // GET /users/@me async me({ auth }: HttpContext) { + const user = auth.user! return { success: true, data: { - ...auth.user?.serialize(), - email: auth.user!.email || '', + ...user.serialize(), + firstName: user.firstName, + lastName: user.lastName, + email: user.email, + preferences: user.preferences, + pastStudentId: user.pastStudentId, }, } } @@ -52,7 +57,14 @@ export default class UserController { await user.save() return { success: true, - data: user, + data: { + ...user.serialize(), + firstName: user.firstName, + lastName: user.lastName, + email: user.email, + preferences: user.preferences, + pastStudentId: user.pastStudentId, + }, } } @@ -70,7 +82,14 @@ export default class UserController { return response.notFound({ message: 'User not found' }) } - return { success: true, data: user } + return { + success: true, + data: { + ...user.serialize(), + preferences: user.preferences, + pastStudentId: user.pastStudentId, + }, + } } // POST /merge-student @@ -81,6 +100,13 @@ export default class UserController { user.pastStudentId = pastStudentId await user.save() - return { success: true, data: user } + return { + success: true, + data: { + ...user.serialize(), + preferences: user.preferences, + pastStudentId: user.pastStudentId, + }, + } } } diff --git a/app/models/user.ts b/app/models/user.ts index cc31afd..0923cdb 100644 --- a/app/models/user.ts +++ b/app/models/user.ts @@ -1,55 +1,14 @@ import { DateTime } from 'luxon' import { BaseModel, column, computed } from '@adonisjs/lucid/orm' import { DbRememberMeTokensProvider } from '@adonisjs/auth/session' -import { HttpContext } from '@adonisjs/core/http' export default class User extends BaseModel { - serializeExtras = true - - serialize() { - const ctx = HttpContext.get() - - if (!ctx) { - this.serializeExtras = false - const serialized = super.serialize() - delete serialized.pastStudentId - delete serialized.extras - return serialized - } - - const requestUrl = ctx.request.url() - const isUsersRoute = requestUrl.startsWith('/users') - const isMeRoute = requestUrl.includes('/users/@me') - - this.serializeExtras = isUsersRoute - - const serialized = super.serialize() - if (!isUsersRoute) { - delete serialized.pastStudentId - delete serialized.extras - } - - if (isMeRoute) { - console.log('Serializing full name for /users/@me route') - serialized.firstName = this.firstName - serialized.lastName = this.lastName - } - - if (this.serializeExtras) { - serialized.preferences = this.preferences - } else { - delete serialized.preferences - } - - return serialized - } - static rememberMeTokens = DbRememberMeTokensProvider.forModel(User) @column({ isPrimary: true }) declare id: number - @column() + @column({ serializeAs: null }) declare pastStudentId: number | null @column() @@ -72,9 +31,8 @@ export default class User extends BaseModel { @column({ serializeAs: null }) declare extras: Record - @computed() + @computed({ serializeAs: null }) get preferences(): { name: string; emoji: string; color: string }[] { - if (!this.serializeExtras) return [] return this.extras?.preferences || [] }