1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /* Import modules. */
- import moment from 'moment'
- import PouchDB from 'pouchdb'
- import { v4 as uuidv4 } from 'uuid'
- /* Initialize databases. */
- const sessionsDb = new PouchDB(`http://${process.env.COUCHDB_USER}:${process.env.COUCHDB_PASSWORD}@127.0.0.1:5984/sessions`)
- /**
- * Create Session
- *
- * @returns session
- */
- const createSession = async (_event) => {
- /* Set headers. */
- const headers = _event.node.req.headers
- // console.log('HEADERS', headers)
- /* Build log details. */
- const logDetails = {
- i18n: headers['accept-language'],
- client: headers['user-agent'],
- referer: headers['referer'],
- host: headers['host'],
- ip: headers['x-real-ip'],
- ip_fwd: headers['x-forwarded-for'],
- url: _event.node.req.url,
- }
- // console.info('LOG (api):', logDetails)
- /* Create (new) session. */
- const session = {
- _id: uuidv4(),
- ...logDetails,
- isActive: true,
- createdAt: moment().unix(),
- }
- /* Save session to database. */
- const success = await sessionsDb
- .put(session)
- .catch(err => console.error(err))
- console.log('SUCCESS', success)
- /* Return session. */
- return session
- }
- export default defineEventHandler(async (event) => {
- /* Set (request) body. */
- const body = await readBody(event)
- // console.log('SESSIONS.POST (body):', body)
- /* Initialize locals. */
- let session
- /* Set session id. */
- const sessionid = body?.sessionid
- // console.log('SESSION ID', sessionid)
- /* Request session (if available). */
- session = await sessionsDb
- .get(sessionid)
- .catch(err => console.error(err))
- console.log('SESSION (api):', session)
- /* Validate session. */
- if (!session || !session?.isActive) {
- session = await createSession(event)
- } else {
- /* Update timestamp. */
- session = {
- ...session,
- updatedAt: moment().unix(),
- }
- /* Save (updated) session. */
- const success = await sessionsDb
- .put(session)
- .catch(err => console.error(err))
- // console.log('UPDATE SESSION (api):', success)
- }
- /* Return session. */
- return session
- })
|