add user_id
This commit is contained in:
parent
e0ad636d77
commit
5d74af5597
@ -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")
|
||||
|
||||
@ -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)")
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user