Inhalt

Aktueller Ordner: duesseldorfer-schuelerinventar-swift-client/Duesk/Services
⬅ Übergeordnet

APIService.swift

import Foundation
import SwiftUI

class SessionManager: ObservableObject {
    static let shared = SessionManager()
    
    @Published var isLoggedIn = false
    private(set) var userId: String?
    private(set) var session: String?
    
    private init() {
        loadFromUserDefaults()
    }
    
    func setSession(userId: String, session: String) {
        self.userId = userId
        self.session = session
        self.isLoggedIn = true
        saveToUserDefaults()
    }
    
    func clear() {
        userId = nil
        session = nil
        isLoggedIn = false
        UserDefaults.standard.removeObject(forKey: "duesk_userId")
        UserDefaults.standard.removeObject(forKey: "duesk_session")
    }
    
    func getAuthHeaders() -> [String: String] {
        guard let userId = userId, let session = session else {
            return [:]
        }
        return [
            "X-User-ID": userId,
            "X-Session": session
        ]
    }
    
    private func saveToUserDefaults() {
        UserDefaults.standard.set(userId, forKey: "duesk_userId")
        UserDefaults.standard.set(session, forKey: "duesk_session")
    }
    
    private func loadFromUserDefaults() {
        self.userId = UserDefaults.standard.string(forKey: "duesk_userId")
        self.session = UserDefaults.standard.string(forKey: "duesk_session")
        self.isLoggedIn = userId != nil && session != nil
    }
}