@@ -17,6 +17,7 @@ class DataStorage {
1717 case phone
1818 case isAdmin
1919 case loggedIn
20+ case cookies
2021 }
2122
2223 private init() {}
@@ -41,6 +42,43 @@ class DataStorage {
4142 UserDefaults.standard.setValue(isAdmin, forKey: Keys.isAdmin.rawValue)
4243 }
4344
45+
46+ /// Метод для установки куков в хранилище
47+ /// - Parameter cookies: куки
48+ /// - Parameter url: url для куков
49+ func setCookies(_ cookies: [HTTPCookie], forURL url: URL) {
50+ let cookiesStorage = HTTPCookieStorage.shared
51+ let userDefaults = UserDefaults.standard
52+
53+ var cookieDict = [String: AnyObject]()
54+
55+ for cookie in cookiesStorage.cookies(for: url)! {
56+ cookieDict[cookie.name] = cookie.properties as AnyObject?
57+ }
58+
59+ userDefaults.set(cookieDict, forKey: Keys.cookies.rawValue)
60+ }
61+
62+
63+ /// Достаем из хранилища и устанавливаем куки
64+ /// Если не выходит, то вовзращаем false
65+ func getCookies() -> Bool {
66+ let cookiesStorage = HTTPCookieStorage.shared
67+ let userDefaults = UserDefaults.standard
68+
69+ if let cookieDictionary = userDefaults.dictionary(forKey: Keys.cookies.rawValue) {
70+
71+ for (_, cookieProperties) in cookieDictionary {
72+ if let cookie = HTTPCookie(properties: cookieProperties as! [HTTPCookiePropertyKey : Any] ) {
73+ cookiesStorage.setCookie(cookie)
74+ }
75+ }
76+ return true
77+ }
78+
79+ return false
80+ }
81+
4482 func getUserModel() -> User? {
4583 guard
4684 let name = UserDefaults.standard.string(forKey: Keys.name.rawValue),
@@ -53,7 +91,7 @@ class DataStorage {
5391 }
5492
5593 func isLoggedIn() -> Bool {
56− return UserDefaults.standard.bool(forKey: Keys.loggedIn.rawValue)
94+ return UserDefaults.standard.bool(forKey: Keys.loggedIn.rawValue) && getCookies()
5795 }
5896
5997 func setLoggedInState(_ value: Bool) {