register.path.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. Bugs::actions(
  3. 'user.register',
  4. 'user.activate'
  5. );
  6. Router::paths(array(
  7. '/register'=>function($res,$args){
  8. $res->write(
  9. Bugs::template('register')
  10. );
  11. },
  12. '/register/error'=>function($res,$args){
  13. $res->write(
  14. Bugs::template('register')
  15. ->run(array(
  16. 'error'=>'Invalid input.'
  17. ))
  18. );
  19. },
  20. '/register/error/{error}'=>function($res,$args){
  21. $res->write(
  22. Bugs::template('register')
  23. ->run(array(
  24. 'error'=>$args->error
  25. ))
  26. );
  27. },
  28. '/register/complete'=>function($res,$args){
  29. if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['password'])){
  30. Router::redirect(
  31. Router::url(Router::$base.'/register/error')
  32. );
  33. }else{
  34. if(!Bugs::user_id($_POST['name'])){
  35. $user = Bugs::user($_POST['name'],$_POST['email'],$_POST['password']);
  36. $res->write(
  37. Bugs::template('registered')
  38. ->run($user)
  39. );
  40. $user->email('Registered',"
  41. <a href=\"http://".Bugs::setting('url.host').Bugs::setting('url.base')."/register/activate/{$user->name}/{$user->activation_code}\">Activate Account</a>
  42. ");
  43. Bugs::activity('user.register',$user);
  44. }else{
  45. Router::redirect(
  46. Router::url(Router::$base."/register/error/User {$_POST['name']} already exists.")
  47. );
  48. }
  49. }
  50. },
  51. '/register/activate/{user}/{code}'=>function($res,$args){
  52. $user = Bugs::user($args->user);
  53. if($args->code == $user->activation_code){
  54. if(!$user->active){
  55. $user->active = true;
  56. $res->write(
  57. Bugs::template('activated')
  58. ->run($user)
  59. );
  60. Bugs::activity('user.activate',$user);
  61. }else{
  62. trigger_error("User is already active");
  63. }
  64. }else{
  65. trigger_error("Invalid activation code for user {$args->user}");
  66. }
  67. }
  68. ));
  69. ?>