Working on form

This commit is contained in:
2021-04-17 14:10:14 +02:00
parent 6c6301138a
commit fae7338694
9 changed files with 44 additions and 62 deletions

View File

@@ -30,7 +30,7 @@ export default class AuthController {
const password = request.input('password')
const token = await auth.use('api').attempt(email, password, {
expiresIn: '10 days'
expiresIn: '2 days'
})
return token.toJSON()
}

View File

@@ -0,0 +1,17 @@
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
import FormValidator from "App/Validators/FormValidator";
import Form from "App/Models/Form";
export default class FormsController {
public async send({ request, response }: HttpContextContract) {
const data = await request.validate(FormValidator)
await Form.create(data)
//todo send confirmation email + email to me
return response.status(200).send({
status: 200
})
}
}

View File

@@ -1,41 +0,0 @@
import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext";
import Subscriber from "App/Models/Subscriber";
import StoreValidator from "App/Validators/subscriber/StoreValidator";
import UpdateValidator from "App/Validators/subscriber/UpdateValidator";
export default class SubscribersController {
public async index ({request}: HttpContextContract) {
const limit = request.input('limit')
const page = request.input('page')
if (limit && page) {
return Subscriber.query().orderBy('id', 'asc').paginate(page, limit);
} else {
return Subscriber.query().orderBy('id', 'asc');
}
}
public async store ({request}: HttpContextContract) {
const data = await request.validate(StoreValidator)
return await Subscriber.create(data)
}
public async show ({params}: HttpContextContract) {
return await Subscriber.findOrFail(params.id)
}
public async update({ request, params }: HttpContextContract) {
const subscriber = await Subscriber.findOrFail(params.id)
const data = await request.validate(UpdateValidator)
await subscriber.merge(data).save()
return { message: 'L\'abonné a été mis à jour' }
}
public async destroy({ params }: HttpContextContract) {
const subscriber = await Subscriber.findOrFail(params.id)
await subscriber.delete()
return { message: "L\'abonné a bien été supprimé" }
}
}

View File

@@ -1,15 +0,0 @@
import axios from "axios";
import Env from "@ioc:Adonis/Core/Env";
export default function getActivity() {
let last_activity = ''
axios.get('https://wakatime.com/api/v1/users/current', {
headers: {
'Authorization': `Basic ${Env.get('WAKATIME_API_KEY')}`
}
})
.then((res) => {
last_activity = res.data.last_heartbeat_at
})
return last_activity
}

View File

@@ -1,7 +1,7 @@
import { DateTime } from 'luxon'
import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm'
export default class Subscriber extends BaseModel {
export default class Form extends BaseModel {
@column({ isPrimary: true })
public id: number
@@ -11,6 +11,12 @@ export default class Subscriber extends BaseModel {
@column()
public email: string
@column()
public subject: string
@column()
public content: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime

View File

@@ -0,0 +1,16 @@
import { schema } from '@ioc:Adonis/Core/Validator'
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
export default class FormValidator {
constructor (protected ctx: HttpContextContract) {
}
public schema = schema.create({
name: schema.string(),
email: schema.string(),
subject: schema.string(),
content: schema.string()
})
public messages = {}
}

View File

@@ -43,7 +43,7 @@ const databaseConfig: DatabaseConfig & { orm: Partial<OrmConfig> } = {
password: Env.get('MYSQL_PASSWORD', ''),
database: Env.get('MYSQL_DB_NAME'),
},
healthCheck: false,
healthCheck: true,
debug: false,
},

View File

@@ -76,7 +76,7 @@ const sessionConfig: SessionConfig = {
cookie: {
path: '/',
httpOnly: true,
sameSite: false,
sameSite: true,
},
/*

View File

@@ -40,7 +40,6 @@ Route.get('/states', 'StatesController.get')
Route.get('/projects', 'ProjectsController.get')
Route.resource('users', 'UsersController').only(['index', 'show'])
Route.resource('subscribers', 'SubscribersController').only(['index', 'show', 'store'])
Route.group(() => {
Route.get('/', 'FileController.index')
Route.get('/:filename', async ({ response, params }) => {
@@ -50,7 +49,7 @@ Route.group(() => {
Route.group(() => {
Route.resource('users', 'UsersController').only(['store', 'update', 'destroy'])
Route.resource('subscribers', 'SubscribersController').only(['update', 'destroy'])
Route.post('form', 'FormsController.send')
Route.resource('files', 'FileController').only(['store', 'destroy'])
Route.post('/locations', 'LocationsController.add')
Route.post('/projects', 'ProjectsController.add')