|
|
@@ -24,6 +24,7 @@ use Mail;
|
|
|
class RegisterController extends Controller
|
|
|
{
|
|
|
// 注册页
|
|
|
+ // TODO:改成点击发送验证码按钮,而不是到邮箱里去打开激活链接
|
|
|
public function index(Request $request)
|
|
|
{
|
|
|
$cacheKey = 'register_times_' . md5(getClientIp()); // 注册限制缓存key
|
|
|
@@ -47,6 +48,13 @@ class RegisterController extends Controller
|
|
|
Session::forget('register_token');
|
|
|
}
|
|
|
|
|
|
+ // 是否开启注册
|
|
|
+ if (!$this->systemConfig['is_register']) {
|
|
|
+ Session::flash('errorMsg', '系统维护,暂停注册');
|
|
|
+
|
|
|
+ return Redirect::back();
|
|
|
+ }
|
|
|
+
|
|
|
if (empty($username)) {
|
|
|
Session::flash('errorMsg', '请输入用户名');
|
|
|
|
|
|
@@ -83,17 +91,10 @@ class RegisterController extends Controller
|
|
|
if (!Captcha::check($captcha)) {
|
|
|
Session::flash('errorMsg', '验证码错误,请重新输入');
|
|
|
|
|
|
- return Redirect::back()->withInput($request->except(['password', 'repassword']));
|
|
|
+ return Redirect::back()->withInput();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 是否开启注册
|
|
|
- if (!$this->systemConfig['is_register']) {
|
|
|
- Session::flash('errorMsg', '系统维护暂停注册');
|
|
|
-
|
|
|
- return Redirect::back();
|
|
|
- }
|
|
|
-
|
|
|
// 如果需要邀请注册
|
|
|
if ($this->systemConfig['is_invite_register']) {
|
|
|
if (empty($code)) {
|
|
|
@@ -124,25 +125,13 @@ class RegisterController extends Controller
|
|
|
}
|
|
|
|
|
|
// 校验用户名是否已存在
|
|
|
- $exists = User::query()->where('username', $username)->first();
|
|
|
+ $exists = User::query()->where('username', $username)->exists();
|
|
|
if ($exists) {
|
|
|
Session::flash('errorMsg', '用户名已存在,请更换用户名');
|
|
|
|
|
|
return Redirect::back()->withInput();
|
|
|
}
|
|
|
|
|
|
- // 校验aff对应账号是否存在
|
|
|
- $aff = $request->cookie('register_aff') ? $request->cookie('register_aff') : 0;
|
|
|
- if ($aff) { // 优先处理邀请链接
|
|
|
- $affUser = User::query()->where('id', $aff)->first();
|
|
|
- $referral_uid = $affUser ? $aff : 0;
|
|
|
- } elseif ($code) { // 如果使用邀请码,则将邀请码也列入aff
|
|
|
- $inviteCode = Invite::query()->where('code', $code)->where('status', 0)->first();
|
|
|
- $referral_uid = $inviteCode ? $inviteCode->uid : 0;
|
|
|
- } else {
|
|
|
- $referral_uid = 0;
|
|
|
- }
|
|
|
-
|
|
|
// 获取可用端口
|
|
|
$port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
|
|
|
if ($port > $this->systemConfig['max_port']) {
|
|
|
@@ -151,6 +140,10 @@ class RegisterController extends Controller
|
|
|
return Redirect::back()->withInput();
|
|
|
}
|
|
|
|
|
|
+ // 获取aff
|
|
|
+ $affArr = $this->getAff($code, $aff);
|
|
|
+ $referral_uid = $affArr['referral_uid'];
|
|
|
+
|
|
|
$transfer_enable = $referral_uid ? ($this->systemConfig['default_traffic'] + $this->systemConfig['referral_traffic']) * 1048576 : $this->systemConfig['default_traffic'] * 1048576;
|
|
|
|
|
|
// 创建新用户
|
|
|
@@ -189,8 +182,8 @@ class RegisterController extends Controller
|
|
|
}
|
|
|
|
|
|
// 更新邀请码
|
|
|
- if ($this->systemConfig['is_invite_register'] && $aff == 0) {
|
|
|
- Invite::query()->where('id', $inviteCode->id)->update(['fuid' => $user->id, 'status' => 1]);
|
|
|
+ if ($this->systemConfig['is_invite_register'] && $affArr['code_id']) {
|
|
|
+ Invite::query()->where('id', $affArr['code_id'])->update(['fuid' => $user->id, 'status' => 1]);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -198,22 +191,14 @@ class RegisterController extends Controller
|
|
|
if ($this->systemConfig['is_active_register']) {
|
|
|
// 生成激活账号的地址
|
|
|
$token = md5($this->systemConfig['website_name'] . $username . microtime());
|
|
|
- $verify = new Verify();
|
|
|
- $verify->user_id = $user->id;
|
|
|
- $verify->username = $username;
|
|
|
- $verify->token = $token;
|
|
|
- $verify->status = 0;
|
|
|
- $verify->save();
|
|
|
-
|
|
|
$activeUserUrl = $this->systemConfig['website_url'] . '/active/' . $token;
|
|
|
- $title = '注册激活';
|
|
|
- $content = '请求地址:' . $activeUserUrl;
|
|
|
+ $this->addVerify($user->id, $username, $token);
|
|
|
|
|
|
try {
|
|
|
Mail::to($username)->send(new activeUser($this->systemConfig['website_name'], $activeUserUrl));
|
|
|
- $this->sendEmailLog($user->id, $title, $content);
|
|
|
+ $this->sendEmailLog($user->id, '注册激活', '请求地址:' . $activeUserUrl);
|
|
|
} catch (\Exception $e) {
|
|
|
- $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
|
|
|
+ $this->sendEmailLog($user->id, '注册激活', '请求地址:' . $activeUserUrl, 0, $e->getMessage());
|
|
|
}
|
|
|
|
|
|
Session::flash('regSuccessMsg', '注册成功:激活邮件已发送,如未收到,请查看垃圾邮箱');
|
|
|
@@ -245,5 +230,59 @@ class RegisterController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取AFF
|
|
|
+ *
|
|
|
+ * @param string $code 邀请码
|
|
|
+ * @param string $aff URL中的aff参数
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ private function getAff($code = '', $aff = '')
|
|
|
+ {
|
|
|
+ // 邀请人ID
|
|
|
+ $referral_uid = 0;
|
|
|
+
|
|
|
+ // 有邀请码先用邀请码,用谁的邀请码就给谁返利
|
|
|
+ if ($code) {
|
|
|
+ $inviteCode = Invite::query()->where('code', $code)->where('uid', '>', 0)->where('status', 0)->first();
|
|
|
+ if ($inviteCode) {
|
|
|
+ $referral_uid = $inviteCode->uid;
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'referral_uid' => $referral_uid,
|
|
|
+ 'code_id' => $inviteCode->id
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ // 没有用邀请码或者邀请码是管理员生成的,则检查cookie或者url链接
|
|
|
+ if (!$referral_uid) {
|
|
|
+ // 检查一下cookie里有没有aff
|
|
|
+ $cookieAff = \Request::cookie('register_aff') ? \Request::cookie('register_aff') : 0;
|
|
|
+ if ($cookieAff) {
|
|
|
+ $affUser = User::query()->where('id', $cookieAff)->exists();
|
|
|
+ $referral_uid = $affUser ? $cookieAff : 0;
|
|
|
+ } elseif ($aff) { // 如果cookie里没有aff,就再检查一下请求的url里有没有aff,因为有些人的浏览器会禁用了cookie,比如chrome开了隐私模式
|
|
|
+ $affUser = User::query()->where('id', $aff)->exists();
|
|
|
+ $referral_uid = $affUser ? $aff : 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'referral_uid' => $referral_uid,
|
|
|
+ 'code_id' => 0
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 写入生成激活账号验证记录
|
|
|
+ private function addVerify($userId, $username, $token)
|
|
|
+ {
|
|
|
+ $verify = new Verify();
|
|
|
+ $verify->user_id = $userId;
|
|
|
+ $verify->username = $username;
|
|
|
+ $verify->token = $token;
|
|
|
+ $verify->status = 0;
|
|
|
+ $verify->save();
|
|
|
+ }
|
|
|
}
|