Skip to content

Instantly share code, notes, and snippets.

@bright23
Created February 15, 2017 09:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bright23/0fb9fb2556a0f306bbc07f6525480c30 to your computer and use it in GitHub Desktop.
Save bright23/0fb9fb2556a0f306bbc07f6525480c30 to your computer and use it in GitHub Desktop.
//
// User.swift
// WaterLand
//
// Created by fujiwara on 2016/12/15.
// Copyright © 2016年 fujiwara. All rights reserved.
//
import UIKit
import KeychainAccess
class LoginUser: NSCoder {
static let sharedInstance = LoginUser()
let keychain = Keychain()
enum LoginUserState {
case loggedIn, loggedOut, noneUser
}
var userState: LoginUserState = .noneUser
var name: String = ""
var email: String = ""
var password: String = ""
var rePassword: String = ""
var token: String = ""
fileprivate override init() {
super.init()
}
func encodeWithCoder(_ aCoder: NSCoder) {
aCoder.encode(self.email, forKey: "email")
aCoder.encode(self.name, forKey: "name")
aCoder.encode(self.password, forKey: "password")
aCoder.encode(self.rePassword, forKey: "rePassword")
aCoder.encode(self.token, forKey: "token")
}
required init(coder aDecoder: NSCoder) {
super.init()
if keychain[AppConst.tokenKey] != nil {
self.userState = .loggedIn
} else {
self.userState = .loggedOut
}
self.name = aDecoder.decodeObject(forKey: "name") as! String
self.email = aDecoder.decodeObject(forKey: "email") as! String
self.password = aDecoder.decodeObject(forKey: "password") as! String
self.rePassword = aDecoder.decodeObject(forKey: "rePassword") as! String
self.token = aDecoder.decodeObject(forKey: "token") as! String
}
final func logout() {
resetUser()
keychain[AppConst.tokenKey] = nil
userState = .loggedOut
}
final func getAccessToken() -> String? {
return keychain[AppConst.tokenKey]
}
final func setAccessToken(_ accessToken: String) {
do {
try keychain.set(accessToken, key: AppConst.tokenKey)
}
catch let error {
print(error)
userState = .loggedOut
return
}
userState = .loggedIn
}
func resetUser() {
name = ""
email = ""
password = ""
rePassword = ""
userState = .loggedOut
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment