some shit

This commit is contained in:
Sockenklaus
2021-11-12 23:37:33 +01:00
parent ed7120ad2e
commit 6da4c5743a
5 changed files with 31 additions and 42 deletions

View File

@@ -1,6 +1,6 @@
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import Employee from 'App/Models/Employee'
import SetSettingsValidator from 'App/Validators/SetSettingsValidator'
import Logger from '@ioc:Adonis/Core/Logger'
type ResultSetting = {
key: string,
@@ -9,15 +9,10 @@ type ResultSetting = {
export default class SettingsController {
public async list({ params, bouncer }: HttpContextContract ): Promise<ResultSetting[]> {
const userId = params.userId
public async list({ auth }: HttpContextContract ): Promise<ResultSetting[]> {
try {
const user = await Employee.findOrFail(userId)
await bouncer.with('SettingsPolicy').authorize('do', user)
const result = await user.related('settings').query().select(['key', 'value'])
const result = await auth.user.related('settings').query().select(['key', 'value'])
return result
}
@@ -27,16 +22,12 @@ export default class SettingsController {
}
public async get({params, bouncer}: HttpContextContract): Promise<ResultSetting | null> {
const userId = params.userId
public async get({params, auth}: HttpContextContract): Promise<ResultSetting | null> {
const key = params.key
try {
const user = await Employee.findOrFail(userId)
await bouncer.with('SettingsPolicy').authorize('do', user)
const result = user.related('settings').query().select(['key', 'value']).where('key', key).first()
const result = auth.user.related('settings').query().select(['key', 'value']).where('key', key).first()
return result
}
@@ -46,34 +37,35 @@ export default class SettingsController {
}
public async set({params, request, bouncer}: HttpContextContract): Promise<'ok'> {
const userId = params.userId
/**
* Expects:
* {
* settings: [
* {key: 'key1', value: 'value1'},
* ]
* }
*/
public async set({request, auth}: HttpContextContract): Promise<'ok'> {
try {
const payload = await request.validate(SetSettingsValidator)
const user = await Employee.findOrFail(userId)
await bouncer.with('SettingsPolicy').authorize('do', user)
await user.related('settings').updateOrCreateMany(payload.settings, 'key')
await auth.user.related('settings').updateOrCreateMany(payload.settings, 'key')
return "ok"
}
catch(error){
Logger.error(error)
return error.message
}
}
public async delete({ params, bouncer }: HttpContextContract): Promise<(0 | 1)[]> {
const userId = params.userId
public async delete({ params, auth }: HttpContextContract): Promise<(0 | 1)[]> {
const key = params.key
try {
const user = await Employee.findOrFail(userId)
await bouncer.with('SettingsPolicy').authorize('do', user)
return await user.related('settings').query().where('key', key).delete()
return await auth.user.related('settings').query().where('key', key).delete()
}
catch(error){
return error.message