PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/controllers/UsersController.php

http://github.com/masom/Chowly
PHP | 173 lines | 141 code | 26 blank | 6 comment | 18 complexity | c25cb6d818e603c0c078330d8983899f MD5 | raw file
Possible License(s): LGPL-3.0, GPL-3.0
  1. <?php
  2. /**
  3. * Chowly Pick. Eat. Save!
  4. *
  5. * @copyright Copyright 2011, Martin Samson <pyrolian@gmail.com>
  6. * @license http://opensource.org/licenses/bsd-license.php The BSD License
  7. */
  8. namespace chowly\controllers;
  9. use chowly\models\Users;
  10. use li3_flash_message\extensions\storage\FlashMessage;
  11. use lithium\security\Auth;
  12. use lithium\storage\Session;
  13. use lithium\analysis\Logger;
  14. class UsersController extends \chowly\extensions\action\Controller{
  15. public function dashboard(){
  16. if(!Auth::check('user')){
  17. FlashMessage::set('Only logged-in users can access this page.');
  18. return $this->redirect('Users::login');
  19. }
  20. $user = Users::find(Session::read('user._id'));
  21. return compact('user');
  22. }
  23. public function admin_index(){
  24. $limit = 20;
  25. $page = $this->request->page ?: 1;
  26. $order = array('name' => 'ASC');
  27. $total = Users::count();
  28. $users = Users::all(compact('order','limit','page'));
  29. return compact('users', 'total', 'page', 'limit');
  30. }
  31. public function admin_add(){
  32. $user = Users::create();
  33. if (!empty($this->request->data)){
  34. try{
  35. $saved = $user->save($this->request->data);
  36. }catch(\Exception $e){
  37. FlashMessage::set($e->getMessage());
  38. return compact('user');
  39. }
  40. if ($saved){
  41. return $this->redirect(array("Users::index", 'admin'=>true));
  42. }
  43. }
  44. return compact('user');
  45. }
  46. public function admin_edit(){
  47. $conditions = array(
  48. '_id' => $this->request->id
  49. );
  50. $user = Users::first(compact('conditions'));
  51. if (!$user){
  52. FlashMessage::set('User not found.');
  53. return $this->redirect($this->request->referer());
  54. }
  55. if (!empty($this->request->data)){
  56. try{
  57. $saved = $user->save($this->request->data);
  58. }catch(\Exception $e){
  59. FlashMessage::set("The user could not be modified.");
  60. return compact('user');
  61. }
  62. if ($saved){
  63. FlashMessage::set("User modified.");
  64. return $this->redirect(array("Users::index", 'admin'=>true));
  65. }else{
  66. FlashMessage::set("The user could not be modified.");
  67. }
  68. }
  69. return compact('user');
  70. }
  71. public function admin_enable(){
  72. $data = array('success'=>false,'active'=>false, 'id'=>$this->request->id);
  73. if (empty($this->request->id)){
  74. return $this->render(array('json'=>$data));
  75. }
  76. $conditions = array('_id'=>$this->request->id);
  77. $user = Users::first(compact('conditions'));
  78. if (!$user){
  79. return $this->render(array('json' => $data));
  80. }
  81. if ($user->setActive(true)){
  82. $data['active'] = true;
  83. $data['success'] = true;
  84. }
  85. return $this->render(array('json' => $data));
  86. }
  87. public function admin_disable(){
  88. $data = array('success'=>false,'active'=>false, 'id'=>$this->request->id);
  89. if (empty($this->request->id)){
  90. return $this->render(array('json'=>$data));
  91. }
  92. $conditions = array('_id'=>$this->request->id);
  93. $user = Users::first(compact('conditions'));
  94. if (!$user){
  95. return $this->render(array('json' => $data));
  96. }
  97. if ($user->setActive(false)){
  98. $data['active'] = false;
  99. $data['success'] = true;
  100. }
  101. return $this->render(array('json' => $data));
  102. }
  103. public function reset_password(){}
  104. public function edit(){
  105. $conditions = array('_id' => Session::read('user._id'));
  106. $user = Users::first(compact('conditions'));
  107. if (!empty($this->request->data)){
  108. $user->set($this->request->data);
  109. if ($user->save($this->request->data,array('whitelist'=>array('name')))){
  110. FlashMessage::set("Profile updated.");
  111. return $this->redirect('/');
  112. }
  113. }
  114. return compact('user');
  115. }
  116. public function login(){
  117. if (!empty($this->request->data)){
  118. if (Auth::check('user', $this->request)){
  119. return $this->redirect('Users::dashboard');
  120. }else{
  121. FlashMessage::set("Wrong email or password.");
  122. }
  123. }
  124. }
  125. public function logout(){
  126. Auth::clear('user');
  127. FlashMessage::set("Your session has been terminated.");
  128. return $this->redirect('/');
  129. }
  130. public function add(){
  131. $user = Users::create();
  132. if (!empty($this->request->data)){
  133. try{
  134. $saved = $user->save($this->request->data);
  135. }catch(\Exception $e){
  136. FlashMessage::set($e->getMessage());
  137. return compact('user');
  138. }
  139. if ($saved){
  140. Auth::check('user', $this->request);
  141. return $this->redirect('/');
  142. }
  143. }
  144. return compact('user');
  145. }
  146. }
  147. ?>