Files
Stella/Sources/stella/Controllers/Api/ToolController.swift
2025-05-23 11:52:06 -04:00

49 lines
1.4 KiB
Swift

import Vapor
import Fluent
import SwiftMsgpack
import JWT
struct ToolController: RouteCollection {
func boot(routes: any RoutesBuilder) throws {
let group = routes.grouped("tool")
group.post("signup", use: self.signup)
}
@Sendable
func signup(req: Request) async throws -> Response {
let body = try req.content.decode(SignupReq.self, using: MsgPackDecoder())
guard
let session = try await Session.query(on: req.db).filter(\.$id == body.access_token).first(),
session.type == SessionType.ZAT
else {
throw Abort(.forbidden, reason: "Invalid access token")
}
let accountId = session.$account.id
if let player = try await Player.query(on: req.db).filter(\.$account.$id == accountId).first() {
} else {
guard let account = try await Account.query(on: req.db).filter(\.$id == accountId).first() else {
throw Abort(.forbidden, reason: "Account ID does not exist")
}
// Create new Player
let player = try Player.createDefault(account: account)
try await player.save(on: req.db)
}
throw Abort(.notImplemented)
}
}
struct SignupReq: Content {
let app_secret: String
let access_token: String
let storage_directory_path: String
let app_admin: String
let kakao_pid: String
let device_id: Double
let idp_code: String
}