Ejemplo n.º 1
0
 protected function isMobileRegister($registration)
 {
     if (isset($registration['emailOrMobile']) && !empty($registration['emailOrMobile'])) {
         if (SimpleValidator::mobile($registration['emailOrMobile'])) {
             return true;
         }
     } elseif (isset($registration['mobile']) && !empty($registration['mobile'])) {
         if (SimpleValidator::mobile($registration['mobile'])) {
             return true;
         }
     }
     return false;
 }
Ejemplo n.º 2
0
 public function registerAction(Request $request)
 {
     $email = $request->get('email');
     $nickname = $request->get('nickname');
     $password = $request->get('password');
     if (!$this->getAuthService()->isRegisterEnabled()) {
         return $this->createErrorResponse($request, 'register_closed', '注册已关闭,请联系管理员');
     }
     if (!SimpleValidator::email($email)) {
         return $this->createErrorResponse($request, 'email_invalid', '邮箱地址格式不正确');
     }
     if (!SimpleValidator::nickname($nickname)) {
         return $this->createErrorResponse($request, 'nickname_invalid', '用户名格式不正确');
     }
     if (!SimpleValidator::password($password)) {
         return $this->createErrorResponse($request, 'password_invalid', '密码格式不正确');
     }
     if (!$this->getUserService()->isEmailAvaliable($email)) {
         return $this->createErrorResponse($request, 'email_exist', '该邮箱已被注册');
     }
     if (!$this->getUserService()->isNicknameAvaliable($nickname)) {
         return $this->createErrorResponse($request, 'nickname_exist', '该用户名已被注册');
     }
     $user = $this->getAuthService()->register(array('email' => $email, 'nickname' => $nickname, 'password' => $password));
     $token = $this->createToken($user, $request);
     return $this->createJson($request, array('user' => $this->filterUser($user), 'token' => $token));
 }
Ejemplo n.º 3
0
 public function regist()
 {
     $email = $this->getParam('email');
     $nickname = $this->getParam('nickname');
     $password = $this->getParam('password');
     $auth = $this->getSettingService()->get('auth', array());
     if (isset($auth['register_mode']) && $auth['register_mode'] == 'closed') {
         return $this->createErrorResponse('register_closed', '系统暂时关闭注册,请联系管理员');
     }
     if ($auth['register_mode'] == 'mobile') {
         return $this->createErrorResponse('register_error', '移动端暂不支持手机注册,敬请期待!');
     }
     if (!SimpleValidator::email($email)) {
         return $this->createErrorResponse('email_invalid', '邮箱地址格式不正确');
     }
     if (!SimpleValidator::nickname($nickname)) {
         return $this->createErrorResponse('nickname_invalid', '用户名格式不正确');
     }
     if (!SimpleValidator::password($password)) {
         return $this->createErrorResponse('password_invalid', '密码格式不正确');
     }
     if (!$this->controller->getUserService()->isEmailAvaliable($email)) {
         return $this->createErrorResponse('email_exist', '该邮箱已被注册');
     }
     if (!$this->controller->getUserService()->isNicknameAvaliable($nickname)) {
         return $this->createErrorResponse('nickname_exist', '该用户名已被注册');
     }
     $registTypeName = $auth['register_mode'] == "email" ? "email" : "emailOrMobile";
     $user = $this->controller->getAuthService()->register(array($registTypeName => $email, 'nickname' => $nickname, 'password' => $password));
     $token = $this->controller->createToken($user, $this->request);
     $this->log("user_regist", "用户注册", array("user" => $user));
     return array('user' => $this->controller->filterUser($user), 'token' => $token);
 }
Ejemplo n.º 4
0
 public function existAction(Request $request, $type)
 {
     $token = $request->getSession()->get('oauth_token');
     $client = $this->createOAuthClient($type);
     $oauthUser = $client->getUserInfo($token);
     $data = $request->request->all();
     $message = 'Email地址或手机号码输入错误';
     if (SimpleValidator::email($data['emailOrMobile'])) {
         $user = $this->getUserService()->getUserByEmail($data['emailOrMobile']);
         $message = '该Email地址尚未注册';
     } else {
         if (SimpleValidator::mobile($data['emailOrMobile'])) {
             $user = $this->getUserService()->getUserByVerifiedMobile($data['emailOrMobile']);
             $message = '该手机号码尚未注册';
         }
     }
     if (empty($user)) {
         $response = array('success' => false, 'message' => $message);
     } elseif (!$this->getUserService()->verifyPassword($user['id'], $data['password'])) {
         $response = array('success' => false, 'message' => '密码不正确,请重试!');
     } elseif ($this->getUserService()->getUserBindByTypeAndUserId($type, $user['id'])) {
         $response = array('success' => false, 'message' => "该{{ {$this->setting}('site.name') }}帐号已经绑定了该第三方网站的其他帐号,如需重新绑定,请先到账户设置中取消绑定!");
     } else {
         $response = array('success' => true, '_target_path' => $request->getSession()->get('_target_path', $this->generateUrl('homepage')));
         $this->getUserService()->bindUser($type, $oauthUser['id'], $user['id'], $token);
         $this->authenticateUser($user);
     }
     return $this->createJsonResponse($response);
 }
Ejemplo n.º 5
0
 protected function generateUser($type, $token, $oauthUser, $setData)
 {
     $registration = array();
     $randString = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
     $oauthUser['name'] = preg_replace('/[^\\x{4e00}-\\x{9fa5}a-zA-z0-9_.]+/u', '', $oauthUser['name']);
     $oauthUser['name'] = str_replace(array('-'), array('_'), $oauthUser['name']);
     if (!SimpleValidator::nickname($oauthUser['name'])) {
         $oauthUser['name'] = '';
     }
     $tempType = $type;
     if (empty($oauthUser['name'])) {
         if ($type == 'weixinmob' || $type == 'weixinweb') {
             $tempType = 'weixin';
         }
         $oauthUser['name'] = "{$tempType}" . substr($randString, 9, 3);
     }
     $nameLength = mb_strlen($oauthUser['name'], 'utf-8');
     if ($nameLength > 10) {
         $oauthUser['name'] = mb_substr($oauthUser['name'], 0, 11, 'utf-8');
     }
     if (!empty($setData['nickname']) && !empty($setData['email'])) {
         $registration['nickname'] = $setData['nickname'];
         $registration['email'] = $setData['email'];
     } else {
         $nicknames = array();
         $nicknames[] = $oauthUser['name'];
         $nicknames[] = mb_substr($oauthUser['name'], 0, 8, 'utf-8') . substr($randString, 0, 3);
         $nicknames[] = mb_substr($oauthUser['name'], 0, 8, 'utf-8') . substr($randString, 3, 3);
         $nicknames[] = mb_substr($oauthUser['name'], 0, 8, 'utf-8') . substr($randString, 6, 3);
         foreach ($nicknames as $name) {
             if ($this->getUserService()->isNicknameAvaliable($name)) {
                 $registration['nickname'] = $name;
                 break;
             }
         }
         if (empty($registration['nickname'])) {
             return null;
         }
         $registration['email'] = 'u_' . substr($randString, 0, 12) . '@edusoho.net';
     }
     $registration['password'] = substr(base_convert(sha1(uniqid(mt_rand(), true)), 16, 36), 0, 8);
     $registration['token'] = $token;
     $registration['createdIp'] = $oauthUser['createdIp'];
     if ($this->setting("auth.register_mode", "email") == "email_or_mobile") {
         $registration['emailOrMobile'] = $registration['email'];
         unset($registration['email']);
     }
     $user = $this->getAuthService()->register($registration, $type);
     return $user;
 }
Ejemplo n.º 6
0
 public function testSite()
 {
     $result = SimpleValidator::site("http://www.google.com/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("http://www.ba1du.com/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("http://e2/we#&/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("https://e2/we#&/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("http://e2we#&/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("http://e2we#&");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("http://ew2/we#&/");
     $this->assertEquals(true, $result);
     $result = SimpleValidator::site("ftp://www.ba1du.com/");
     $this->assertEquals(false, $result);
     $result = SimpleValidator::site("www.g.com/");
     $this->assertEquals(false, $result);
 }
Ejemplo n.º 7
0
| password | string | 是 | 密码 |

** 响应 **

```
{
    "xxx": "xxx"
}
```
*/
$api->post('/', function (Request $request) {
    $fields = $request->request->all();
    $error = array();
    //验证手机验证码
    $mobile_number = $fields['nickname'];
    if (!SimpleValidator::mobile($mobile_number)) {
        $error['message'] = '手机号码格式不正确';
        return $error;
    }
    if (!isset($fields['email']) || empty($fields['email'])) {
        $fields['email'] = "{$mobile_number}@163.com";
    }
    $fields['verifiedMobile'] = $mobile_number;
    $session = new Session();
    $session->start();
    if ($session->has($mobile_number)) {
        $info = $session->get($mobile_number);
        if ($fields['code'] != $info['code']) {
            $error['message'] = '验证码不正确';
            return $error;
        }
Ejemplo n.º 8
0
 public function updateUserProfile($id, $fields)
 {
     $user = $this->getUser($id);
     if (empty($user)) {
         throw $this->createServiceException('用户不存在,更新用户失败。');
     }
     $fields = ArrayToolkit::filter($fields, array('truename' => '', 'gender' => 'secret', 'iam' => '', 'idcard' => '', 'birthday' => null, 'city' => '', 'mobile' => '', 'qq' => '', 'school' => '', 'class' => '', 'company' => '', 'job' => '', 'signature' => '', 'title' => '', 'about' => '', 'weibo' => '', 'weixin' => '', 'site' => '', 'intField1' => null, 'intField2' => null, 'intField3' => null, 'intField4' => null, 'intField5' => null, 'dateField1' => null, 'dateField2' => null, 'dateField3' => null, 'dateField4' => null, 'dateField5' => null, 'floatField1' => null, 'floatField2' => null, 'floatField3' => null, 'floatField4' => null, 'floatField5' => null, 'textField1' => "", 'textField2' => "", 'textField3' => "", 'textField4' => "", 'textField5' => "", 'textField6' => "", 'textField7' => "", 'textField8' => "", 'textField9' => "", 'textField10' => "", 'varcharField1' => "", 'varcharField2' => "", 'varcharField3' => "", 'varcharField4' => "", 'varcharField5' => "", 'varcharField6' => "", 'varcharField7' => "", 'varcharField8' => "", 'varcharField9' => "", 'varcharField10' => ""));
     if (empty($fields)) {
         return $this->getProfileDao()->getProfile($id);
     }
     if (isset($fields['title'])) {
         $this->getUserDao()->updateUser($id, array('title' => $fields['title']));
         $this->dispatchEvent('user.update', new ServiceEvent(array('user' => $user, 'fields' => $fields)));
     }
     unset($fields['title']);
     if (!empty($fields['gender']) && !in_array($fields['gender'], array('male', 'female', 'secret'))) {
         throw $this->createServiceException('性别不正确,更新用户失败。');
     }
     if (!empty($fields['birthday']) && !SimpleValidator::date($fields['birthday'])) {
         throw $this->createServiceException('生日不正确,更新用户失败。');
     }
     if (!empty($fields['mobile']) && !SimpleValidator::mobile($fields['mobile'])) {
         throw $this->createServiceException('手机不正确,更新用户失败。');
     }
     if (!empty($fields['qq']) && !SimpleValidator::qq($fields['qq'])) {
         throw $this->createServiceException('QQ不正确,更新用户失败。');
     }
     if (!empty($fields['about'])) {
         $fields['about'] = $this->purifyHtml($fields['about']);
     }
     $userProfile = $this->getProfileDao()->updateProfile($id, $fields);
     $this->dispatchEvent('profile.update', new ServiceEvent(array('user' => $user, 'fields' => $fields)));
     return $userProfile;
 }
Ejemplo n.º 9
0
 public function checkEmailOrMobile($emailOrMobile)
 {
     if (SimpleValidator::email($emailOrMobile)) {
         return $this->checkEmail($emailOrMobile);
     } else {
         if (SimpleValidator::mobile($emailOrMobile)) {
             return $this->checkMobile($emailOrMobile);
         } else {
             return array('error_dateInput', '电子邮箱或者手机号码格式不正确!');
         }
     }
 }
Ejemplo n.º 10
0
 public function regist()
 {
     $email = $this->getParam('email');
     $password = $this->getParam('password');
     $nickname = $this->getParam('nickname');
     $phoneNumber = $this->getParam('phone');
     $smsCode = $this->getParam('smsCode');
     $result = array('meta' => null);
     $auth = $this->getSettingService()->get('auth', array());
     if (isset($auth['register_mode']) && $auth['register_mode'] == 'closed') {
         return $this->createErrorResponse('register_closed', '系统暂时关闭注册,请联系管理员');
     }
     if (!$nickname) {
         $nickname = "ES" . time();
         while (!$this->controller->getUserService()->isNicknameAvaliable($nickname)) {
             $nickname = "ES" . time();
         }
     } else {
         if (!$this->controller->getUserService()->isNicknameAvaliable($nickname)) {
             return $this->createErrorResponse('nickname_exist', '该昵称已被注册');
         }
     }
     $user = null;
     if (!empty($email)) {
         if (!SimpleValidator::email($email)) {
             return $this->createErrorResponse('email_invalid', '邮箱地址格式不正确');
         }
         if (!$this->controller->getUserService()->isEmailAvaliable($email)) {
             return $this->createErrorResponse('email_exist', '该邮箱已被注册');
         }
         if (!SimpleValidator::password($password)) {
             return $this->createErrorResponse('password_invalid', '密码格式不正确');
         }
         $registTypeName = $auth['register_mode'] == "email" ? "email" : "emailOrMobile";
         $user = $this->controller->getAuthService()->register(array($registTypeName => $email, 'nickname' => $nickname, 'password' => $password));
     } else {
         if (!$this->checkPhoneNum($phoneNumber)) {
             return $this->createErrorResponse('phone_invalid', '手机号格式不正确');
         }
         if (!$this->getUserService()->isMobileUnique($phoneNumber)) {
             return $this->createErrorResponse('phone_exist', '该手机号码已被其他用户绑定');
         }
         if ($this->controller->setting('cloud_sms.sms_enabled') == '1' && $this->controller->setting('cloud_sms.sms_registration', 'on') == 'on') {
             $requestInfo = array('sms_code' => $smsCode, 'mobile' => $phoneNumber);
             list($result, $sessionField) = $this->smsCheck($this->request, $requestInfo, 'sms_registration');
             if ($result) {
                 $user = $this->controller->getAuthService()->register(array('emailOrMobile' => $sessionField['to'], 'nickname' => $nickname, 'password' => $password));
                 $this->clearSmsSession($this->request, 'sms_registration');
             } else {
                 return $this->createErrorResponse('sms_invalid', '手机短信验证错误,请重新注册');
             }
         }
     }
     if ($nickname && !SimpleValidator::nickname($nickname)) {
         return $this->createErrorResponse('nickname_invalid', '昵称格式不正确');
     }
     $token = $this->controller->createToken($user, $this->request);
     if (!empty($user) && !isset($user["currentIp"])) {
         $user["currentIp"] = "127.0.0.1";
     }
     $this->log("user_regist", "用户注册", array("user" => $user));
     return array('user' => $this->controller->filterUser($user), 'token' => $token);
 }
Ejemplo n.º 11
0
```
*/
$api->post('/', function (Request $request) {
    $fields = $request->request->all();
    $error = array();
    //验证手机号码
    if (empty($fields['nickname'])) {
        $fields['nickname'] = $fields['verifiedMobile'];
    }
    $user = ServiceKernel::instance()->createService('User.UserService')->getUserByLoginField($fields['verifiedMobile']);
    if (!empty($user)) {
        $error['message'] = '手机号已经被占用';
        return $error;
    }
    $mobile_number = $fields['verifiedMobile'];
    if (!SimpleValidator::mobile($fields['verifiedMobile'])) {
        $error['message'] = '手机号码格式不正确';
        return $error;
    }
    if (!isset($fields['email']) || empty($fields['email'])) {
        $fields['email'] = "{$mobile_number}@163.com";
    }
    $session = new Session();
    $session->start();
    if ($session->has($mobile_number)) {
        $info = $session->get($mobile_number);
        if ($fields['code'] != $info['code']) {
            $error['message'] = '验证码不正确';
            return $error;
        }
    } else {
Ejemplo n.º 12
0
 public function existBindAction(Request $request)
 {
     $token = $request->getSession()->get('oauth_token');
     $type = 'weixinmob';
     $client = $this->createOAuthClient($type);
     $oauthUser = $client->getUserInfo($token);
     $olduser = $this->getCurrentUser();
     $userBinds = $this->getUserService()->unBindUserByTypeAndToId($type, $olduser->id);
     $data = $request->request->all();
     $message = 'Email地址或手机号码输入错误';
     if (SimpleValidator::email($data['emailOrMobile'])) {
         $user = $this->getUserService()->getUserByEmail($data['emailOrMobile']);
         $message = '该Email地址尚未注册';
     } elseif (SimpleValidator::mobile($data['emailOrMobile'])) {
         $user = $this->getUserService()->getUserByVerifiedMobile($data['emailOrMobile']);
         $message = '该手机号码尚未注册或绑定';
     }
     if (empty($user)) {
         $response = array('success' => false, 'message' => $message);
     } elseif (!$this->getUserService()->verifyPassword($user['id'], $data['password'])) {
         $response = array('success' => false, 'message' => '密码不正确,请重试!');
     } elseif ($this->getUserService()->getUserBindByTypeAndUserId($type, $user['id'])) {
         $response = array('success' => false, 'message' => '该帐号已经绑定了该第三方网站的其他帐号,如需重新绑定,请先到账户设置中取消绑定!');
     } else {
         $response = array('success' => true, '_target_path' => $this->getTargetPath($request));
         $this->getUserService()->bindUser($type, $oauthUser['id'], $user['id'], $token);
         $this->authenticateUser($user);
     }
     return $this->createJsonResponse($response);
 }