add user_id

This commit is contained in:
cheykrym 2025-10-05 05:35:02 +03:00
parent e0ad636d77
commit 5d74af5597
2 changed files with 24 additions and 7 deletions

View File

@ -104,7 +104,8 @@ class AuthService {
// Сохраняем токены в Keychain
KeychainService.shared.save(loginResponse.access_token, forKey: "access_token", service: username)
KeychainService.shared.save(loginResponse.refresh_token, forKey: "refresh_token", service: username)
KeychainService.shared.save(loginResponse.user_id, forKey: "user_id", service: username)
print("loginResponse.user_id \(loginResponse.user_id)")
KeychainService.shared.save(loginResponse.user_id, forKey: "userId", service: username)
UserDefaults.standard.set(username, forKey: "currentUser")
completion(true, nil)
@ -247,6 +248,7 @@ class AuthService {
// Удаляем токены текущего пользователя
KeychainService.shared.delete(forKey: "access_token", service: currentUser)
KeychainService.shared.delete(forKey: "refresh_token", service: currentUser)
KeychainService.shared.delete(forKey: "userId", service: currentUser)
// Сбрасываем текущего пользователя
UserDefaults.standard.removeObject(forKey: "currentUser")

View File

@ -10,6 +10,7 @@ import Combine
class LoginViewModel: ObservableObject {
@Published var username: String = ""
@Published var userId: String = ""
@Published var password: String = ""
@Published var isLoading: Bool = true // сразу true, чтобы показать спиннер при автологине
@Published var showError: Bool = false
@ -18,12 +19,14 @@ class LoginViewModel: ObservableObject {
private let authService = AuthService()
private enum DefaultsKeys {
static let currentUser = "currentUser"
static let userId = "userId"
}
init() {
// Если username сохранён, подставим его сразу
if let savedUsername = UserDefaults.standard.string(forKey: "currentUser") {
username = savedUsername
}
loadStoredUser()
// Запускаем автологин
autoLogin()
}
@ -33,6 +36,7 @@ class LoginViewModel: ObservableObject {
DispatchQueue.main.async {
// self?.isLoading = false
if success {
self?.loadStoredUser()
self?.isLoggedIn = true
} else {
self?.isLoggedIn = false
@ -53,6 +57,7 @@ class LoginViewModel: ObservableObject {
DispatchQueue.main.async {
self?.isLoading = false
if success {
self?.loadStoredUser()
self?.isLoggedIn = true
} else {
self?.errorMessage = error ?? NSLocalizedString("Неизвестная ошибка", comment: "")
@ -67,6 +72,7 @@ class LoginViewModel: ObservableObject {
DispatchQueue.main.async {
if success {
self?.isLoggedIn = true // 👈 переключаем на главный экран после автологина
self?.loadStoredUser()
}
completion(success, message)
}
@ -77,12 +83,13 @@ class LoginViewModel: ObservableObject {
authService.logoutCurrentUser { [weak self] success, error in
DispatchQueue.main.async {
if success {
self?.username = UserDefaults.standard.string(forKey: "currentUser") ?? ""
self?.loadStoredUser()
self?.password = ""
self?.isLoggedIn = true
self?.showError = false
} else {
self?.username = ""
self?.userId = ""
self?.password = ""
self?.isLoggedIn = false
self?.errorMessage = error ?? NSLocalizedString("Ошибка при деавторизации.", comment: "")
@ -100,4 +107,12 @@ class LoginViewModel: ObservableObject {
// showError = false
// errorMessage = ""
// }
private func loadStoredUser() {
let defaults = UserDefaults.standard
username = defaults.string(forKey: DefaultsKeys.currentUser) ?? ""
userId = KeychainService.shared.get(forKey: DefaultsKeys.userId, service: username) ?? ""
print("username: \(username) | userId: \(userId)")
}
}