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.

121 lines
3.7 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?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),
);
$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());
session_regenerate_id();
}
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);
}
}