RegisterController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Models\Invite;
  4. use App\Http\Models\User;
  5. use Illuminate\Http\Request;
  6. use Response;
  7. use Redirect;
  8. /**
  9. * 注册控制器
  10. * Class LoginController
  11. * @package App\Http\Controllers
  12. */
  13. class RegisterController extends BaseController
  14. {
  15. protected static $config;
  16. function __construct()
  17. {
  18. self::$config = $this->systemConfig();
  19. }
  20. // 注册页
  21. public function index(Request $request)
  22. {
  23. if ($request->method() == 'POST') {
  24. $username = trim($request->get('username'));
  25. $password = trim($request->get('password'));
  26. $repassword = trim($request->get('repassword'));
  27. $code = trim($request->get('code'));
  28. if (empty($username)) {
  29. $request->session()->flash('errorMsg', '请输入用户名');
  30. return Redirect::back()->withInput();
  31. } else if (empty($password)) {
  32. $request->session()->flash('errorMsg', '请输入密码');
  33. return Redirect::back()->withInput();
  34. } else if (empty($repassword)) {
  35. $request->session()->flash('errorMsg', '请重新输入密码');
  36. return Redirect::back()->withInput();
  37. } else if (md5($password) != md5($repassword)) {
  38. $request->session()->flash('errorMsg', '两次输入密码不一致,请重新输入');
  39. return Redirect::back()->withInput($request->except(['password', 'repassword']));
  40. } else if (false === filter_var($username, FILTER_VALIDATE_EMAIL)) {
  41. $request->session()->flash('errorMsg', '用户名必须是合法邮箱,请重新输入');
  42. return Redirect::back()->withInput();
  43. }
  44. // 是否开启注册
  45. if (!self::$config['is_register']) {
  46. $request->session()->flash('errorMsg', '系统维护暂停注册,如需账号请联系管理员');
  47. return Redirect::back();
  48. }
  49. // 如果需要邀请注册
  50. if (self::$config['is_invite_register']) {
  51. if (empty($code)) {
  52. $request->session()->flash('errorMsg', '请输入邀请码');
  53. return Redirect::back()->withInput();
  54. }
  55. // 校验邀请码合法性
  56. $code = Invite::where('code', $code)->where('status', 0)->first();
  57. if (empty($code)) {
  58. $request->session()->flash('errorMsg', '邀请码不可用,请更换邀请码后重试');
  59. return Redirect::back()->withInput($request->except(['code']));
  60. }
  61. }
  62. // 校验用户名是否已存在
  63. $exists = User::where('username', $username)->first();
  64. if ($exists) {
  65. $request->session()->flash('errorMsg', '用户名已存在,请更换用户名');
  66. return Redirect::back()->withInput();
  67. }
  68. // 最后一个可用端口
  69. $last_user = User::orderBy('id', 'desc')->first();
  70. $port = self::$config['is_rand_port'] ? $this->getRandPort() : $last_user->port + 1;
  71. // 创建新用户
  72. $obj = new User();
  73. $obj->username = $username;
  74. $obj->password = md5($password);
  75. $obj->port = $port;
  76. $obj->passwd = $this->makeRandStr();
  77. $obj->transfer_enable = $this->toGB(1);
  78. $obj->enable_time = date('Y-m-d H:i:s');
  79. $obj->expire_time = date('Y-m-d H:i:s', strtotime("+30 days"));
  80. $obj->reg_ip = $request->getClientIp();
  81. $obj->save();
  82. // 更新邀请码
  83. if (self::$config['is_invite_register'] && $obj->id) {
  84. Invite::where('id', $code->id)->update(['fuid' => $obj->id,'status' => 1]);
  85. }
  86. return Redirect::to('login');
  87. } else {
  88. $view['is_register'] = self::$config['is_register'];
  89. $view['is_invite_register'] = self::$config['is_invite_register'];
  90. return Response::view('register', $view);
  91. }
  92. }
  93. }