Guest User

Untitled

a guest
Dec 5th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.51 KB | None | 0 0
  1. <?php
  2. class Auth extends Controller
  3. {
  4. // Used for registering and changing password form validation
  5. var $min_username = 2;
  6. var $max_username = 20;
  7. var $min_password = 6;
  8. var $max_password = 20;
  9.  
  10. function Auth()
  11. {
  12. parent::Controller();
  13.  
  14. $this->load->library('Openid');
  15. $this->load->library('Form_validation');
  16.  
  17. $this->load->helper('url');
  18. $this->load->helper('form');
  19. $this->load->helper('simian_openid_helper');
  20. $this->load->helper('simian_facebook_helper');
  21. $this->load->helper('simian_form_helper');
  22.  
  23. $this->lang->load('simian_grid', get_language() );
  24. $this->lang->load('openid', get_language() );
  25. $this->lang->load('form_validation', get_language() );
  26. }
  27.  
  28. function username_check($value)
  29. {
  30. return sg_username_check($this, $value);
  31. }
  32.  
  33. function username_exists_check($value)
  34. {
  35. return sg_username_exists_check($this, $value);
  36. }
  37.  
  38. function email_check($value)
  39. {
  40. return sg_email_check($this, $value);
  41. }
  42.  
  43. function email_exists($value)
  44. {
  45. return sg_email_exists($this, $value);
  46. }
  47.  
  48. function index()
  49. {
  50. $this->login();
  51. }
  52.  
  53. /* Callback function */
  54.  
  55. function login_facebook()
  56. {
  57. if ( ! $this->sg_auth->is_logged_in()) {
  58. if ( ! empty($_SERVER['QUERY_STRING']) ) {
  59. parse_str($_SERVER['QUERY_STRING'],$_GET);
  60. if ( ! empty($_GET['code']) ) {
  61. $token = process_facebook_verification($_GET['code'], site_url("auth/login_facebook") );
  62. $fb_id = facebook_get_id($this, $token);
  63. if ( $this->sg_auth->login_facebook($fb_id) ) {
  64. return redirect('', 'location');
  65. } else {
  66. log_message('debug', "unable to authenticate fb user $fb_id" );
  67. push_message(lang('sg_auth_facebook_error_login'), 'error');
  68. }
  69. }
  70. }
  71. }
  72. return redirect('auth/login');
  73. }
  74.  
  75. function login_openid()
  76. {
  77. $data = array();
  78.  
  79. if ( ! $this->sg_auth->is_logged_in()) {
  80. if ($this->input->post('action') == 'verify') {
  81. return openid_process_verify($this, site_url('auth/login_openid'));
  82. } elseif ( openid_check($this, site_url('auth/login_openid'), $data)) {
  83. $openid = $data['openid_identifier'];
  84. if ($this->sg_auth->login_openid($openid)) {
  85. // Redirect to homepage
  86. return redirect('', 'location');
  87. } else {
  88. log_message('debug', "unable to authenticate openid user" );
  89. push_message(lang('sg_auth_openid_error_login'), 'error');
  90. }
  91. }
  92. } else {
  93. push_message(lang('sg_auth_error_already'), 'error');
  94. return redirect('about', 'location');
  95. }
  96. return redirect('auth/login');
  97. }
  98.  
  99. function login()
  100. {
  101. if ( ! $this->sg_auth->is_logged_in() ) {
  102. $val = $this->form_validation;
  103.  
  104. // Set form validation rules
  105. $val->set_rules('username', 'User Name', 'trim|required|xss_clean|callback_username_check');
  106. $val->set_rules('password', 'Password', 'trim|required|xss_clean');
  107. $val->set_rules('remember', 'Remember me', 'integer');
  108.  
  109. if ($val->run() AND $this->sg_auth->login($val->set_value('username'), $val->set_value('password'), $val->set_value('remember')) ) {
  110. // Redirect to homepage
  111. return redirect('about', 'location');
  112. } else {
  113. $data = array();
  114. $data['page'] = 'login';
  115. return parse_template('auth/login', $data);
  116. }
  117. } else {
  118. push_message(lang('sg_auth_error_already'), 'error');
  119. return redirect('about', 'location');
  120. }
  121. }
  122.  
  123. function logout()
  124. {
  125. $this->sg_auth->logout();
  126. push_message(lang('sg_auth_logged_out'), 'info');
  127. return redirect('about', 'location');
  128. }
  129.  
  130. function _register($val)
  131. {
  132. // Set form validation rules
  133. $val->set_rules('username', 'User Name', 'trim|required|xss_clean|min_length['.$this->min_username.']|max_length['.$this->max_username.']|callback_username_check|callback_username_exists_check');
  134. $val->set_rules('password', 'Password', 'trim|required|xss_clean|min_length['.$this->min_password.']|max_length['.$this->max_password.']|matches[confirm_password]');
  135. $val->set_rules('confirm_password', 'Confirm Password', 'trim|required|xss_clean');
  136. $val->set_rules('email', 'Email', 'trim|required|xss_clean|valid_email|callback_email_check');
  137. $val->set_rules('avatar_type', 'Avatar Type', 'trim|xss_clean');
  138.  
  139. // Run form validation and register user if validation succeeds
  140. if ($val->run() ) {
  141. $user_id = $this->sg_auth->register($val->set_value('username'), $val->set_value('password'), $val->set_value('email'), $val->set_value('avatar_type', 'DefaultAvatar'));
  142. if ( $user_id != null ) {
  143. if ($this->sg_auth->email_activation) {
  144. if ( ! $this->sg_auth->reset_validation($user_id) ) {
  145. log_message('warning', "SG_Auth Unable to send validation email for $user_id");
  146. }
  147. $message = lang('sg_auth_register_success_validation');
  148. } else {
  149. $message = set_message('sg_auth_register_success', anchor(site_url("/auth/login"), 'Login'));
  150. }
  151. push_message($message, 'info');
  152. log_message('debug', "SG_Auth Succesfully created user $user_id");
  153. return $user_id;
  154. }
  155. } else {
  156. return FALSE;
  157. }
  158. return null;
  159. }
  160.  
  161. function register()
  162. {
  163. if ( ! $this->sg_auth->is_logged_in() && $this->sg_auth->allow_registration ) {
  164. $val = $this->form_validation;
  165. $user_id = $this->_register($val);
  166. if ( $user_id === null ) {
  167. push_message(lang('sg_auth_register_failure'), 'error');
  168. return redirect('auth/register');
  169. } else if ( $user_id === FALSE ) {
  170. $data = array();
  171. $data['page'] = 'join';
  172. return parse_template('auth/register', $data);
  173. }
  174. } elseif ( ! $this->sg_auth->allow_registration) {
  175. push_message(lang('sg_auth_registration_disabled'), 'error');
  176. } else {
  177. push_message(lang('sg_auth_error_logout_first'), 'error');
  178. }
  179. return redirect('about');
  180. }
  181.  
  182. function _get_facebook_token_flash()
  183. {
  184. $token = $this->session->flashdata('facebook_token');
  185. if ( $token != null ) {
  186. $this->session->keep_flashdata('facebook_token');
  187. }
  188. return $token;
  189. }
  190.  
  191. function _get_facebook_token()
  192. {
  193. $token = null;
  194. if ( ! empty($_SERVER['QUERY_STRING']) ) {
  195. parse_str($_SERVER['QUERY_STRING'], $_GET);
  196. if ( ! empty($_GET['code']) ) {
  197. $token = process_facebook_verification($_GET['code'], site_url("auth/register_facebook"));
  198. $this->session->set_flashdata('facebook_token', $token);
  199. } else {
  200. return $this->_get_facebook_token_flash();
  201. }
  202. } else {
  203. return $this->_get_facebook_token_flash();
  204. }
  205. return $token;
  206. }
  207.  
  208. function register_facebook()
  209. {
  210. if ( ! $this->sg_auth->is_logged_in() && $this->sg_auth->allow_registration ) {
  211. $token = $this->_get_facebook_token();
  212. if ( $token == null ) {
  213. return redirect('auth/register');
  214. }
  215. $token = $this->_get_facebook_token();
  216. if ( $token == null ) {
  217. push_message(lang('sg_auth_fb_error'), 'error');
  218. return redirect('auth/register');
  219. }
  220. $fb_id = facebook_get_id($this, $token);
  221. if ( $fb_id == null ) {
  222. push_message(lang('sg_auth_fb_error'), 'error');
  223. return redirect('auth/register');
  224. }
  225. if ( ! $this->sg_auth->facebook_exists($fb_id) && facebook_check($this, $token, $data) ) {
  226. $val = $this->form_validation;
  227.  
  228. $user_id = $this->_register($val);
  229.  
  230. if ( $user_id === null ) {
  231. push_message(lang('sg_auth_register_failure'), 'error');
  232. return redirect('auth/register');
  233. } else if ( $user_id !== FALSE ) {
  234. if ( $this->simiangrid->identity_set($user_id, 'facebook', $fb_id) ) {
  235. return redirect('about');
  236. } else {
  237. push_message(lang('sg_auth_fb_error_assoc'), 'error');
  238. $this->simiangrid->user_delete($user_id);
  239. }
  240. } else {
  241. // Load OpenID registrationpage
  242. $data['page'] = 'join';
  243. return parse_template('auth/register_facebook', $data);
  244. }
  245. }
  246. } elseif ( ! $this->sg_auth->allow_registration ) {
  247. push_message(lang('sg_auth_registration_disabled'), 'error');
  248. } else {
  249. push_message(lang('sg_auth_error_logout_first'), 'error');
  250. }
  251. return redirect('about');
  252. }
  253.  
  254. function register_openid()
  255. {
  256. if ( ! $this->sg_auth->is_logged_in() && $this->sg_auth->allow_registration ) {
  257. $data = array();
  258.  
  259. if ($this->input->post('action') == 'verify') {
  260. return openid_process_verify($this, site_url('auth/register_openid'));
  261. } else if ($this->session->flashdata('openid_identifier') OR openid_check($this, site_url('auth/register_openid'), $data)) {
  262. $openid = null;
  263. if ($this->session->flashdata('openid_identifier')) {
  264. $openid = $this->session->flashdata('openid_identifier');
  265. $data['openid_identifier'] = $openid;
  266. $this->session->keep_flashdata('openid_identifier');
  267. } else {
  268. $openid = $data['openid_identifier'];
  269. $this->session->set_flashdata('openid_identifier', $openid);
  270. }
  271.  
  272. if ( ! $this->sg_auth->openid_exists($openid) ) {
  273. // OpenID authentication succeeded
  274. $val = $this->form_validation;
  275.  
  276. $user_id = $this->_register($val);
  277.  
  278. if ( $user_id === null ) {
  279. push_message(lang('sg_auth_register_failure'), 'error');
  280. return redirect('auth/register');
  281. } else if ( $user_id !== FALSE ) {
  282. if ( $this->simiangrid->identity_set($user_id, 'openid', $openid) ) {
  283. return redirect('about');
  284. } else {
  285. push_message(lang('sg_auth_open_error_assoc'), 'error');
  286. $this->simiangrid->user_delete($user_id);
  287. }
  288. } else {
  289. // Load OpenID registration page
  290. $data['page'] = 'join';
  291. return parse_template('auth/register_openid', $data);
  292. }
  293. }
  294. } else {
  295. return redirect('auth/register');
  296. }
  297. } elseif ( ! $this->sg_auth->allow_registration ) {
  298. push_message(lang('sg_auth_registration_disabled'), 'error');
  299. } else {
  300. push_message(lang('sg_auth_error_logout_first'), 'error');
  301. }
  302. return redirect('about');
  303. }
  304.  
  305. function validate($code)
  306. {
  307. if ( ! $this->sg_auth->validate($code) ) {
  308. push_message(set_message('sg_auth_validation_fail'), 'error');
  309. } else {
  310. push_message(lang('sg_auth_validation_success'), 'info');
  311. }
  312. return redirect('about');
  313. }
  314.  
  315. function forgot_password()
  316. {
  317. if ( ! $this->sg_auth->is_logged_in() ) {
  318. $val = $this->form_validation;
  319. $val->set_rules('email', 'Email', 'trim|required|xss_clean|valid_email|callback_email_exists');
  320. if ( $val->run() ) {
  321. $email = $val->set_value('email');
  322. $user = $this->simiangrid->get_user_by_email($email);
  323. if ( $this->sg_auth->reset_password_start($user['UserID']) ) {
  324. push_message(set_message('sg_auth_password_reset_email', $email), 'info');
  325. }
  326. return redirect('about', 'location');
  327. }
  328. } else {
  329. return redirect('about', 'location');
  330. }
  331. return parse_template('auth/forgot_password');
  332. }
  333.  
  334. function reset_password($code=null)
  335. {
  336. if ( $this->sg_auth->is_logged_in() ) {
  337. push_message(lang('sg_auth_error_logout_first'), 'error');
  338. return redirect('about', 'location');
  339. }
  340. if ( $code == null ) {
  341. log_message('debug', 'no code detected so processing form');
  342. $val = $this->form_validation;
  343. $val->set_rules('password', 'Password', 'trim|required|xss_clean|min_length['.$this->min_password.']|max_length['.$this->max_password.']|matches[confirm_password]');
  344. $val->set_rules('confirm_password', 'Confirm Password', 'trim|required|xss_clean');
  345. $val->set_rules('code', '', 'trim|required|xss_clean');
  346.  
  347. if ( $val->run() ) {
  348. log_message('debug', 'validated reset_password form');
  349. if ( $this->sg_auth->password_reset($val->set_value('code'), $val->set_value('password')) ) {
  350. push_message(lang('sg_password_success'), 'info');
  351. } else {
  352. push_message(lang('sg_password_error'), 'error');
  353. }
  354. return redirect('about', 'location');
  355. } else {
  356. if ( $this->input->post('code') != null ) {
  357. $code = $this->input->post('code');
  358. log_message('debug', 'Unable to validate reset_password form');
  359. return redirect(site_url("auth/reset_password/$code"), 'location');
  360. } else {
  361. log_message('error', 'Missing code on reset_password');
  362. return redirect('about', 'location');
  363. }
  364. }
  365. } else {
  366. if ( $this->sg_auth->password_reset_verify($code) ) {
  367. log_message('debug', 'validated reset_password code so producing form');
  368. $data = array();
  369. $data['code'] = $code;
  370. return parse_template('auth/reset_password', $data);
  371. } else {
  372. log_message('debug', 'unable to validate reset_password code');
  373. return redirect('about', 'location');
  374. }
  375. }
  376. }
  377. }
Add Comment
Please, Sign In to add comment