| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | 
							- <?php
 
- /**
 
-  *
 
-  * Login(后台登陆页面)
 
-  *
 
-  */
 
- if(!defined("Ainaphp")) exit("Access Denied");
 
- class LoginAction extends Action{
 
-     private $adminid ,$groupid ,$sysConfig ,$cache_model,$Config,$menudata ;
 
-     function _initialize()
 
-     {
 
- 		$this->sysConfig = F('sys.config');
 
- 		C('ADMIN_ACCESS',$this->sysConfig['ADMIN_ACCESS']);
 
- 		import('@.TagLib.TagLibYP');
 
-         $this->adminid = $_SESSION['adminid'];
 
-         $this->groupid = $_SESSION['groupid'];
 
-     }
 
-     /**
 
-      * 登录页
 
-      *
 
-      */
 
-     public function index()
 
-     {
 
- 		if(is_file(RUNTIME_FILE))@unlink(RUNTIME_FILE);
 
- 		$this->menudata = F('Menu');
 
- 		$this->cache_model=array('Lang','Menu','Config','Module','Role','Category','Posid','Field','Type','Urlrule','Dbsource');
 
- 		if(empty($this->sysConfig['ADMIN_ACCESS']) || empty($this->menudata)){
 
- 			foreach($this->cache_model as $r){
 
- 				savecache($r);
 
- 			}
 
- 			$this->sysConfig = F('sys.config');
 
- 			C('ADMIN_ACCESS',$this->sysConfig['ADMIN_ACCESS']);
 
- 		}
 
- 		if($this->_adminid){
 
- 			$this->assign('jumpUrl',U('Index/index'));
 
- 			$this->success(L('logined'));
 
- 		}
 
- 		$this->assign ( 'admin_verify', $this->sysConfig['ADMIN_VERIFY'] );
 
-         $this->display();
 
-     }
 
-     /**
 
-      * 提交登录
 
-      *
 
-      */
 
-     public function doLogin()
 
-     {
 
- 		$dao = M('User');
 
- 		$ip =get_client_ip();
 
- 		if(empty($this->sysConfig['ADMIN_ACCESS'])) $this->error(L('NO SYSTEM CONFIG FILE'));
 
- 		$username = get_safe_replace(trim($_POST['username']));
 
-         $password = get_safe_replace(trim($_POST['password']));
 
-         $verifyCode = trim($_POST['verifyCode']);
 
-         if(empty($username) || empty($password)){
 
-            $this->error(L('empty_username_empty_password'));
 
-         }elseif($_SESSION['verify'] && $this->sysConfig['ADMIN_VERIFY'] &&  md5($verifyCode) != $_SESSION['verify']){
 
-            $this->error(L('error_verify'));
 
-         }
 
- 		$time =time();
 
- 		$logwhere=array();
 
- 		$logwhere['time']=array('EGT',$time-1800);
 
- 		$logwhere['ip']=array('eq',$ip);
 
- 		$logwhere['error'] =1;
 
- 		$lognum= M('Log')->where($logwhere)->count();
 
- 		if($lognum>=5)$this->error("错误次数过多,请联系管理人员!");
 
-         $condition = array();
 
-         $condition['username'] =array('eq',$username);
 
- 		import ( '@.ORG.RBAC' );
 
-         $authInfo = RBAC::authenticate($condition);
 
-         //使用用户名、密码和状态的方式进行认证
 
-         if(false === $authInfo) {
 
- 			$data=array();
 
- 			$data['username']=$username;
 
- 			$data['ip']=$ip;
 
- 			$data['time']=$time;
 
- 			$data['note']=L('empty_userid');
 
- 			$data['error'] =1;
 
- 			M('Log')->add($data);
 
-             $this->error(L('empty_userid'));
 
-         }else {
 
-             if($authInfo['password'] != sysmd5($password)) {
 
- 				$data=array();
 
- 				$data['username']=$username;
 
- 				$data['ip']=$ip;
 
- 				$data['time']=$time;
 
- 				$data['note']=L('password_error').':'.$password;
 
- 				$data['error'] =1;
 
- 				M('Log')->add($data);
 
-             	$this->error(L('password_error'));
 
-             }
 
- 			$_SESSION['username'] = $authInfo['username'];
 
- 			$_SESSION['adminid'] = $_SESSION['userid'] = $authInfo['id'];
 
- 			$_SESSION['groupid'] = $authInfo['groupid'];
 
- 			$_SESSION['adminaccess'] = C('ADMIN_ACCESS');
 
-             $_SESSION[C('USER_AUTH_KEY')]	=	$authInfo['id'];
 
-             $_SESSION['email']	=	$authInfo['email'];
 
-             $_SESSION['lastLoginTime']		=	$authInfo['last_logintime'];
 
- 			$_SESSION['login_count']	=	$authInfo['login_count']+1;
 
-             if($authInfo['groupid']==1) {
 
- 				$_SESSION[C('ADMIN_AUTH_KEY')]=true;
 
-             }
 
-             //保存登录信息
 
- 			$data = array();
 
- 			$data['id']	=	$authInfo['id'];
 
- 			$data['last_logintime']	=	$time;
 
- 			$data['last_ip']	=	 get_client_ip();
 
- 			$data['login_count']	=	array('exp','login_count+1');
 
- 			$dao->save($data);
 
-            // 缓存访问权限
 
-             RBAC::saveAccessList();
 
- 				$data=array();
 
- 				$data['username']=$username;
 
- 				$data['ip']=$ip;
 
- 				$data['time']=$time;
 
- 				$data['note']=L('login_ok');
 
- 				M('Log')->add($data);
 
- 			if($_POST['ajax']){
 
- 				$this->ajaxReturn($authInfo,L('login_ok'),1);
 
- 			}else{
 
- 				$this->assign('jumpUrl',U('Index/index'));
 
- 				$this->success(L('login_ok'));
 
- 			}
 
- 		}
 
-     }
 
-     /**
 
-      * 退出登录
 
-      *
 
-      */
 
-     public function logout()
 
-     {
 
- 		if(isset($_SESSION[C('USER_AUTH_KEY')])) {
 
- 			unset($_SESSION[C('USER_AUTH_KEY')]);
 
- 			unset($_SESSION);
 
- 			session_destroy();
 
-             $this->assign('jumpUrl',U('Login/index'));
 
- 			$this->success(L('loginouted'));
 
-         }else {
 
- 			$this->assign('jumpUrl',U('Login/index'));
 
-             $this->error(L('logined'));
 
-         }
 
-     }
 
-     function checkEmail(){
 
- 		$user=M('User');
 
-         $email=$_GET['email'];
 
- 		$userid=intval($_GET['userid']);
 
- 		if(empty($userid)){
 
- 			if($user->getByEmail($email)){
 
- 				 echo 'false';
 
- 			}else{
 
- 				echo 'true';
 
- 			}
 
- 		}else{
 
- 			//判断邮箱是否已经使用
 
- 			if($user->where("id!={$userid} and email='{$email}'")->find()){
 
- 				 echo 'false';
 
- 			}else{
 
- 				echo 'true';
 
- 			}
 
- 		}
 
-         exit;
 
- 	}
 
- }
 
 
  |