mirror of
https://github.com/ArthurDanjou/artdanj-api.git
synced 2026-01-14 12:14:33 +01:00
Working on form
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
17
app/Controllers/Http/FormsController.ts
Normal file
17
app/Controllers/Http/FormsController.ts
Normal 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
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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é" }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
|
||||
16
app/Validators/FormValidator.ts
Normal file
16
app/Validators/FormValidator.ts
Normal 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 = {}
|
||||
}
|
||||
@@ -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,
|
||||
},
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ const sessionConfig: SessionConfig = {
|
||||
cookie: {
|
||||
path: '/',
|
||||
httpOnly: true,
|
||||
sameSite: false,
|
||||
sameSite: true,
|
||||
},
|
||||
|
||||
/*
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user