PageRenderTime 32ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/semac/app/classes/controller/admin.php

https://github.com/gustavosf/semac
PHP | 202 lines | 144 code | 24 blank | 34 comment | 15 complexity | dc96bf6add142ce844f60b19d5b96265 MD5 | raw file
  1. <?php
  2. /**
  3. * Admin Controller.
  4. *
  5. * Ferramentas administrativas do sistema
  6. *
  7. * @package app
  8. * @extends Controller_Template
  9. */
  10. class Controller_Admin extends Controller_Semac {
  11. public $template = 'template_admin';
  12. public function before()
  13. {
  14. if (in_array($this->request->action, array('login', 'logout', 'esqueci_minha_senha')))
  15. {
  16. // template do login/logout não deve conter menus (o padrão do admin)
  17. $this->template = 'template';
  18. }
  19. parent::before();
  20. $this->template->menu = View::forge('admin/menu', array(
  21. 'action' => $this->request->action
  22. ));
  23. }
  24. /**
  25. * The index action.
  26. *
  27. * @access public
  28. * @return void
  29. */
  30. public function action_index()
  31. {
  32. $data = array();
  33. $this->template->content = View::forge('admin/index', $data);
  34. }
  35. /**
  36. * Tela de identificação do usuário
  37. *
  38. * @access public
  39. * @return void
  40. */
  41. public function action_login()
  42. {
  43. $data = array();
  44. if ($_POST)
  45. {
  46. $auth = Auth::instance();
  47. if ($auth->login(Input::post('username'), Input::post('password')))
  48. {
  49. $goto = Cookie::get('redirect', '/');
  50. if (strpos($goto, '/logout') !== false OR strpos($goto, '/login') !== false)
  51. {
  52. $goto = '/';
  53. }
  54. Cookie::delete('redirect');
  55. Response::redirect($goto);
  56. }
  57. else
  58. {
  59. $data['username'] = Input::post('username');
  60. $data['error'] = 'Email/Senha incorreto! Favor confira suas credenciais e tente novamente';
  61. }
  62. }
  63. else
  64. {
  65. if ( ! Cookie::get('redirect'))
  66. Cookie::set('redirect', Input::server('HTTP_REFERER', '/'));
  67. }
  68. $this->template->title = 'Identificação';
  69. $this->template->content = View::forge('admin/login', $data);
  70. }
  71. /**
  72. * Recuperação de Senha
  73. *
  74. * @access public
  75. * @return void
  76. */
  77. public function action_esqueci_minha_senha()
  78. {
  79. $data = array();
  80. if ($_POST)
  81. {
  82. $user = Model_User::find()
  83. ->where('username', Input::post('email'))
  84. ->get_one();
  85. if ( ! $user)
  86. {
  87. if ( ! Validation::is_valid_email(Input::post('email')))
  88. {
  89. Session::set_flash('error', 'Endereço de e-mail inválido');
  90. }
  91. else
  92. {
  93. Session::set_flash('error', 'O e-mail "<i>'.Input::post('email').'"</i> não está cadastrado no sistema');
  94. $data['email'] = Input::post('email');
  95. }
  96. }
  97. else
  98. {
  99. $pass = substr(str_shuffle('abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789'),0,6);
  100. $pass = $user->resetar_senha(); // já efetua o salvamento do registro
  101. $mail = new \Util_Mailer(array(
  102. 'view' => 'admin/usuarios/esqueci_minha_senha',
  103. 'subject' => 'SEMAC/UFRGS - Recuperação de senha',
  104. 'to' => Input::post('email'),
  105. ), array(
  106. 'nome' => $user->profile_fields->nome,
  107. 'email' => $user->email,
  108. 'senha' => $pass,
  109. ));
  110. $mail->send();
  111. Session::set_flash('success', 'Suas novas credenciais para acesso foram enviadas para o e-mail <b>'.Input::post('email').'</b>');
  112. Response::redirect('login');
  113. }
  114. }
  115. $this->template->title = 'Recuperação de Senha';
  116. $this->template->content = View::forge('admin/esqueci_minha_senha', $data);
  117. }
  118. /**
  119. * Logout do usuário
  120. *
  121. * @access public
  122. * @return void
  123. */
  124. public function action_logout()
  125. {
  126. if ( ! Auth::check()) Response::redirect('login');
  127. Auth::instance()->logout();
  128. $this->template->title = 'Sair';
  129. $this->template->content = View::forge('admin/logout');
  130. }
  131. public function action_configuracoes()
  132. {
  133. $user = Model_User::get_from_auth();
  134. if ($_POST)
  135. {
  136. if (!is_object($user->profile_fields))
  137. {
  138. $user->profile_fields = new stdClass;
  139. }
  140. $user->profile_fields->nome = Input::post('nome');
  141. $user->profile_fields->cartao = Input::post('matricula');
  142. if (Input::post('nova_senha'))
  143. {
  144. if (Input::post('nova_senha') === Input::post('confirmacao_nova_senha'))
  145. {
  146. if ( ! $user->change_password(Input::post('senha_atual'), Input::post('nova_senha')))
  147. {
  148. Session::set_flash('error', 'Senha antiga não confere');
  149. }
  150. }
  151. else
  152. {
  153. Session::set_flash('error', 'As novas senhas digitadas não conferem');
  154. }
  155. }
  156. if ( ! Session::get_flash('error', false))
  157. {
  158. $user->save();
  159. Session::set_flash('success', 'Seus dados foram salvos.');
  160. }
  161. }
  162. $this->template->title = 'Configurações';
  163. $this->template->content = View::forge('admin/configuracoes', array(
  164. 'nome' => @$user->profile_fields->nome,
  165. 'matricula' => @$user->profile_fields->cartao,
  166. ));
  167. }
  168. public function action_minhas_atividades()
  169. {
  170. $user = Model_User::get_from_auth();
  171. $this->template->title = 'Minhas Atividades';
  172. $this->template->content = View::forge('atividades/minhas', array(
  173. 'inscricoes' => $user->inscricoes,
  174. 'user_id' => $user->id,
  175. ));
  176. }
  177. }
  178. /* End of file admin.php */