RegisterController.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. // 注册页
  16. public function index(Request $request)
  17. {
  18. if ($request->method() == 'POST') {
  19. $username = trim($request->get('username'));
  20. $password = trim($request->get('password'));
  21. $repassword = trim($request->get('repassword'));
  22. $code = trim($request->get('code'));
  23. if (empty($username)) {
  24. $request->session()->flash('errorMsg', '请输入用户名');
  25. return Redirect::back()->withInput();
  26. } else if (empty($password)) {
  27. $request->session()->flash('errorMsg', '请输入密码');
  28. return Redirect::back()->withInput();
  29. } else if (empty($repassword)) {
  30. $request->session()->flash('errorMsg', '请重新输入密码');
  31. return Redirect::back()->withInput();
  32. } else if (empty($code)) {
  33. $request->session()->flash('errorMsg', '请输入邀请码');
  34. return Redirect::back()->withInput();
  35. } else if (md5($password) != md5($repassword)) {
  36. $request->session()->flash('errorMsg', '两次输入密码不一致,请重新输入');
  37. return Redirect::back()->withInput($request->except(['password', 'repassword']));
  38. }
  39. // 校验邀请码合法性
  40. $code = Invite::where('code', $code)->where('status', 0)->first();
  41. if (empty($code)) {
  42. $request->session()->flash('errorMsg', '邀请码不可用,请更换邀请码后重试');
  43. return Redirect::back()->withInput($request->except(['code']));
  44. }
  45. // 校验用户名是否已存在
  46. $exists = User::where('username', $username)->first();
  47. if ($exists) {
  48. $request->session()->flash('errorMsg', '用户名已存在,请更换用户名');
  49. return Redirect::back()->withInput();
  50. }
  51. // 最后一个可用端口
  52. $config = $this->systemConfig();
  53. $last_user = User::orderBy('id', 'desc')->first();
  54. $port = $config['is_rand_port'] ? $this->getRandPort() : $last_user->port + 1;
  55. // 创建新用户
  56. $obj = new User();
  57. $obj->username = $username;
  58. $obj->password = md5($password);
  59. $obj->port = $port;
  60. $obj->passwd = $this->makeRandStr();
  61. $obj->transfer_enable = $this->toGB(1);
  62. $obj->enable_time = date('Y-m-d H:i:s');
  63. $obj->expire_time = date('Y-m-d H:i:s', strtotime("+30 days"));
  64. $obj->reg_ip = $request->getClientIp();
  65. $obj->save();
  66. // 更新邀请码
  67. if ($obj->id) {
  68. Invite::where('id', $code->id)->update(['status' => 1]);
  69. }
  70. return Redirect::to('login');
  71. } else {
  72. return Response::view('register');
  73. }
  74. }
  75. }