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; }
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)); }
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); }
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); }
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; }
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); }
| 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; }
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; }
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', '电子邮箱或者手机号码格式不正确!'); } } }
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); }
``` */ $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 {
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); }