From fdd2715ec8be6683e586b48a7939717e5cfc2677 Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Wed, 20 Aug 2025 11:47:56 +0800 Subject: [PATCH] feat: token --- .../UserInterfaceState.xcuserstate | Bin 188452 -> 188451 bytes wake/Models/AuthState.swift | 49 ++ wake/Utils/APIConfig.swift | 16 +- wake/Utils/NetWork.swift | 34 -- wake/Utils/NetworkService.swift | 207 +++++++++ wake/Utils/TokenManager.swift | 424 ++++++++++++++++++ wake/Utils/User.swift | 80 ++-- wake/View/Owner/UserInfo/UserInfo.swift | 65 ++- wake/View/Welcome/SplashView.swift | 92 ++++ wake/WakeApp.swift | 97 ++-- 10 files changed, 938 insertions(+), 126 deletions(-) create mode 100644 wake/Models/AuthState.swift delete mode 100644 wake/Utils/NetWork.swift create mode 100644 wake/Utils/NetworkService.swift create mode 100644 wake/Utils/TokenManager.swift create mode 100644 wake/View/Welcome/SplashView.swift diff --git a/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate b/wake.xcodeproj/project.xcworkspace/xcuserdata/elliwood.xcuserdatad/UserInterfaceState.xcuserstate index 0f1001442214501c886bdd1f703e296c986df7a2..6c4a3be11e903459c39ee0f7b9c08eec0d291fa4 100644 GIT binary patch literal 188451 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 z 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 R)6c_)e){>@|FC!L{{gY#b0q)( literal 188452 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 sKU3@q&7`xjr=#v<%YT3=tLLv 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 diff --git a/wake/Models/AuthState.swift b/wake/Models/AuthState.swift new file mode 100644 index 0000000..c57917d --- /dev/null +++ b/wake/Models/AuthState.swift @@ -0,0 +1,49 @@ +import SwiftUI +import Combine + +/// 管理用户认证状态的类 +public class AuthState: ObservableObject { + @Published public var isAuthenticated: Bool = false { + didSet { + print("🔔 认证状态变更: \(isAuthenticated ? "已登录" : "已登出")") + } + } + @Published public var isLoading = false + @Published public var errorMessage: String? + @Published public var user: User? + + // 单例模式 + public static let shared = AuthState() + + private init() {} + + /// 登录成功时调用 + public func login(user: User? = nil) { + if let user = user { + self.user = user + } + isAuthenticated = true + errorMessage = nil + } + + /// 登出时调用 + public func logout() { + print("👋 用户登出") + user = nil + isAuthenticated = false + + // 清除用户数据 + TokenManager.shared.clearTokens() + UserDefaults.standard.removeObject(forKey: "lastLoginUser") + } + + /// 更新加载状态 + public func setLoading(_ loading: Bool) { + isLoading = loading + } + + /// 设置错误信息 + public func setError(_ message: String) { + errorMessage = message + } +} diff --git a/wake/Utils/APIConfig.swift b/wake/Utils/APIConfig.swift index 46f51f9..d640459 100644 --- a/wake/Utils/APIConfig.swift +++ b/wake/Utils/APIConfig.swift @@ -7,12 +7,10 @@ public enum APIConfig { <<<<<<< HEAD public static let baseURL = "https://api-dev.memorywake.com:31274/api/v1" - /// 认证 token - 从 Keychain 中获取 + /// 获取认证token public static var authToken: String { let token = KeychainHelper.getAccessToken() ?? "" - if !token.isEmpty { - print("🔑 [APIConfig] 当前访问令牌: \(token.prefix(10))...") // 只打印前10个字符,避免敏感信息完全暴露 - } else { + if token.isEmpty { print("⚠️ [APIConfig] 未找到访问令牌") } return token @@ -42,11 +40,17 @@ public enum APIConfig { >>>>>>> 1814789 (feat: 登录接口联调) /// 认证请求头 public static var authHeaders: [String: String] { - return [ - "Authorization": "Bearer \(authToken)", + let token = authToken + var headers = [ "Content-Type": "application/json", "Accept": "application/json" ] + + if !token.isEmpty { + headers["Authorization"] = "Bearer \(token)" + } + + return headers } <<<<<<< HEAD <<<<<<< HEAD diff --git a/wake/Utils/NetWork.swift b/wake/Utils/NetWork.swift deleted file mode 100644 index 0cdffc9..0000000 --- a/wake/Utils/NetWork.swift +++ /dev/null @@ -1,34 +0,0 @@ -import SwiftUI - -class Network: ObservableObject { - @Published var users: [User] = [] - - func getUsers() { - guard let url = URL(string: "http://192.168.31.156:31646/api/iam/login/password-login") else { fatalError("Missing URL") } - - let urlRequest = URLRequest(url: url) - - let dataTask = URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in - if let error = error { - print("Request error: ", error) - return - } - - guard let response = response as? HTTPURLResponse else { return } - - if response.statusCode == 200 { - guard let data = data else { return } - DispatchQueue.main.async { - do { - let decodedUsers = try JSONDecoder().decode([User].self, from: data) - self.users = decodedUsers - } catch let error { - print("Error decoding: ", error) - } - } - } - } - - dataTask.resume() - } -} diff --git a/wake/Utils/NetworkService.swift b/wake/Utils/NetworkService.swift new file mode 100644 index 0000000..ffe53b0 --- /dev/null +++ b/wake/Utils/NetworkService.swift @@ -0,0 +1,207 @@ +import Foundation + +enum NetworkError: Error { + case invalidURL + case noData + case decodingError(Error) + case serverError(String) + case unauthorized + case other(Error) + case networkError(Error) + case unknownError(Error) + + var localizedDescription: String { + switch self { + case .invalidURL: + return "无效的URL" + case .noData: + return "没有收到数据" + case .decodingError(let error): + return "数据解析错误: \(error.localizedDescription)" + case .serverError(let message): + return "服务器错误: \(message)" + case .unauthorized: + return "未授权,请重新登录" + case .other(let error): + return error.localizedDescription + case .networkError(let error): + return "网络请求错误: \(error.localizedDescription)" + case .unknownError(let error): + return "未知错误: \(error.localizedDescription)" + } + } +} + +class NetworkService { + static let shared = NetworkService() + + // 默认请求头 + private let defaultHeaders: [String: String] = [ + "Content-Type": "application/json", + "Accept": "application/json" + ] + + private init() {} + + // MARK: - 基础请求方法 + private func request( + _ method: String, + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + // 构建URL + guard let url = URL(string: APIConfig.baseURL + path) else { + completion(.failure(.invalidURL)) + return + } + + // 创建请求 + var request = URLRequest(url: url) + request.httpMethod = method + + // 设置请求头 - 合并默认头、认证头和自定义头 + defaultHeaders.forEach { key, value in + request.setValue(value, forHTTPHeaderField: key) + } + + // 添加认证头 + APIConfig.authHeaders.forEach { key, value in + request.setValue(value, forHTTPHeaderField: key) + } + + // 添加自定义头(如果提供) + headers?.forEach { key, value in + request.setValue(value, forHTTPHeaderField: key) + } + + // 设置请求体(如果是POST/PUT请求) + if let parameters = parameters, (method == "POST" || method == "PUT") { + do { + request.httpBody = try JSONSerialization.data(withJSONObject: parameters) + } catch { + completion(.failure(.other(error))) + return + } + } + + // 打印请求信息(调试用) + print("🌐 [Network] \(method) \(url.absoluteString)") + if let headers = request.allHTTPHeaderFields { + print("📤 Headers: \(headers)") + } + if let body = request.httpBody, let bodyString = String(data: body, encoding: .utf8) { + print("📦 Body: \(bodyString)") + } + + // 创建任务 + let task = URLSession.shared.dataTask(with: request) { [weak self] data, response, error in + // 处理响应 + self?.handleResponse(data: data, response: response, error: error, completion: completion) + } + + // 开始请求 + task.resume() + } + + private func handleResponse( + data: Data?, + response: URLResponse?, + error: Error?, + completion: @escaping (Result) -> Void + ) { + // 打印响应信息(调试用) + if let httpResponse = response as? HTTPURLResponse { + print("📥 [Network] Status: \(httpResponse.statusCode) \(HTTPURLResponse.localizedString(forStatusCode: httpResponse.statusCode))") + if let headers = httpResponse.allHeaderFields as? [String: Any] { + print("📥 Headers: \(headers)") + } + + // 检查状态码 + if !(200...299).contains(httpResponse.statusCode) { + print("❌ [Network] 请求失败,状态码: \(httpResponse.statusCode)") + if let data = data, let errorResponse = String(data: data, encoding: .utf8) { + print("❌ [Network] 错误响应: \(errorResponse)") + } + } + } + + // 处理网络错误 + if let error = error { + print("❌ [Network] 网络请求错误: \(error.localizedDescription)") + completion(.failure(.networkError(error))) + return + } + + // 检查数据是否存在 + guard let data = data else { + print("❌ [Network] 没有收到数据") + completion(.failure(.noData)) + return + } + + // 打印响应数据(调试用) + if let responseString = String(data: data, encoding: .utf8) { + print("📥 [Network] 响应数据: \(responseString)") + } + + do { + // 解析JSON数据 + let decoder = JSONDecoder() + let result = try decoder.decode(T.self, from: data) + completion(.success(result)) + } catch let decodingError as DecodingError { + print("❌ [Network] JSON解析失败: \(decodingError.localizedDescription)") + if let dataString = String(data: data, encoding: .utf8) { + print("📋 [Network] 原始响应: \(dataString)") + } + completion(.failure(.decodingError(decodingError))) + } catch { + print("❌ [Network] 未知错误: \(error.localizedDescription)") + completion(.failure(.unknownError(error))) + } + } + + // MARK: - 公共方法 + + /// GET 请求 + func get( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + request("GET", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// POST 请求 + func post( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + request("POST", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// DELETE 请求 + func delete( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + request("DELETE", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// PUT 请求 + func put( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + request("PUT", path: path, parameters: parameters, headers: headers, completion: completion) + } +} diff --git a/wake/Utils/TokenManager.swift b/wake/Utils/TokenManager.swift new file mode 100644 index 0000000..3b11939 --- /dev/null +++ b/wake/Utils/TokenManager.swift @@ -0,0 +1,424 @@ +import Foundation + +/// Token管理器 +/// 负责管理应用的认证令牌,包括验证、刷新和过期处理 +class TokenManager { + /// 单例实例 + static let shared = TokenManager() + + /// token有效期阈值(秒),在token即将过期前进行刷新 + /// 例如:设置为300表示在token过期前5分钟开始刷新 + private let tokenValidityThreshold: TimeInterval = 300 + + /// 私有化初始化方法,确保单例模式 + private init() {} + + // MARK: - Token 状态检查 + + /// 检查是否存在有效的访问令牌 + var hasToken: Bool { + return KeychainHelper.getAccessToken()?.isEmpty == false + } + + // MARK: - Token 验证 + + /// 验证并刷新token(如果需要) + /// - 检查token是否存在 + /// - 检查token是否有效 + /// - 在token即将过期时自动刷新 + /// - Parameter completion: 完成回调,返回验证/刷新结果 + /// - isValid: token是否有效 + /// - error: 错误信息(如果有) + func validateAndRefreshTokenIfNeeded(completion: @escaping (Bool, Error?) -> Void) { + // 1. 检查token是否存在 + guard let token = KeychainHelper.getAccessToken(), !token.isEmpty else { + // token不存在,返回未授权错误 + let error = NSError( + domain: "TokenManager", + code: 401, + userInfo: [NSLocalizedDescriptionKey: "未找到访问令牌"] + ) + completion(false, error) + return + } + + // 2. 检查token是否有效 + if isTokenValid(token) { + // token有效,直接返回成功 + completion(true, nil) + return + } + + // 3. token无效或即将过期,尝试刷新 + refreshToken { [weak self] success, error in + if success { + // 刷新成功,返回成功 + completion(true, nil) + } else { + // 刷新失败,返回错误信息 + let finalError = error ?? NSError( + domain: "TokenManager", + code: 401, + userInfo: [NSLocalizedDescriptionKey: "Token刷新失败"] + ) + completion(false, finalError) + } + } + } + + /// 检查token是否有效 + /// - Parameter token: 要检查的token字符串 + /// - Returns: 如果token有效返回true,否则返回false + /// + /// 该方法会检查token的有效性,包括检查token是否为空、是否过期以及通过网络请求验证token。 + /// + /// - Note: 该方法会打印一些调试信息,包括token验证开始、token过期时间等。 + public func isTokenValid(_ token: String) -> Bool { + print("🔍 TokenManager: 开始验证token...") + + // 1. 基础验证:检查token是否为空 + guard !token.isEmpty else { + print("❌ TokenManager: Token为空") + return false + } + + // 2. 检查token是否过期(如果可能) + if let expiryDate = getTokenExpiryDate(token) { + print("⏰ TokenManager: Token过期时间: \(expiryDate)") + if Date() > expiryDate { + print("❌ TokenManager: Token已过期") + return false + } + } + + // 3. 创建信号量用于同步网络请求 + let semaphore = DispatchSemaphore(value: 0) + var isValid = false + var requestCompleted = false + + print("🌐 TokenManager: 发送验证请求到服务器...") + + // 4. 发送验证请求 + let task = URLSession.shared.dataTask(with: createValidationRequest(token: token)) { data, response, error in + defer { + requestCompleted = true + semaphore.signal() + } + + // 检查网络错误 + if let error = error { + print("❌ TokenManager: 验证请求错误: \(error.localizedDescription)") + return + } + + // 检查响应状态码 + guard let httpResponse = response as? HTTPURLResponse else { + print("❌ TokenManager: 无效的服务器响应") + return + } + + print("📡 TokenManager: 服务器响应状态码: \(httpResponse.statusCode)") + + // 检查状态码 + guard (200...299).contains(httpResponse.statusCode) else { + print("❌ TokenManager: 服务器返回错误状态码: \(httpResponse.statusCode)") + return + } + + // 检查是否有数据 + if let data = data, !data.isEmpty { + do { + // 尝试解析响应数据 + let response = try JSONDecoder().decode(IdentityCheckResponse.self, from: data) + isValid = response.isValid + print("✅ TokenManager: Token验证\(isValid ? "成功" : "失败")") + } catch { + print("❌ TokenManager: 解析响应数据失败: \(error.localizedDescription)") + // 如果解析失败但状态码是200,我们假设token是有效的 + isValid = true + print("ℹ️ TokenManager: 状态码200,假设token有效") + } + } else { + // 如果没有返回数据但状态码是200,我们假设token是有效的 + print("ℹ️ TokenManager: 没有返回数据,但状态码为200,假设token有效") + isValid = true + } + } + + task.resume() + + // 5. 设置超时时间(10秒) + let timeoutResult = semaphore.wait(timeout: .now() + 15) + + // 检查是否超时 + if !requestCompleted && timeoutResult == .timedOut { + print("⚠️ TokenManager: 验证请求超时") + task.cancel() + return false + } + + return isValid + } + + /// 创建验证请求 + private func createValidationRequest(token: String) -> URLRequest { + let url = URL(string: APIConfig.baseURL + "/iam/identity-check")! + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") + request.setValue("application/json", forHTTPHeaderField: "Accept") + return request + } + + /// 从token中提取过期时间(示例实现) + private func getTokenExpiryDate(_ token: String) -> Date? { + // 这里需要根据实际的JWT或其他token格式来解析过期时间 + // 以下是JWT token的示例解析 + let parts = token.components(separatedBy: ".") + guard parts.count > 1, let payloadData = base64UrlDecode(parts[1]) else { + return nil + } + + do { + if let payload = try JSONSerialization.jsonObject(with: payloadData) as? [String: Any], + let exp = payload["exp"] as? TimeInterval { + return Date(timeIntervalSince1970: exp) + } + } catch { + print("❌ TokenManager: 解析token过期时间失败: \(error.localizedDescription)") + } + + return nil + } + + private func base64UrlDecode(_ base64Url: String) -> Data? { + var base64 = base64Url + .replacingOccurrences(of: "-", with: "+") + .replacingOccurrences(of: "_", with: "/") + + // 添加必要的填充 + let length = Double(base64.lengthOfBytes(using: .utf8)) + let requiredLength = 4 * ceil(length / 4.0) + let paddingLength = requiredLength - length + if paddingLength > 0 { + let padding = "".padding(toLength: Int(paddingLength), withPad: "=", startingAt: 0) + base64 += padding + } + + return Data(base64Encoded: base64) + } + + /// 刷新token + /// - Parameter completion: 刷新完成回调 + /// - success: 是否刷新成功 + /// - error: 错误信息(如果有) + private func refreshToken(completion: @escaping (Bool, Error?) -> Void) { + // 获取刷新令牌 + guard let refreshToken = KeychainHelper.getRefreshToken(), !refreshToken.isEmpty else { + // 没有可用的刷新令牌 + let error = NSError( + domain: "TokenManager", + code: 401, + userInfo: [NSLocalizedDescriptionKey: "未找到刷新令牌"] + ) + completion(false, error) + return + } + + // 准备刷新请求参数 + let parameters: [String: Any] = [ + "refresh_token": refreshToken, + "grant_type": "refresh_token" + ] + + // 发送刷新请求 + NetworkService.shared.postWithToken(path: "/v1/iam/access-token-refresh", parameters: parameters) { + (result: Result) in + + switch result { + case .success(let tokenResponse): + // 1. 保存新的访问令牌 + KeychainHelper.saveAccessToken(tokenResponse.accessToken) + + // 2. 如果返回了新的刷新令牌,也保存起来 + if let newRefreshToken = tokenResponse.refreshToken { + KeychainHelper.saveRefreshToken(newRefreshToken) + } + + print("✅ Token刷新成功") + completion(true, nil) + + case .failure(let error): + print("❌ Token刷新失败: \(error.localizedDescription)") + + // 刷新失败,清除本地token,需要用户重新登录 + KeychainHelper.clearTokens() + + completion(false, error) + } + } + } + + /// 清除所有存储的 token + func clearTokens() { + print("🗑️ TokenManager: 清除所有 token") + KeychainHelper.clearTokens() + // 清除其他与 token 相关的存储 + UserDefaults.standard.removeObject(forKey: "tokenExpiryDate") + UserDefaults.standard.synchronize() + } +} + +// MARK: - Token响应模型 +/// 用于解析token刷新接口的响应数据 +private struct TokenResponse: Codable { + /// 访问令牌 + let accessToken: String + + /// 刷新令牌(可选) + let refreshToken: String? + + /// 过期时间(秒) + let expiresIn: TimeInterval? + + /// 令牌类型(如:Bearer) + let tokenType: String? + + // 使用CodingKeys自定义键名映射 + enum CodingKeys: String, CodingKey { + case accessToken = "access_token" + case refreshToken = "refresh_token" + case expiresIn = "expires_in" + case tokenType = "token_type" + } +} + +// MARK: - 身份验证响应模型 +/// 用于解析身份验证接口的响应数据 +private struct IdentityCheckResponse: Codable { + /// 是否有效 + let isValid: Bool + + /// 用户ID(可选) + let userId: String? + + /// 过期时间(可选) + let expiresAt: Date? + + enum CodingKeys: String, CodingKey { + case isValid = "is_valid" + case userId = "user_id" + case expiresAt = "expires_at" + } +} + +// MARK: - NetworkService扩展 +/// 为NetworkService添加带token验证的请求方法 +extension NetworkService { + // MARK: - 核心请求方法 + + /// 带token验证的网络请求 + /// - Parameters: + /// - method: HTTP方法(GET/POST/PUT/DELETE等) + /// - path: 接口路径 + /// - parameters: 请求参数 + /// - headers: 自定义请求头 + /// - completion: 完成回调 + func requestWithToken( + _ method: String, + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + // 1. 验证并刷新token + TokenManager.shared.validateAndRefreshTokenIfNeeded { [weak self] isValid, error in + guard let self = self else { return } + + if isValid { + // 2. token有效,继续发送原始请求 + switch method.uppercased() { + case "GET": + self.get(path: path, parameters: parameters, headers: headers, completion: completion) + case "POST": + self.post(path: path, parameters: parameters, headers: headers, completion: completion) + case "PUT": + self.put(path: path, parameters: parameters, headers: headers, completion: completion) + case "DELETE": + self.delete(path: path, parameters: parameters, headers: headers, completion: completion) + default: + let error = NSError( + domain: "NetworkService", + code: 400, + userInfo: [NSLocalizedDescriptionKey: "不支持的HTTP方法: \(method)"] + ) + completion(.failure(.other(error))) + } + } else { + // 3. token无效,返回未授权错误 + let error = error ?? NSError( + domain: "NetworkService", + code: 401, + userInfo: [NSLocalizedDescriptionKey: "未授权访问"] + ) + + DispatchQueue.main.async { + completion(.failure(.unauthorized)) + } + + // 4. 发送登出通知,让应用处理未授权情况 + NotificationCenter.default.post(name: .userDidLogout, object: nil) + } + } + } + + // MARK: - 便捷方法 + + /// 带token验证的GET请求 + func getWithToken( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + requestWithToken("GET", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// 带token验证的POST请求 + func postWithToken( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + requestWithToken("POST", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// 带token验证的PUT请求 + func putWithToken( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + requestWithToken("PUT", path: path, parameters: parameters, headers: headers, completion: completion) + } + + /// 带token验证的DELETE请求 + func deleteWithToken( + path: String, + parameters: [String: Any]? = nil, + headers: [String: String]? = nil, + completion: @escaping (Result) -> Void + ) { + requestWithToken("DELETE", path: path, parameters: parameters, headers: headers, completion: completion) + } +} + +// MARK: - 通知名称 +/// 定义应用中使用的通知名称 +extension Notification.Name { + /// 用户登出通知 + /// 当token失效或用户主动登出时发送 + static let userDidLogout = Notification.Name("UserDidLogoutNotification") +} diff --git a/wake/Utils/User.swift b/wake/Utils/User.swift index 2587619..797be1a 100644 --- a/wake/Utils/User.swift +++ b/wake/Utils/User.swift @@ -1,31 +1,61 @@ import Foundation -struct User: Identifiable, Decodable { - var id: Int - var name: String - var username: String - var email: String - var address: Address - var phone: String - var website: String - var company: Company - - struct Address: Decodable { - var street: String - var suite: String - var city: String - var zipcode: String - var geo: Geo - - struct Geo: Decodable { - var lat: String - var lng: String +public struct User: Identifiable, Decodable { + public var id: Int + public var name: String + public var username: String + public var email: String + public var address: Address + public var phone: String + public var website: String + public var company: Company + + public init(id: Int, name: String, username: String, email: String, address: Address, phone: String, website: String, company: Company) { + self.id = id + self.name = name + self.username = username + self.email = email + self.address = address + self.phone = phone + self.website = website + self.company = company + } + + public struct Address: Decodable { + public var street: String + public var suite: String + public var city: String + public var zipcode: String + public var geo: Geo + + public init(street: String, suite: String, city: String, zipcode: String, geo: Geo) { + self.street = street + self.suite = suite + self.city = city + self.zipcode = zipcode + self.geo = geo + } + + public struct Geo: Decodable { + public var lat: String + public var lng: String + + public init(lat: String, lng: String) { + self.lat = lat + self.lng = lng + } } } - - struct Company: Decodable { - var name: String - var catchPhrase: String - var bs: String + + public struct Company: Decodable { + public var name: String + public var catchPhrase: String + public var bs: String + + public init(name: String, catchPhrase: String, bs: String) { + self.name = name + self.catchPhrase = catchPhrase + self.bs = bs + } } } diff --git a/wake/View/Owner/UserInfo/UserInfo.swift b/wake/View/Owner/UserInfo/UserInfo.swift index 7a49929..38c42b5 100644 --- a/wake/View/Owner/UserInfo/UserInfo.swift +++ b/wake/View/Owner/UserInfo/UserInfo.swift @@ -10,6 +10,7 @@ struct UserInfo: View { @State private var darkModeEnabled = false @State private var showLogoutAlert = false @State private var avatarImage: UIImage? // Add this line + @State private var name: String = "" var body: some View { VStack(spacing: 0) { @@ -39,53 +40,49 @@ struct UserInfo: View { .font(Typography.font(for: .title)) .frame(maxWidth: .infinity, alignment: .center) - // Avatar - ZStack { - // Show either the SVG or the uploaded image - if let avatarImage = avatarImage { - Image(uiImage: avatarImage) - .resizable() - .scaledToFill() - .frame(width: 200, height: 200) - .clipShape(Circle()) - } else { - SVGImage(svgName: "Avatar") - .frame(width: 200, height: 200) - } + // Avatar section + VStack { + Text("your name") + .font(.headline) + .padding(.bottom, 10) - // Make sure the AvatarUploader is on top and covers the entire area - AvatarUploader(selectedImage: $avatarImage, size: 200) - .contentShape(Rectangle()) // This makes the entire area tappable + // Avatar image or placeholder + Circle() + .fill(Color.gray.opacity(0.3)) + .frame(width: 100, height: 100) + .overlay( + Image(systemName: "person.fill") + .resizable() + .scaledToFit() + .foregroundColor(.white) + .padding(30) + ) } - .frame(width: 200, height: 200) - .padding(.vertical, 20) + .padding(.top, 30) - // Buttons - Button(action: { - // Action for first button - }) { - Text("Upload from Gallery") - .frame(maxWidth: .infinity) - .padding() - .foregroundColor(.black) - .background( - RoundedRectangle(cornerRadius: 25) - .fill(Color(red: 1.0, green: 0.973, blue: 0.871)) - ) - } + // Name input field + TextField("Enter your name", text: $name) + .textFieldStyle(RoundedBorderTextFieldStyle()) + .padding(.horizontal, 40) + .padding(.top, 20) + Spacer() + + // Next/Open button Button(action: { - // Action for second button + // Action for open button }) { - Text("Take a Photo") + Text("Open") .frame(maxWidth: .infinity) .padding() .foregroundColor(.black) .background( RoundedRectangle(cornerRadius: 25) - .fill(Color(red: 1.0, green: 0.973, blue: 0.871)) + .fill(Color(red: 1.0, green: 0.714, blue: 0.271)) ) } + .padding(.bottom, 30) + .padding(.horizontal, 20) } .padding() .background(Color(.white)) diff --git a/wake/View/Welcome/SplashView.swift b/wake/View/Welcome/SplashView.swift new file mode 100644 index 0000000..c81fbb6 --- /dev/null +++ b/wake/View/Welcome/SplashView.swift @@ -0,0 +1,92 @@ +import SwiftUI + +struct SplashView: View { + @State private var isAnimating = false + @State private var showLogin = false + @EnvironmentObject private var authState: AuthState + + var body: some View { + NavigationView { + ZStack { + // 背景渐变 + LinearGradient( + gradient: Gradient(colors: [ + Theme.Colors.primary, // Primary color with some transparency + Theme.Colors.primaryDark, // Darker shade of the primary color + ]), + startPoint: .topLeading, + endPoint: .bottomTrailing + ) + .edgesIgnoringSafeArea(.all) + VStack(spacing: 50) { + Spacer() + // 欢迎文字动画 + Text("Welcome") + .font(.system(size: 40, weight: .bold, design: .rounded)) + .foregroundColor(.primary) + .scaleEffect(isAnimating ? 1.1 : 0.9) + .opacity(isAnimating ? 1 : 0.3) + .animation( + .easeInOut(duration: 1.5) + .repeatForever(autoreverses: true), + value: isAnimating + ) + + // 动画图标 + Image(systemName: "moon.stars.fill") + .font(.system(size: 120)) + .foregroundColor(.accentColor) + .rotationEffect(.degrees(isAnimating ? 360 : 0)) + .scaleEffect(isAnimating ? 1.2 : 0.8) + .animation( + .easeInOut(duration: 2) + .repeatForever(autoreverses: true), + value: isAnimating + ) + + Spacer() + + // 圆形按钮 + Button(action: { + withAnimation { + showLogin = true + } + }) { + Image(systemName: "arrow.right") + .font(.title) + .foregroundColor(.white) + .frame(width: 140, height: 140) + .background( + Circle() + .fill(Color.accentColor.opacity(0.7)) // 80% opacity + .shadow(radius: 10) + ) + } + .padding(.bottom, 40) + .background( + NavigationLink(destination: LoginView().environmentObject(authState), isActive: $showLogin) { + EmptyView() + } + .hidden() + ) + Spacer() + } + .padding() + } + .onAppear { + isAnimating = true + } + } + .navigationViewStyle(StackNavigationViewStyle()) + } +} + +// 预览 +#if DEBUG +struct SplashView_Previews: PreviewProvider { + static var previews: some View { + SplashView() + .environmentObject(AuthState.shared) + } +} +#endif \ No newline at end of file diff --git a/wake/WakeApp.swift b/wake/WakeApp.swift index 49addd2..ec8fe09 100644 --- a/wake/WakeApp.swift +++ b/wake/WakeApp.swift @@ -1,20 +1,12 @@ - import SwiftUI import UIKit import SwiftData @main struct WakeApp: App { - // init() { - // // 打印所有可用的字体 - // print("\n=== 所有可用的字体 ===") - // for family in UIFont.familyNames.sorted() { - // print("\n\(family):") - // for name in UIFont.fontNames(forFamilyName: family).sorted() { - // print(" - \(name)") - // } - // } - // } + @StateObject private var authState = AuthState.shared + @State private var showSplash = true + // 使用更简单的方式创建模型容器 let container: ModelContainer @@ -32,26 +24,77 @@ struct WakeApp: App { // 3. 重新创建容器 container = try! ModelContainer(for: Login.self) } + + // 配置网络层 + configureNetwork() } - var body: some Scene { WindowGroup { - ContentView() -// SettingsView() - // 导航栏按钮 - // TabView{ - // ContentView() - // .tabItem{ - // Label("wake", systemImage: "book") - // } - // SettingView() - // .tabItem{ - // Label("setting", systemImage: "gear") - // } - // } + ZStack { + if showSplash { + // 显示启动页 + SplashView() + .environmentObject(authState) + .onAppear { + // 启动页显示时检查token有效性 + checkTokenValidity() + } + } else { + // 根据登录状态显示不同视图 + if authState.isAuthenticated { + // 已登录:显示主界面 + ContentView() + .environmentObject(authState) + } else { + // 未登录:显示登录界面 + ContentView() + .environmentObject(authState) + } + } + } + .onAppear { + // 3秒后自动隐藏启动页 + // DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + // withAnimation { + // showSplash = false + // } + // } + } } - // 注入模型容器到环境中 .modelContainer(container) } -} + + // MARK: - 私有方法 + + /// 配置网络层 + private func configureNetwork() { + // 配置网络请求超时时间等 + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 30 + configuration.timeoutIntervalForResource = 60 + + // 可以在这里添加其他网络配置 + } + + /// 检查token有效性 + private func checkTokenValidity() { + guard TokenManager.shared.hasToken, + let token = KeychainHelper.getAccessToken() else { + showSplash = false + return + } + + // 检查token是否有效 + if TokenManager.shared.isTokenValid(token) { + authState.isAuthenticated = true + } + + // 3秒后自动隐藏启动页 + // DispatchQueue.main.asyncAfter(deadline: .now() + 3) { + // withAnimation { + // showSplash = false + // } + // } + } +} \ No newline at end of file