// +---------------------------------------------------------------------- namespace Admin\Model; use Think\Model; /** * 用户模型 * @author 麦当苗儿 */ class MemberModel extends Model { protected $_validate = array( array('nickname', '1,16', '昵称长度为1-16个字符', self::EXISTS_VALIDATE, 'length'), array('nickname', '', '昵称被占用', self::EXISTS_VALIDATE, 'unique'), //用户名被占用 ); public function lists($status = 1, $order = 'uid DESC', $field = true){ $map = array('status' => $status); return $this->field($field)->where($map)->order($order)->select(); } /** * 登录指定用户 * @param integer $uid 用户ID * @return boolean ture-登录成功,false-登录失败 */ public function login($uid){ /* 检测是否在当前应用注册 */ $user = $this->field(true)->find($uid); if(!$user || 1 != $user['status']) { $this->error = '用户不存在或已被禁用!'; //应用级别禁用 return false; } //记录行为 action_log('user_login', 'member', $uid, $uid); /* 登录用户 */ $this->autoLogin($user); return true; } /** * 注销当前用户 * @return void */ public function logout(){ session('user_auth', null); session('user_auth_sign', null); } /** * 自动登录用户 * @param integer $user 用户信息数组 */ private function autoLogin($user){ /* 更新登录信息 */ $data = array( 'uid' => $user['uid'], 'login' => array('exp', '`login`+1'), 'last_login_time' => NOW_TIME, 'last_login_ip' => get_client_ip(1), ); $this->save($data); $adminData = getAdminData($user['uid']); /* 记录登录SESSION和COOKIES */ $auth = array( 'uid' => $user['uid'], 'username' => $user['nickname'], 'last_login_time' => $user['last_login_time'], 'data_empower_type'=>$adminData['data_empower_type'], 'data_president'=>$adminData['data_president'] ); //登录有效时间改为1小时 $expireTime = 3600; ini_set('session.gc_maxlifetime', $expireTime); ini_set('session.cookie_lifetime', $expireTime); session('user_auth', $auth); session('user_auth_sign', data_auth_sign($auth)); session('user_auth_expire', time()); } public function getNickName($uid){ return $this->where(array('uid'=>(int)$uid))->getField('nickname'); } /** * 验证二级密码 * @return bool */ public function check_sc_pwd($pwd){ $map['id'] = UID; $pro = M("ucenter_member")->where($map)->find(); if ($pro['second_pwd'] === $this->think_ucenter_md5($pwd, UC_AUTH_KEY)) { return ture; } else { return false; } } /** * 系统非常规MD5加密方法 * @param string $str 要加密的字符串 * @return string */ function think_ucenter_md5($str, $key = 'ThinkUCenter'){ return '' === $str ? '' : md5(sha1($str) . $key); } }