Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\AppController;
  4. use App\Form\LoginForm;
  5. use \Cake\Network\Exception;
  6. use Cake\Event\Event;
  7. use Cake\Utility\Text;
  8. use Google_Client;
  9. use Google_Service_Oauth2;
  10.  
  11. define('GOOGLE_OAUTH_CLIENT_ID', '276363024359-1s76kg1hb1127p35rn79dl2pi5gjlul3.apps.googleusercontent.com');
  12. define('GOOGLE_OAUTH_CLIENT_SECRET', 'KJQFbd0eZWjUdAzMHL8cR6Yv');
  13. define('GOOGLE_OAUTH_REDIRECT_URI', 'http://localhost:80/arenas/login');
  14.  
  15.  
  16. /**
  17. * Personal Controller
  18. * User personal interface
  19. *
  20. */
  21. class ArenasController extends AppController{
  22.  
  23. public function login()
  24. {
  25.  
  26.  
  27. $this->loadModel('Players');
  28.  
  29. if ($this->request->is('post'))
  30. {
  31. $user = $this->Auth->identify();
  32. if ($user)
  33. {
  34. $this->Auth->setUser($user);
  35. return $this->redirect($this->Auth->redirectUrl('/arenas/fighter'));
  36. }
  37. $this->Flash->error('Votre username ou mot de passe est incorrect.');
  38.  
  39. }
  40.  
  41. //$this->Auth->allow(['logout','add']);
  42.  
  43.  
  44.  
  45. /* if ($this->request->is('post'))
  46. {
  47. if(isset($this->request->data['email']) && isset($this->request->data['password']))
  48. {
  49. $email = $this->request->data['email'];
  50. $password=$this->request->data['password'];
  51.  
  52. $this->Players->addPlayer($email,$password);
  53. }
  54.  
  55. }*/
  56. }
  57.  
  58.  
  59.  
  60.  
  61. /****************google co*********************/
  62.  
  63.  
  64. /*public function googlelogin()
  65. {
  66. $client = new Google_Client();
  67. $client->setClientId(GOOGLE_OAUTH_CLIENT_ID);
  68. $client->setClientSecret(GOOGLE_OAUTH_CLIENT_SECRET);
  69. $client->setRedirectUri(GOOGLE_OAUTH_REDIRECT_URI);
  70.  
  71. $client->setScopes(array(
  72. "https://www.googleapis.com/auth/userinfo.profile",
  73. 'https://www.googleapis.com/auth/userinfo.email'
  74. ));
  75. $url = $client->createAuthUrl();
  76. $this->redirect('/arenas/fighter');
  77. }
  78.  
  79. public function google_login()
  80. {
  81. $client = new Google_Client();
  82. /* Création de notre client Google
  83. $client->setClientId(GOOGLE_OAUTH_CLIENT_ID);
  84. $client->setClientSecret(GOOGLE_OAUTH_CLIENT_SECRET);
  85. $client->setRedirectUri(GOOGLE_OAUTH_REDIRECT_URI);
  86.  
  87. $client->setScopes(array(
  88. "https://www.googleapis.com/auth/userinfo.profile",
  89. 'https://www.googleapis.com/auth/userinfo.email'
  90. ));
  91. $client->setApprovalPrompt('auto');
  92.  
  93. /* si dans l'url le paramètre de retour Google contient 'code'
  94. if (isset($this->request->query['code'])) {
  95. // Alors nous authentifions le client Google avec le code reçu
  96. $client->authenticate($this->request->query['code']);
  97. // et nous plaçons le jeton généré en session
  98. $this->request->Session()->write('access_token', $client->getAccessToken());
  99. }
  100.  
  101. /* si un jeton est en session, alors nous le plaçons dans notre client Google
  102. if ($this->request->Session()->check('access_token') && ($this->request->Session()->read('access_token'))) {
  103. $client->setAccessToken($this->request->Session()->read('access_token'));
  104. }
  105. /* Si le client Google a bien un jeton d'accès valide
  106. if ($client->getAccessToken()) {
  107. // alors nous écrivons le jeton d'accès valide en session
  108. $this->request->Session()->write('access_token', $client->getAccessToken());
  109. // nous créons une requête OAuth2 avec le client Google paramétré
  110. $oauth2 = new Google_Service_Oauth2($client);
  111. // et nous récupérons les informations de l'utilisateur connecté
  112. $user = $oauth2->userinfo->get();
  113. try {
  114. if (!empty($user)) {
  115. // si l'utilisateur est bien déclaré, nous vérifions si dans notre table Users il existe l'email de l'utilisateur déclaré ou pas
  116. $result = $this->Users->find('all')
  117. ->where(['email' => $user['email']])
  118. ->first();
  119. if ($result) {
  120. // si l'email existe alors nous déclarons l'utilisateur comme authentifié sur CakePHP
  121. $this->Auth->setUser($result->toArray());
  122. // et nous redirigeons vers la page de succès de connexion
  123. $this->redirect($this->Auth->redirectUrl('/arenas/fighter'));
  124. } else {
  125. // si l'utilisateur n'est pas dans notre utilisateur, alors nous le créons avec les informations récupérées par Google+
  126. $data = array();
  127. $data['email'] = $user['email'];
  128. //$data['first_name'] = $user['givenName'];
  129. //$data['last_name'] = $user['familyName'];
  130. $data['social_id'] = $user['id'];
  131. //$data['avatar'] = $user['picture'];
  132. //$data['link'] = $user['link'];
  133. //$data['uuid'] = Text::uuid();
  134. $entity = $this->Players->newEntity($data);
  135. if ($this->Players->save($entity)) {
  136. // et ensuite nous déclarons l'utilisateur comme authentifié sur CakePHP
  137. $data['id'] = $entity->id;
  138. $this->Auth->setUser($data);
  139. $this->redirect($this->Auth->redirectUrl('/arenas/fighter'));
  140. } else {
  141. $this->Flash->set('Erreur de connection');
  142. // et nous redirigeons vers la page de succès de connexion
  143. $this->redirect(['action' => 'login']);
  144. }
  145. }
  146. } else {
  147. // si l'utilisateur n'est pas valide alors nous affichons une erreur
  148. $this->Flash->set('Erreur les informations Google n\'ont pas été trouvée');
  149. $this->redirect(['action' => 'login']);
  150. }
  151. } catch (\Exception $e) {
  152. $this->Flash->set('Grosse erreur Google, ca craint');
  153. return $this->redirect(['action' => 'login']);
  154. }
  155. }
  156. }
  157.  
  158. public function logout()
  159. {
  160. $this->Flash->success('Vous êtes maintenant déconnecté.');
  161. return $this->redirect($this->Auth->logout());
  162. }*/
  163.  
  164. /* public function logout()
  165. {
  166. $this->request->session()
  167. ->destroy('access_token');
  168. $this->Flash->success('Vous êtes bien déconnecté');
  169. return $this->redirect($this->Auth->logout());
  170. }*/
  171.  
  172. public function fighter(){
  173.  
  174. }
  175.  
  176. public function sight(){
  177.  
  178. }
  179.  
  180. public function diary(){
  181.  
  182. }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement