You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.8 KiB
PHTML

5 years ago
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
namespace Admin\Model;
use Think\Model;
/**
* 用户模型
* @author 麦当苗儿 <zuojiazi@vip.qq.com>
*/
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),
);
4 years ago
if(!IS_SUBSITE){
$this->save($data);
}
5 years ago
5 years ago
$adminData = getAdminData($user['uid']);
$groupId = getGameGroup($user['uid']);
5 years ago
5 years ago
/* 记录登录SESSION和COOKIES */
$auth = array(
'uid' => $user['uid'],
'username' => $user['nickname'],
'last_login_time' => $user['last_login_time'],
5 years ago
'data_empower_type'=>$adminData['data_empower_type'],
'data_president'=>$adminData['data_president'],
'show_data'=>$adminData['show_data'],
'show_market_admin'=>$adminData['show_market_admin'],
4 years ago
'show_promote'=>$adminData['show_promote'],
5 years ago
);
session('user_group_id',$groupId);
session('user_auth', $auth);
session('user_auth_sign', data_auth_sign($auth));
5 years ago
session('user_auth_expire', time());
session_regenerate_id();
5 years ago
}
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);
}
}