RegisterController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. }
  41. // 是否开启注册
  42. if (!self::$config['is_register']) {
  43. $request->session()->flash('errorMsg', '系统维护暂停注册,如需账号请联系管理员');
  44. return Redirect::back();
  45. }
  46. // 如果需要邀请注册
  47. if (self::$config['is_invite_register']) {
  48. if (empty($code)) {
  49. $request->session()->flash('errorMsg', '请输入邀请码');
  50. return Redirect::back()->withInput();
  51. }
  52. // 校验邀请码合法性
  53. $code = Invite::where('code', $code)->where('status', 0)->first();
  54. if (empty($code)) {
  55. $request->session()->flash('errorMsg', '邀请码不可用,请更换邀请码后重试');
  56. return Redirect::back()->withInput($request->except(['code']));
  57. }
  58. }
  59. // 校验用户名是否已存在
  60. $exists = User::where('username', $username)->first();
  61. if ($exists) {
  62. $request->session()->flash('errorMsg', '用户名已存在,请更换用户名');
  63. return Redirect::back()->withInput();
  64. }
  65. // 最后一个可用端口
  66. $last_user = User::orderBy('id', 'desc')->first();
  67. $port = self::$config['is_rand_port'] ? $this->getRandPort() : $last_user->port + 1;
  68. // 创建新用户
  69. $obj = new User();
  70. $obj->username = $username;
  71. $obj->password = md5($password);
  72. $obj->port = $port;
  73. $obj->passwd = $this->makeRandStr();
  74. $obj->transfer_enable = $this->toGB(1);
  75. $obj->enable_time = date('Y-m-d H:i:s');
  76. $obj->expire_time = date('Y-m-d H:i:s', strtotime("+30 days"));
  77. $obj->reg_ip = $request->getClientIp();
  78. $obj->save();
  79. // 更新邀请码
  80. if (self::$config['is_invite_register'] && $obj->id) {
  81. Invite::where('id', $code->id)->update(['fuid' => $obj->id,'status' => 1]);
  82. }
  83. return Redirect::to('login');
  84. } else {
  85. $view['is_register'] = self::$config['is_register'];
  86. $view['is_invite_register'] = self::$config['is_invite_register'];
  87. return Response::view('register', $view);
  88. }
  89. }
  90. }