From c71286f2099931ac6102516513c31b5ca96c00d9 Mon Sep 17 00:00:00 2001 From: Cameron Ball Date: Wed, 22 Oct 2014 15:49:10 +0800 Subject: [PATCH] Bug fixes and UserController --- Controllers/UserAuthController.php | 11 --------- Controllers/UserController.php | 48 ++++++++++++++++++++++++++++++++++++++ DataAccess/UserRepository.php | 13 +++++++---- Domain/Entities/IUser.php | 2 -- Domain/Entities/User.php | 16 +------------ config/DataMaps.php | 3 +-- config/Routes.php | 6 +++++ public_html/index.php | 2 +- 8 files changed, 65 insertions(+), 36 deletions(-) create mode 100644 Controllers/UserController.php diff --git a/Controllers/UserAuthController.php b/Controllers/UserAuthController.php index f261547..1b66204 100644 --- a/Controllers/UserAuthController.php +++ b/Controllers/UserAuthController.php @@ -53,8 +53,6 @@ class UserAuthController implements IDivineController // If the user is not in the DB, create them. $user = $this->_userRepository->findByFacebookId($id) ?: $this->registerUser(); - // Update stored auth token if needed. - $this->updateAuthToken($user); $this->_response->setHeader('Content-Type', 'application/json') ->setBody(json_encode(array('token' => $this->_facebookSession->getToken(), 'expires' => $this->getSessionExpiryTimestamp($this->_facebookSession), 'displayName' => $user->getDisplayName()))) @@ -104,15 +102,6 @@ class UserAuthController implements IDivineController return $newUser; } - private function updateAuthToken(IUser $user) - { - if($user->getAuthToken() != $this->_facebookSession->getToken()) - { - $user->setAuthToken($this->_facebookSession->getToken()); - $this->_userRepository->save($user); - } - } - private function isSessionLongLived(FacebookSession $session) { return $this->getSessionExpiryTimestamp($session) - time() >= 60; diff --git a/Controllers/UserController.php b/Controllers/UserController.php new file mode 100644 index 0000000..822dd13 --- /dev/null +++ b/Controllers/UserController.php @@ -0,0 +1,48 @@ +_request = $request; + $this->_response = $response; + $this->_userRepository = $userRepository; + } + + public function indexAction() { + ; + } + + // list simfiles + public function getUserAction($facebookId) + { + /* @var $user Domain\Entities\IUser */ + $user = $this->_userRepository->findByFacebookId($facebookId); + + $returnArray = array( + 'id' => $user->getId(), + 'name' => $user->getName()->getFullName(), + 'displayName' => $user->getDisplayName(), + 'tags' => $user->getTags(), + 'country' => $user->getCountry()->getCountryName() + ); + + $this->_response->setHeader('Content-Type', 'application/json') + ->setBody(json_encode($returnArray)) + ->sendResponse(); + } +} diff --git a/DataAccess/UserRepository.php b/DataAccess/UserRepository.php index 70fe069..b98ddd2 100644 --- a/DataAccess/UserRepository.php +++ b/DataAccess/UserRepository.php @@ -6,16 +6,19 @@ use DataAccess\IUserRepository; use DataAccess\DataMapper\IDataMapper; use Domain\Entities\IUser; use DataAccess\Queries\IQueryBuilderFactory; +use Services\IFacebookSessionFactory; //TODO: Implement some sort of caching. Probably OK for now not to worry. class UserRepository implements IUserRepository { private $_dataMapper; private $_queryBuilderFactory; + private $_facebookSessionFactory; - public function __construct(IDataMapper $dataMapper, IQueryBuilderFactory $queryBuilderFactory) { + public function __construct(IDataMapper $dataMapper, IQueryBuilderFactory $queryBuilderFactory, IFacebookSessionFactory $faceBookSessionFactory) { $this->_dataMapper = $dataMapper; $this->_queryBuilderFactory = $queryBuilderFactory; + $this->_facebookSessionFactory = $faceBookSessionFactory; } public function findById($id) { @@ -49,10 +52,10 @@ class UserRepository implements IUserRepository } public function findByAuthToken($token) { - return $this->_dataMapper->map( - 'User', - 'SELECT * FROM %s WHERE auth_token=' . $token - ); + $facebookSession = $this->_facebookSessionFactory->createInstance($token); + $id = $facebookSession->getGraphObject(GraphUser::className())->getId(); + + return $this->findByFacebookId($id); } public function save(IUser $entity) { diff --git a/Domain/Entities/IUser.php b/Domain/Entities/IUser.php index 143afc8..aefd961 100644 --- a/Domain/Entities/IUser.php +++ b/Domain/Entities/IUser.php @@ -13,6 +13,4 @@ interface IUser public function getYearsStepArtist(); public function getFacebookId(); public function setFacebookId($id); - public function getAuthToken(); - public function setAuthToken($token); } diff --git a/Domain/Entities/User.php b/Domain/Entities/User.php index 3b65ef1..dfa67e9 100644 --- a/Domain/Entities/User.php +++ b/Domain/Entities/User.php @@ -9,29 +9,25 @@ use Domain\VOs\IName; class User extends AbstractEntity implements IUser { - private $_id; private $_country; private $_displayName; private $_name; private $_tags; private $_yearsStepArtist; private $_facebookId; - private $_authToken; public function __construct( ICountry $country, $displayName, IName $name, array $tags, - $facebookId, - $authToken = null + $facebookId ) { $this->_country = $country; $this->_displayName = $displayName; $this->_name = $name; $this->_tags = $tags; $this->_facebookId = $facebookId; - $this->_authToken = $authToken; } public function getCountry() { @@ -60,16 +56,6 @@ class User extends AbstractEntity implements IUser $this->_facebookId = $id; } - public function getAuthToken() - { - return $this->_authToken; - } - - public function setAuthToken($token) - { - $this->_authToken = $token; - } - public function getYearsStepArtist() { return $this->_yearsStepArtist; } diff --git a/config/DataMaps.php b/config/DataMaps.php index dbe5157..559e7ef 100644 --- a/config/DataMaps.php +++ b/config/DataMaps.php @@ -41,8 +41,7 @@ return [ 'displayName' => DataAccess\Varchar('display_name'), 'name' => DataAccess\VO('Name'), 'tags' => DataAccess\VOArray('Tag', 'getTags'), // TODO: Make VarcharArray class - 'facebookId' => DataAccess\Varchar('facebook_id'), - 'authToken' => DataAccess\Varchar('auth_token') + 'facebookId' => DataAccess\Varchar('facebook_id') ] ], diff --git a/config/Routes.php b/config/Routes.php index e3188f6..73c3cae 100644 --- a/config/Routes.php +++ b/config/Routes.php @@ -22,5 +22,11 @@ return [ '/user/auth' => [ 'method' => ['GET'], 'controller' => 'UserAuth' + ], + + '/user/:facebookId' => [ + 'method' => ['GET'], + 'controller' => 'User', + 'action' => 'getUser' ] ]; diff --git a/public_html/index.php b/public_html/index.php index 8ed4f0b..692cfd4 100644 --- a/public_html/index.php +++ b/public_html/index.php @@ -23,5 +23,5 @@ $controllerActionArgs = $router->getActionArgs(); $controller = $container->get('Controllers\\' . ucfirst($controllerName) . 'Controller' ); // Last thing to do, call the action on the specified controller. -call_user_func(array($controller, $controllerAction . 'Action'), $controllerActionArgs); +call_user_func_array(array($controller, $controllerAction . 'Action'), $controllerActionArgs); -- 2.11.0