Initial commit: PC Builder AdonisJS project
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Environment variables service
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The `Env.create` method creates an instance of the Env service. The
|
||||
| service validates the environment variables and also cast values
|
||||
| to JavaScript data types.
|
||||
|
|
||||
*/
|
||||
|
||||
import { Env } from '@adonisjs/core/env'
|
||||
|
||||
export default await Env.create(new URL('../', import.meta.url), {
|
||||
// Node
|
||||
NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
|
||||
PORT: Env.schema.number(),
|
||||
HOST: Env.schema.string({ format: 'host' }),
|
||||
LOG_LEVEL: Env.schema.string(),
|
||||
|
||||
// App
|
||||
APP_KEY: Env.schema.secret(),
|
||||
|
||||
// Session
|
||||
SESSION_DRIVER: Env.schema.enum(['cookie', 'memory', 'database'] as const),
|
||||
})
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| HTTP kernel file
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The HTTP kernel file is used to register the middleware with the server
|
||||
| or the router.
|
||||
|
|
||||
*/
|
||||
|
||||
import router from '@adonisjs/core/services/router'
|
||||
import server from '@adonisjs/core/services/server'
|
||||
|
||||
server.errorHandler(() => import('#exceptions/handler'))
|
||||
|
||||
server.use([
|
||||
() => import('#middleware/container_bindings_middleware'),
|
||||
() => import('@adonisjs/static/static_middleware'),
|
||||
() => import('@adonisjs/cors/cors_middleware'),
|
||||
() => import('@adonisjs/vite/vite_middleware'),
|
||||
() => import('#middleware/inertia_middleware'),
|
||||
])
|
||||
|
||||
router.use([
|
||||
() => import('@adonisjs/core/bodyparser_middleware'),
|
||||
() => import('@adonisjs/session/session_middleware'),
|
||||
() => import('@adonisjs/shield/shield_middleware'),
|
||||
() => import('@adonisjs/auth/initialize_auth_middleware'),
|
||||
() => import('#middleware/silent_auth_middleware'),
|
||||
])
|
||||
|
||||
export const middleware = router.named({
|
||||
guest: () => import('#middleware/guest_middleware'),
|
||||
auth: () => import('#middleware/auth_middleware'),
|
||||
})
|
||||
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Routes file
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The routes file is used for defining the HTTP routes.
|
||||
|
|
||||
*/
|
||||
|
||||
import { middleware } from '#start/kernel'
|
||||
import { controllers } from '#generated/controllers'
|
||||
import router from '@adonisjs/core/services/router'
|
||||
|
||||
router.get('/', async ({ response }) => {
|
||||
return response.redirect('/auth/login')
|
||||
}).as('home')
|
||||
|
||||
router
|
||||
.group(() => {
|
||||
router.get('signup', [controllers.NewAccount, 'create']).as('new_account.create')
|
||||
router.post('signup', [controllers.NewAccount, 'store']).as('new_account.store')
|
||||
|
||||
router.get('login', [controllers.Session, 'create']).as('session.create')
|
||||
router.post('login', [controllers.Session, 'store']).as('session.store')
|
||||
})
|
||||
.prefix('/auth')
|
||||
.use(middleware.guest())
|
||||
|
||||
router
|
||||
.group(() => {
|
||||
router.post('logout', [controllers.Session, 'destroy'])
|
||||
})
|
||||
.use(middleware.auth())
|
||||
|
||||
router
|
||||
.group(() => {
|
||||
router.get('/', [controllers.Computers, 'index']).as('computers.index')
|
||||
router.get('/create', [controllers.Computers, 'create']).as('computers.create')
|
||||
router.post('/', [controllers.Computers, 'store']).as('computers.store')
|
||||
router.get('/:id', [controllers.Computers, 'show']).as('computers.show')
|
||||
router.get('/:id/edit', [controllers.Computers, 'edit']).as('computers.edit')
|
||||
router.put('/:id', [controllers.Computers, 'update']).as('computers.update')
|
||||
router.delete('/:id', [controllers.Computers, 'destroy']).as('computers.destroy')
|
||||
})
|
||||
.prefix('/computers')
|
||||
.use(middleware.auth())
|
||||
|
||||
router
|
||||
.group(() => {
|
||||
router.get('/', [controllers.Components, 'index']).as('components.index')
|
||||
router.get('/create', [controllers.Components, 'create']).as('components.create')
|
||||
router.post('/', [controllers.Components, 'store']).as('components.store')
|
||||
router.get('/:id', [controllers.Components, 'show']).as('components.show')
|
||||
router.get('/:id/edit', [controllers.Components, 'edit']).as('components.edit')
|
||||
router.put('/:id', [controllers.Components, 'update']).as('components.update')
|
||||
router.delete('/:id', [controllers.Components, 'destroy']).as('components.destroy')
|
||||
})
|
||||
.prefix('/components')
|
||||
.use(middleware.auth())
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validator file
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The validator file is used for configuring global transforms for VineJS.
|
||||
| The transform below converts all VineJS date outputs from JavaScript
|
||||
| Date objects to Luxon DateTime instances, so that validated dates are
|
||||
| ready to use with Lucid models and other parts of the app that expect
|
||||
| Luxon DateTime.
|
||||
|
|
||||
*/
|
||||
|
||||
import { DateTime } from 'luxon'
|
||||
import { VineDate } from '@vinejs/vine'
|
||||
|
||||
declare module '@vinejs/vine/types' {
|
||||
interface VineGlobalTransforms {
|
||||
date: DateTime
|
||||
}
|
||||
}
|
||||
|
||||
VineDate.transform((value) => DateTime.fromJSDate(value))
|
||||
Reference in New Issue
Block a user