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

207 lines
8.4 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class Login_WeliamController{
/**
* Comment: 代理商/代理商员工登录
* Author: zzw
*/
public function agent_login(){
global $_W,$_GPC;
if(!empty($_GPC['i'])){
$_W['uniacid'] = $_GPC['i'];
}
if(empty($_W['uniacid']) && !empty($_GPC['aid'])){
$_W['uniacid'] = pdo_getcolumn(PDO_NAME.'agentusers',array('id'=>$_GPC['aid']),'uniacid');
$_W['aid'] = $_GPC['aid'];
}
$set = Setting::wlsetting_read('base');
if(checksubmit() || $_W['isajax']) {
if($_GPC['aid']){
$this->staffLogin($_GPC);//代理商员工登录
}else{
isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
$this->_login($_GPC['referer']);//代理商登陆
}
}
include wl_template('user/agent_login');
}
/**
* Comment: 代理商/员工退出登录
*/
public function logout(){
global $_W,$_GPC;
if($_GPC['__wlagent_staff_session']){
isetcookie('__wlagent_session', '', -10000);//删除代理商登录信息
isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
header('Location:' . web_url('user/login/agent_login',array('aid'=>$_W['aid'])));
}else if($_GPC['__wlagent_session']){
isetcookie('__wlagent_session', '', -10000);//删除代理商登录信息
isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
header('Location:' . web_url('user/login/agent_login'));
}
}
/**
* Comment: 代理商登陆操作
* @param string $forward
*/
public function _login($forward = '') {
global $_GPC, $_W;
$member = array();
$username = trim($_GPC['username']);
pdo_query('DELETE FROM'.tablename('users_failed_login'). ' WHERE lastupdate < :timestamp', array(':timestamp' => TIMESTAMP-300));
$failed = pdo_get('users_failed_login', array('username' => $username, 'ip' => CLIENT_IP));
if ($failed['count'] >= 5) {
wl_message('输入密码错误次数超过5次,请在5分钟后再登录',referer(), 'info');
}
if(empty($username)) {
wl_message('请输入要登录的用户名');
}
$member['uniacid'] = $_GPC['i'];
$member['username'] = $username;
$member['password'] = $_GPC['password'];
if(empty($member['password'])) {
wl_message('请输入密码');
}
$record = User::agentuser_single($member);
if(!empty($record)) {
if($record['status'] != 1) {
wl_message('您的账号正在审核或是已经被系统禁止,请联系网站管理员解决!');
}
if (!empty($record['endtime']) && $record['endtime'] < TIMESTAMP) {
wl_message('您的账号有效期限已过,请联系网站管理员解决!');
}
$cookie = array();
$cookie['id'] = $record['id'];
$cookie['uniacid'] = $record['uniacid'];
$cookie['hash'] = md5($record['password'] . $record['salt']);
$session = base64_encode(json_encode($cookie));
isetcookie('__wlagent_session', $session, 7 * 86400, true);
$status = array();
$status['id'] = $record['id'];
$status['lastvisit'] = TIMESTAMP;
$status['lastip'] = CLIENT_IP;
User::agentuser_update($status);
pdo_delete('users_failed_login', array('id' => $failed['id']));
wl_message("欢迎回来,{$record['username']}", web_url('dashboard/dashboard'));
} else {
if (empty($failed)) {
pdo_insert('users_failed_login', array('ip' => CLIENT_IP, 'username' => $username, 'count' => '1', 'lastupdate' => TIMESTAMP));
} else {
pdo_update('users_failed_login', array('count' => $failed['count'] + 1, 'lastupdate' => TIMESTAMP), array('id' => $failed['id']));
}
wl_message('登录失败,请检查您输入的用户名和密码!');
}
}
/**
* Comment: 代理商员工登录
* Author: zzw
* @param $info 登录信息
*/
protected function staffLogin($info){
global $_W;
#1、接收参数信息
$aid = $info['aid'];
$account = $info['username'];
$password = $info['password'];
#2、判断信息是否完整
if(!$account){
wl_message('登录失败!请填写账号信息。');
}else if (!$password){
wl_message('登录失败!请填写账号密码。');
}
#3、判断代理商是否存在
$agent = pdo_get(PDO_NAME."agentusers",array('id'=>$aid));
if(!$agent){
wl_message('登录失败!代理商信息不存在。');
}else if ($agent['status'] != 1){
wl_message('登录失败!该代理商正在审核或是已经被禁用,请联系网站管理员解决。');
}else if(!empty($agent['endtime']) && $agent['endtime'] < TIMESTAMP){
wl_message('登录失败!该代理商运营有效期已过,请联系网站管理员解决。');
}
#4、判断是否存在该账号
$existence = pdo_get(PDO_NAME."agentadmin",array('account'=>$account));
if(!$existence){
wl_message('登录失败!账号不存在。');
}
#5、判断账号密码是否正确
$userInfo = pdo_get(PDO_NAME."agentadmin",array('account'=>$account,'password'=>md5($password)));
if(!$userInfo){
wl_message('登录失败!密码错误。');
}
#6、登录成功后的操作 - 模拟代理商登录成功
$cookie['id'] = $agent['id'];
$cookie['uniacid'] = $agent['uniacid'];
$cookie['hash'] = md5($agent['password'] . $agent['salt']);
$session = base64_encode(json_encode($cookie));
isetcookie('__wlagent_session', $session, 7 * 86400, true);
#7、登录成功后的操作 - 员工登录成功,储存员工登录信息
$userCookie['aid'] = $aid;
$userCookie['uniacid'] = $_W['uniacid'];
$userCookie['account'] = $account;
$userCookie['password'] = md5($password);
$userSession = base64_encode(json_encode($userCookie));
isetcookie('__wlagent_staff_session', $userSession, 7 * 86400, true);
#8、获取该管理员的昵称信息
$mid = $userInfo['mid'];
$nickname = pdo_getcolumn(PDO_NAME."member",array('id'=>$mid),'nickname');
wl_message("欢迎回来,{$nickname}", web_url('dashboard/dashboard'));
}
//平台员工登录
public function adminStaffLogin(){
global $_W,$_GPC;
//参数信息获取
$account = $_GPC['username'] ? : '';
$password = $_GPC['password'] ? : '';
$uniacid = $_GPC['i'] ? : $_W['uniacid'];
$set = Setting::wlsetting_read('base');
if($account) {
if(!$account || !$password) wl_message('请完善账号密码!');
//判断账号密码是否正确
$where = [
'account' => $account,
'password' => md5($password),
'uniacid' => $uniacid,
'aid' => 0,//平台员工aid固定为1
];
$existence = pdo_get(PDO_NAME."agentadmin",$where);
if(!$existence) wl_message('账号密码错误!');
//模拟后台登录
$_W['highest_role'] = 'founder';
//记录员工登录信息
$user = [
'uniacid' => $uniacid,
'account' => $account,
'password' => md5($password)
];
$userSession = base64_encode(json_encode($user));
isetcookie('__wlsystem_staff_session', $userSession, 7 * 86400, true);
//获取该管理员的昵称信息
$nickname = pdo_getcolumn(PDO_NAME."member",['id' => $existence['mid']],'nickname');
$url = web_url('dashboard/dashboard/index');
wl_message("欢迎回来,{$nickname}", $url);
}
include wl_template('user/agent_login');
}
//平台员工退出登录
public function adminStaffLogout(){
global $_W,$_GPC;
//删除员工登录信息
if($_GPC['__wlsystem_staff_session'] || $_GPC['__session']){
isetcookie('__session', '', -10000);//删除模拟的管理员登录信息
isetcookie('__wlsystem_staff_session', '', -10000);//删除员工登录信息
}
$loginUrl = $_W['siteroot']."web/citysys.php?p=user&ac=login&do=adminStaffLogin&i={$_W['uniacid']}";//平台员工登录
header('Location:' . $loginUrl);
}
}