|
-
- UserManager = class("UserManager")
-
- function UserManager:ctor()
- -- 已使用过的用户列表
- self.sigleUser = {}
- self.multiUser = {}
- self.userInfoKey = "userInfoKeyForSG"
- self.fileName = "UserList.json"
-
- -- 是否单用户模式
- self.sigleMode = true;
- if cc.Application:getInstance():getTargetPlatform() == 0 or app.config.isDebugLogion then
- self.sigleMode = false;
- else
- self.sigleMode = true;
- end
-
- self.PCRememberWord = 0
-
- -- 监听用户登录成功
- app.user:addEventListener("onLoginSuccessed", function() self:addUser() end);
- app.user:addEventListener("updateWxUserInfo", handler(self,self.addUser));
-
- self:loadFile()
- end
-
- function UserManager:loadFile()
- logD("UserManager:loadFile()")
-
- -- 单用户模式下需要检查授权的有效期
- if self.sigleMode then
- logD("UserManager:loadFile() sigleUser")
-
- local jsonString = loadUserInfo(self.userInfoKey)
- logD("UserManager:loadFile() sigleUser jsonString = ", jsonString);
-
- if not jsonString then
- return
- end
-
- self.sigleUser = json.decode(jsonString) or {}
- self.initUserRememberPW = self.sigleUser.nRememberPW;
-
- local timeOld = self.sigleUser.time or 0
- local timeNow = os.time();
- logD("UserManager:loadFile() sigleUser, timeOld = ", timeOld)
- logD("UserManager:loadFile() sigleUser, timeNow = ", timeNow)
- if timeNow - timeOld > 7 * 24 * 3600 then
- self.sigleUser = {}
- self:saveFile();
- end
- else
- logD("UserManager:loadFile() multiUser")
- self.multiUser = {}
-
- jsonString = loadStringFromFile(self.fileName)
- if jsonString then
- self.multiUser = json.decode(jsonString) or {}
- end
- end
- end
-
- function UserManager:saveFile()
- logD("UserManager::saveFile()")
-
- if self.sigleMode then
- local jsonString = json.encode(self.sigleUser)
- logD("UserManager::saveFile() sigleUser jsonString = ", jsonString)
- saveUserInfo(self.userInfoKey, jsonString)
- else
- local jsonString = json.encode(self.multiUser)
- logD("UserManager::saveFile() multiUser jsonString = ", jsonString)
- saveStringToFile(jsonString, self.fileName)
- end
- end
-
- function UserManager:addUser(data)
- local response = data and data.response
- local forceCover = response and response.forceCover
- local userInfo = response and response.userInfo or app.user.userInfo;
- logD("UserManager::addUser() forceCover = ", forceCover)
-
- local jsonInfo = userInfo and json.decode(userInfo) or {}
- local userId = tonumber(jsonInfo.uid) or tonumber(app.user.loginInfo.uid);
- local openid = jsonInfo.openid;
- local unionid = jsonInfo.unionid;
- local loginType = jsonInfo.loginType;
- local phonenum = jsonInfo.phonenum;
- local password = jsonInfo.password;
- local timeNow = os.time();
- local nRememberPW = self:getLoginRecordCode() or self.PCRememberWord
-
- local stUserInfo = {userId = userId, openid = openid, unionid = unionid, loginType = loginType,
- userInfo = userInfo, time = timeNow,nRememberPW = nRememberPW,password = password}
-
- logD("UserManager::addUser() stUserInfo = ", table.tostring(stUserInfo))
-
- if self.sigleMode then
-
- local oldPassWord = self.sigleUser.userInfo and json.decode(self.sigleUser.userInfo).password
-
- if forceCover or self.sigleUser.userId ~= stUserInfo.userId or self.sigleUser.openid ~= stUserInfo.openid
- or oldPassWord ~= password or self.initUserRememberPW ~= nRememberPW or stUserInfo.loginType ~= self.sigleUser.loginType then
- logD("UserManager::addUser() sigleUser. update user info")
- self.sigleUser = stUserInfo;
- self:saveFile();
- else
- logD("UserManager::addUser() sigleUser. don't update user info ")
- end
- else
- self.multiUser = self.multiUser or {}
- self.multiUser[tostring(userId)] = stUserInfo;
- self:saveFile();
- if isWin32Platform() then
- app:dispatchEvent({name = "initPCAccoutList"})
- end
- end
- end
-
- function UserManager:clearUserList()
- self.sigleUser = {}
- self.multiUser = {}
- self:saveFile()
- end
-
- function UserManager:hasUserInfo()
- if self.sigleUser and self.sigleUser.userId then
- return true
- else
- return false
- end
- end
-
- function UserManager:getUserInfo()
- if self.sigleMode then
- return self.sigleUser
- else
- local uid = loadUserId()
- if uid and self.multiUser[uid] then
- return self.multiUser[uid]
- else
- return nil
- end
- end
- end
-
- function UserManager:getUserList()
- self:loadFile()
- return self.multiUser;
- end
-
- function UserManager:getLoginRecordCode()
- if self.sigleMode then
- return self.sigleUser.nRememberPW or 0;
- else
- local uid = loadUserId()
- if uid and self.multiUser[uid] then
- return self.multiUser[uid].nRememberPW or self.PCRememberWord;
- else
- return self.PCRememberWord;
- end
- end
- end
-
- function UserManager:setLoginRecordCode(newCode)
- if self.sigleMode then
- self.sigleUser.nRememberPW = newCode
- else
- local uid = loadUserId()
- if uid and self.multiUser[uid] then
- self.multiUser[uid].nRememberPW = newCode
- end
- self.PCRememberWord = newCode
- end
- end
-
- return UserManager
|