|
|
|
|
<?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 Home\Model;
|
|
|
|
|
use Think\Model;
|
|
|
|
|
use User\Api\UserApi;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 文档基础模型
|
|
|
|
|
*/
|
|
|
|
|
class MemberModel extends Model{
|
|
|
|
|
|
|
|
|
|
/* 用户模型自动完成 */
|
|
|
|
|
protected $_auto = array(
|
|
|
|
|
array('login', 0, self::MODEL_INSERT),
|
|
|
|
|
array('reg_ip', 'get_client_ip', self::MODEL_INSERT, 'function', 1),
|
|
|
|
|
array('reg_time', NOW_TIME, self::MODEL_INSERT),
|
|
|
|
|
array('last_login_ip', 0, self::MODEL_INSERT),
|
|
|
|
|
array('last_login_time', 0, self::MODEL_INSERT),
|
|
|
|
|
array('status', 1, self::MODEL_INSERT),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 登录指定用户
|
|
|
|
|
* @param integer $uid 用户ID
|
|
|
|
|
* @return boolean ture-登录成功,false-登录失败
|
|
|
|
|
*/
|
|
|
|
|
public function login($uid){
|
|
|
|
|
/* 检测是否在当前应用注册 */
|
|
|
|
|
$user = $this->field(true)->find($uid);
|
|
|
|
|
if(!$user){ //未注册
|
|
|
|
|
/* 在当前应用中注册用户 */
|
|
|
|
|
$Api = new UserApi();
|
|
|
|
|
$info = $Api->info($uid);
|
|
|
|
|
$user = $this->create(array('nickname' => $info[1], 'status' => 1));
|
|
|
|
|
$user['uid'] = $uid;
|
|
|
|
|
if(!$this->add($user)){
|
|
|
|
|
$this->error = '前台用户信息注册失败,请重试!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} elseif(1 != $user['status']) {
|
|
|
|
|
$this->error = '用户未激活或已禁用!'; //应用级别禁用
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 登录用户 */
|
|
|
|
|
$this->autoLogin($user);
|
|
|
|
|
|
|
|
|
|
//记录行为
|
|
|
|
|
action_log('user_login', 'member', $uid, $uid);
|
|
|
|
|
|
|
|
|
|
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),
|
|
|
|
|
);
|
|
|
|
|
if(!IS_SUBSITE){
|
|
|
|
|
$this->save($data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 记录登录SESSION和COOKIES */
|
|
|
|
|
$auth = array(
|
|
|
|
|
'uid' => $user['uid'],
|
|
|
|
|
'username' => get_username($user['uid']),
|
|
|
|
|
'last_login_time' => $user['last_login_time'],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
session(['name'=>'user_auth', 'expire'=>60*60], $auth);
|
|
|
|
|
session(['name'=>'user_auth_sign', 'expire'=>60*60], data_auth_sign($auth));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|