punchnet-macos/punchnet/Features/Auth/AuthService.swift
2026-04-17 15:43:19 +08:00

115 lines
3.8 KiB
Swift

//
// NetworkSession.swift
// punchnet
//
// Created by on 2026/3/23.
//
import Foundation
struct AuthService {
private static let baseParams: [String: Any] = [
"client_id": SystemConfig.getClientId(),
"mac": SystemConfig.macAddressString(mac: SystemConfig.getMacAddress())
]
//
struct RegisterSession: Codable {
let sessionId: Int
enum CodingKeys: String, CodingKey {
case sessionId = "session_id"
}
}
//
struct ResetPasswordSession: Codable {
let sessionId: Int
enum CodingKeys: String, CodingKey {
case sessionId = "session_id"
}
}
static func loginWithAccountAndPassword(username: String, password: String) async throws -> NetworkSession {
var params: [String: Any] = [
"username": username,
"password": password,
"system": SystemConfig.systemInfo,
"version": SystemConfig.version_name
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/auth/login", params: params, as: NetworkSession.self)
}
static func loginWithToken(token: String) async throws -> NetworkSession {
var params: [String: Any] = [
"token": token,
"system": SystemConfig.systemInfo,
"version": SystemConfig.version_name
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/auth/token", params: params, as: NetworkSession.self)
}
static func requestRegisterVerifyCode(username: String) async throws -> RegisterSession {
var params: [String: Any] = [
"username": username
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/register/sendVerfiyCode", params: params, as: RegisterSession.self)
}
static func submitRegisterVerifyCode(sessionId: Int, verifyCode: String) async throws -> String {
var params: [String: Any] = [
"session_id": sessionId,
"code": verifyCode,
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/register/verfiyCode", params: params, as: String.self)
}
static func register(sessionId: Int, password: String) async throws -> String {
var params: [String: Any] = [
"session_id": sessionId,
"password": password
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/register/submit", params: params, as: String.self)
}
static func requestResetPasswordVerifyCode(username: String) async throws -> ResetPasswordSession {
var params: [String: Any] = [
"username": username
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/password/sendVerfiyCode", params: params, as: ResetPasswordSession.self)
}
static func submitResetPasswordVerifyCode(sessionId: Int, verifyCode: String) async throws -> String {
var params: [String: Any] = [
"session_id": sessionId,
"code": verifyCode,
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/password/verfiyCode", params: params, as: String.self)
}
static func resetPassword(sessionId: Int, newPassword: String) async throws -> String {
var params: [String: Any] = [
"session_id": sessionId,
"new_password": newPassword,
]
params.merge(baseParams) {$1}
return try await SDLAPIClient.doPost(path: "/password/reset", params: params, as: String.self)
}
}