Merge branch 'development' of http://git.westgis.ac.cn:8000/lijianxuan/westdc-core into development
This commit is contained in:
commit
fa4aeaf15b
|
@ -7,6 +7,7 @@ use Zend\Authentication\Storage\Session as SessionStorage;
|
||||||
class Auth
|
class Auth
|
||||||
{
|
{
|
||||||
public $auth;
|
public $auth;
|
||||||
|
|
||||||
function __construct($getAuthService = false)
|
function __construct($getAuthService = false)
|
||||||
{
|
{
|
||||||
$config = Config::get();
|
$config = Config::get();
|
||||||
|
@ -25,11 +26,23 @@ class Auth
|
||||||
return $this->auth->clearIdentity();
|
return $this->auth->clearIdentity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getIdentity($field)
|
public function getIdentity($field = "")
|
||||||
{
|
{
|
||||||
|
if(empty($field))
|
||||||
|
return $this->auth->getIdentity();
|
||||||
|
|
||||||
if(isset($this->auth->getIdentity()->$field))
|
if(isset($this->auth->getIdentity()->$field))
|
||||||
return $this->auth->getIdentity()->$field;
|
return $this->auth->getIdentity()->$field;
|
||||||
else
|
else
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function write($user)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(is_array($user))
|
||||||
|
$user = (object)$user;
|
||||||
|
|
||||||
|
$this->auth->getStorage()->write($user);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -10,12 +10,10 @@ use Zend\Authentication\Adapter\DbTable;
|
||||||
use Westdc\Helpers\Assist as view;
|
use Westdc\Helpers\Assist as view;
|
||||||
use Westdc\Helpers\Config;
|
use Westdc\Helpers\Config;
|
||||||
use Westdc\Helpers\Dbh as dbh;
|
use Westdc\Helpers\Dbh as dbh;
|
||||||
use Westdc\Db\Pdo as Db;
|
|
||||||
use Westdc\Db\Db as Zend_Db;
|
use Westdc\Db\Db as Zend_Db;
|
||||||
use Westdc\Mail\Mail;
|
use Westdc\Mail\Mail;
|
||||||
use Westdc\User\Member;
|
use Westdc\User\Member;
|
||||||
|
|
||||||
|
|
||||||
class Account extends AbstractEventManager implements ServiceManagerAwareInterface
|
class Account extends AbstractEventManager implements ServiceManagerAwareInterface
|
||||||
{
|
{
|
||||||
public $memberTable = "tbl_member";
|
public $memberTable = "tbl_member";
|
||||||
|
@ -64,24 +62,15 @@ class Account extends AbstractEventManager implements ServiceManagerAwareInterfa
|
||||||
return $rs->fetch();
|
return $rs->fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
//注册
|
/**
|
||||||
|
* 用户注册
|
||||||
|
* @param $data
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function register($data)
|
public function register($data)
|
||||||
{
|
{
|
||||||
$params = compact('data');
|
$params = compact('data');
|
||||||
$results = $this->getEventManager()->trigger('register.checkParam', $this, $params);
|
$results = $this->getEventManager()->trigger('register.pre', $this, $params);
|
||||||
$cache_data = $results->last();
|
|
||||||
|
|
||||||
if($cache_data !== true)
|
|
||||||
{
|
|
||||||
if(!is_array($cache_data))
|
|
||||||
{
|
|
||||||
return array('error'=>$cache_data);
|
|
||||||
}else{
|
|
||||||
return $cache_data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$results = $this->getEventManager()->trigger('register.checkUser', $this, $params);
|
|
||||||
$cache_data = $results->last();
|
$cache_data = $results->last();
|
||||||
|
|
||||||
if($cache_data !== true)
|
if($cache_data !== true)
|
||||||
|
@ -94,29 +83,48 @@ class Account extends AbstractEventManager implements ServiceManagerAwareInterfa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将数据分为两组,一组用于做注册成功后的登陆,一组用于写入数据库
|
||||||
|
* 写入数据库的数据需要完全重建一个新的,防止因为前端传入时有人恶意增加字段造成破坏
|
||||||
|
*/
|
||||||
$loginData = array(
|
$loginData = array(
|
||||||
'username'=>$data['username'],
|
'username'=>$data['username'],
|
||||||
'password'=>$data['password']
|
'password'=>$data['password']
|
||||||
);
|
);
|
||||||
|
|
||||||
$data['password'] = md5($data['password']);
|
$registerData = [
|
||||||
$data['usertype'] = "guest";
|
'username' => $data['username'],
|
||||||
unset($data['confirm_password']);
|
'password' => md5($data['password']),
|
||||||
|
'usertype' => 'guest',
|
||||||
|
'email' => $data['email'],
|
||||||
|
'realname' => $data['realname'],
|
||||||
|
'unit' => $data['unit'],
|
||||||
|
'address' => $data['address'],
|
||||||
|
'project' => $data['project'],
|
||||||
|
'phone' => $data['phone'],
|
||||||
|
'project_id' => $data['project_id'],
|
||||||
|
'project_type' => $data['project_type'],
|
||||||
|
'project_title' => $data['project_title'],
|
||||||
|
'project_leader' => $data['project_leader'],
|
||||||
|
];
|
||||||
|
|
||||||
$dbh = new dbh();
|
$dbh = new dbh();
|
||||||
|
|
||||||
$id = $dbh->insert($this->memberTable,$data,true);
|
$id = $dbh->insert($this->memberTable,$registerData,true);
|
||||||
|
|
||||||
if(!empty($id) && is_numeric($id))
|
if(!empty($id) && is_numeric($id))
|
||||||
{
|
{
|
||||||
$this->storeLogin($loginData);
|
$this->storeLogin($loginData);
|
||||||
|
|
||||||
if(isset($state['success']))
|
if(isset($state['success']))
|
||||||
{
|
{
|
||||||
//$mb = new Member();
|
//$mb = new Member();
|
||||||
//$mb->putcookie($data[$this->FieldUsername],$data[$this->FieldPasword]);
|
//$mb->putcookie($data[$this->FieldUsername],$data[$this->FieldPasword]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$data = $registerData;
|
||||||
$params = compact('data','id');
|
$params = compact('data','id');
|
||||||
$results = $this->getEventManager()->trigger('register.success', $this, $params);
|
$this->getEventManager()->trigger('register.success', $this, $params);
|
||||||
return array("success" => 1);
|
return array("success" => 1);
|
||||||
}else{
|
}else{
|
||||||
if($id === false)
|
if($id === false)
|
||||||
|
@ -129,10 +137,14 @@ class Account extends AbstractEventManager implements ServiceManagerAwareInterfa
|
||||||
|
|
||||||
}//register
|
}//register
|
||||||
|
|
||||||
//登陆
|
/**
|
||||||
|
* 用户登陆
|
||||||
|
* @param $data
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function login($data)
|
public function login($data)
|
||||||
{
|
{
|
||||||
$results = $this->getEventManager()->trigger('login.checkParam', $this, compact('data'));
|
$results = $this->getEventManager()->trigger('login.pre', $this, compact('data'));
|
||||||
$cache_data = $results->last();
|
$cache_data = $results->last();
|
||||||
|
|
||||||
if($cache_data !== true)
|
if($cache_data !== true)
|
||||||
|
@ -150,13 +162,24 @@ class Account extends AbstractEventManager implements ServiceManagerAwareInterfa
|
||||||
if(isset($state['success']))
|
if(isset($state['success']))
|
||||||
{
|
{
|
||||||
//$mb = new Member();
|
//$mb = new Member();
|
||||||
//$mb->putcookie($data[$this->FieldUsername],md5($data[$this->FieldPasword]));
|
//$mb->putcookie($data[$this->FieldUsername],$data[$this->FieldPasword]);
|
||||||
|
|
||||||
|
$user = (array)$state['user'];
|
||||||
|
$this->getEventManager()->trigger('login.success', $this, compact('user'));
|
||||||
|
}else{
|
||||||
|
$this->getEventManager()->trigger('login.failed', $this, compact('data'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $state;
|
return $state;
|
||||||
}//login
|
}//login
|
||||||
|
|
||||||
//storeLogin
|
/**
|
||||||
|
* 存储用户登陆信息
|
||||||
|
* 为了防止login中的用户信息检查不规范,再加入一层内置的数据库权限检查,以防通过漏洞登入系统
|
||||||
|
* @param $data
|
||||||
|
* @param bool $md5 是否对密码进行md5加密再校验
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
private function storeLogin($data,$md5 = true)
|
private function storeLogin($data,$md5 = true)
|
||||||
{
|
{
|
||||||
$auth = new AuthenticationService();
|
$auth = new AuthenticationService();
|
||||||
|
@ -185,23 +208,19 @@ class Account extends AbstractEventManager implements ServiceManagerAwareInterfa
|
||||||
|
|
||||||
$result = $authAdapter->authenticate();
|
$result = $authAdapter->authenticate();
|
||||||
|
|
||||||
$user = $authAdapter->getResultRowObject(null,array('password'));
|
|
||||||
|
|
||||||
if(!$result->isValid())
|
if(!$result->isValid())
|
||||||
{
|
{
|
||||||
return array("error"=>"用户信息验证失败");
|
return array("error"=>"用户信息验证失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
$email = $user->email;
|
$user = $authAdapter->getResultRowObject(null,array('password'));
|
||||||
$results = $this->getEventManager()->trigger('login.success.createAvatar', $this, compact('email'));
|
|
||||||
$user->avatar = $results->last();
|
|
||||||
$auth->getStorage()->write($user);
|
$auth->getStorage()->write($user);
|
||||||
|
|
||||||
$id = $user->id;
|
return array(
|
||||||
$results = $this->getEventManager()->trigger('login.success.updateStatus', $this, compact('id'));
|
'success'=>1,
|
||||||
|
'user' => $user
|
||||||
return array('success'=>1);
|
);
|
||||||
}
|
}//storeLogin
|
||||||
|
|
||||||
public function cookieLogin($data)
|
public function cookieLogin($data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Created by PhpStorm.
|
|
||||||
* User: Administrator
|
|
||||||
* Date: 2014/11/4
|
|
||||||
* Time: 11:23
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Westdc\Service\ServiceAgent;
|
|
||||||
|
|
||||||
use Westdc\Member\Account as Westdc_Account;
|
|
||||||
|
|
||||||
class Account extends Westdc_Account{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue