|
@@ -23,121 +23,9 @@ class User extends Api
|
|
public function _initialize()
|
|
public function _initialize()
|
|
{
|
|
{
|
|
parent::_initialize();
|
|
parent::_initialize();
|
|
-
|
|
|
|
- if (!Config::get('fastadmin.usercenter')) {
|
|
|
|
- $this->error(__('User center already closed'));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 会员中心
|
|
|
|
- */
|
|
|
|
- public function index()
|
|
|
|
- {
|
|
|
|
- $this->success('', ['welcome' => $this->auth->nickname]);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 会员登录
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $account 账号
|
|
|
|
- * @param string $password 密码
|
|
|
|
- */
|
|
|
|
- public function login()
|
|
|
|
- {
|
|
|
|
- $account = $this->request->post('account');
|
|
|
|
- $password = $this->request->post('password');
|
|
|
|
- if (!$account || !$password) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- $ret = $this->auth->login($account, $password);
|
|
|
|
- if ($ret) {
|
|
|
|
- $data = ['userinfo' => $this->auth->getUserinfo()];
|
|
|
|
- $this->success(__('Logged in successful'), $data);
|
|
|
|
- } else {
|
|
|
|
- $this->error($this->auth->getError());
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 手机验证码登录
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $mobile 手机号
|
|
|
|
- * @param string $captcha 验证码
|
|
|
|
- */
|
|
|
|
- public function mobilelogin()
|
|
|
|
- {
|
|
|
|
- $mobile = $this->request->post('mobile');
|
|
|
|
- $captcha = $this->request->post('captcha');
|
|
|
|
- if (!$mobile || !$captcha) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- if (!Validate::regex($mobile, "^1\d{10}$")) {
|
|
|
|
- $this->error(__('Mobile is incorrect'));
|
|
|
|
- }
|
|
|
|
- if (!Sms::check($mobile, $captcha, 'mobilelogin')) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- $user = \app\common\model\User::getByMobile($mobile);
|
|
|
|
- if ($user) {
|
|
|
|
- if ($user->status != 'normal') {
|
|
|
|
- $this->error(__('Account is locked'));
|
|
|
|
- }
|
|
|
|
- //如果已经有账号则直接登录
|
|
|
|
- $ret = $this->auth->direct($user->id);
|
|
|
|
- } else {
|
|
|
|
- $ret = $this->auth->register($mobile, Random::alnum(), '', $mobile, []);
|
|
|
|
- }
|
|
|
|
- if ($ret) {
|
|
|
|
- Sms::flush($mobile, 'mobilelogin');
|
|
|
|
- $data = ['userinfo' => $this->auth->getUserinfo()];
|
|
|
|
- $this->success(__('Logged in successful'), $data);
|
|
|
|
- } else {
|
|
|
|
- $this->error($this->auth->getError());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
- /**
|
|
|
|
- * 注册会员
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $username 用户名
|
|
|
|
- * @param string $password 密码
|
|
|
|
- * @param string $email 邮箱
|
|
|
|
- * @param string $mobile 手机号
|
|
|
|
- * @param string $code 验证码
|
|
|
|
- */
|
|
|
|
- public function register()
|
|
|
|
- {
|
|
|
|
- $username = $this->request->post('username');
|
|
|
|
- $password = $this->request->post('password');
|
|
|
|
- $email = $this->request->post('email');
|
|
|
|
- $mobile = $this->request->post('mobile');
|
|
|
|
- $code = $this->request->post('code');
|
|
|
|
- if (!$username || !$password) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- if ($email && !Validate::is($email, "email")) {
|
|
|
|
- $this->error(__('Email is incorrect'));
|
|
|
|
- }
|
|
|
|
- if ($mobile && !Validate::regex($mobile, "^1\d{10}$")) {
|
|
|
|
- $this->error(__('Mobile is incorrect'));
|
|
|
|
- }
|
|
|
|
- $ret = Sms::check($mobile, $code, 'register');
|
|
|
|
- if (!$ret) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- $ret = $this->auth->register($username, $password, $email, $mobile, []);
|
|
|
|
- if ($ret) {
|
|
|
|
- $data = ['userinfo' => $this->auth->getUserinfo()];
|
|
|
|
- $this->success(__('Sign up successful'), $data);
|
|
|
|
- } else {
|
|
|
|
- $this->error($this->auth->getError());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* 退出登录
|
|
* 退出登录
|
|
@@ -164,9 +52,8 @@ class User extends Api
|
|
public function profile()
|
|
public function profile()
|
|
{
|
|
{
|
|
$user = $this->auth->getUser();
|
|
$user = $this->auth->getUser();
|
|
- $username = $this->request->post('username');
|
|
|
|
$nickname = $this->request->post('nickname');
|
|
$nickname = $this->request->post('nickname');
|
|
- $bio = $this->request->post('bio');
|
|
|
|
|
|
+ $nickname = $this->request->post('mobile');
|
|
$avatar = $this->request->post('avatar', '', 'trim,strip_tags,htmlspecialchars');
|
|
$avatar = $this->request->post('avatar', '', 'trim,strip_tags,htmlspecialchars');
|
|
if ($username) {
|
|
if ($username) {
|
|
$exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find();
|
|
$exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find();
|
|
@@ -188,167 +75,6 @@ class User extends Api
|
|
$this->success();
|
|
$this->success();
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 修改邮箱
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $email 邮箱
|
|
|
|
- * @param string $captcha 验证码
|
|
|
|
- */
|
|
|
|
- public function changeemail()
|
|
|
|
- {
|
|
|
|
- $user = $this->auth->getUser();
|
|
|
|
- $email = $this->request->post('email');
|
|
|
|
- $captcha = $this->request->post('captcha');
|
|
|
|
- if (!$email || !$captcha) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- if (!Validate::is($email, "email")) {
|
|
|
|
- $this->error(__('Email is incorrect'));
|
|
|
|
- }
|
|
|
|
- if (\app\common\model\User::where('email', $email)->where('id', '<>', $user->id)->find()) {
|
|
|
|
- $this->error(__('Email already exists'));
|
|
|
|
- }
|
|
|
|
- $result = Ems::check($email, $captcha, 'changeemail');
|
|
|
|
- if (!$result) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- $verification = $user->verification;
|
|
|
|
- $verification->email = 1;
|
|
|
|
- $user->verification = $verification;
|
|
|
|
- $user->email = $email;
|
|
|
|
- $user->save();
|
|
|
|
-
|
|
|
|
- Ems::flush($email, 'changeemail');
|
|
|
|
- $this->success();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 修改手机号
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $mobile 手机号
|
|
|
|
- * @param string $captcha 验证码
|
|
|
|
- */
|
|
|
|
- public function changemobile()
|
|
|
|
- {
|
|
|
|
- $user = $this->auth->getUser();
|
|
|
|
- $mobile = $this->request->post('mobile');
|
|
|
|
- $captcha = $this->request->post('captcha');
|
|
|
|
- if (!$mobile || !$captcha) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- if (!Validate::regex($mobile, "^1\d{10}$")) {
|
|
|
|
- $this->error(__('Mobile is incorrect'));
|
|
|
|
- }
|
|
|
|
- if (\app\common\model\User::where('mobile', $mobile)->where('id', '<>', $user->id)->find()) {
|
|
|
|
- $this->error(__('Mobile already exists'));
|
|
|
|
- }
|
|
|
|
- $result = Sms::check($mobile, $captcha, 'changemobile');
|
|
|
|
- if (!$result) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- $verification = $user->verification;
|
|
|
|
- $verification->mobile = 1;
|
|
|
|
- $user->verification = $verification;
|
|
|
|
- $user->mobile = $mobile;
|
|
|
|
- $user->save();
|
|
|
|
-
|
|
|
|
- Sms::flush($mobile, 'changemobile');
|
|
|
|
- $this->success();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 第三方登录
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $platform 平台名称
|
|
|
|
- * @param string $code Code码
|
|
|
|
- */
|
|
|
|
- public function third()
|
|
|
|
- {
|
|
|
|
- $url = url('user/index');
|
|
|
|
- $platform = $this->request->post("platform");
|
|
|
|
- $code = $this->request->post("code");
|
|
|
|
- $config = get_addon_config('third');
|
|
|
|
- if (!$config || !isset($config[$platform])) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- $app = new \addons\third\library\Application($config);
|
|
|
|
- //通过code换access_token和绑定会员
|
|
|
|
- $result = $app->{$platform}->getUserInfo(['code' => $code]);
|
|
|
|
- if ($result) {
|
|
|
|
- $loginret = \addons\third\library\Service::connect($platform, $result);
|
|
|
|
- if ($loginret) {
|
|
|
|
- $data = [
|
|
|
|
- 'userinfo' => $this->auth->getUserinfo(),
|
|
|
|
- 'thirdinfo' => $result
|
|
|
|
- ];
|
|
|
|
- $this->success(__('Logged in successful'), $data);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- $this->error(__('Operation failed'), $url);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 重置密码
|
|
|
|
- *
|
|
|
|
- * @ApiMethod (POST)
|
|
|
|
- * @param string $mobile 手机号
|
|
|
|
- * @param string $newpassword 新密码
|
|
|
|
- * @param string $captcha 验证码
|
|
|
|
- */
|
|
|
|
- public function resetpwd()
|
|
|
|
- {
|
|
|
|
- $type = $this->request->post("type");
|
|
|
|
- $mobile = $this->request->post("mobile");
|
|
|
|
- $email = $this->request->post("email");
|
|
|
|
- $newpassword = $this->request->post("newpassword");
|
|
|
|
- $captcha = $this->request->post("captcha");
|
|
|
|
- if (!$newpassword || !$captcha) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
- //验证Token
|
|
|
|
- if (!Validate::make()->check(['newpassword' => $newpassword], ['newpassword' => 'require|regex:\S{6,30}'])) {
|
|
|
|
- $this->error(__('Password must be 6 to 30 characters'));
|
|
|
|
- }
|
|
|
|
- if ($type == 'mobile') {
|
|
|
|
- if (!Validate::regex($mobile, "^1\d{10}$")) {
|
|
|
|
- $this->error(__('Mobile is incorrect'));
|
|
|
|
- }
|
|
|
|
- $user = \app\common\model\User::getByMobile($mobile);
|
|
|
|
- if (!$user) {
|
|
|
|
- $this->error(__('User not found'));
|
|
|
|
- }
|
|
|
|
- $ret = Sms::check($mobile, $captcha, 'resetpwd');
|
|
|
|
- if (!$ret) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- Sms::flush($mobile, 'resetpwd');
|
|
|
|
- } else {
|
|
|
|
- if (!Validate::is($email, "email")) {
|
|
|
|
- $this->error(__('Email is incorrect'));
|
|
|
|
- }
|
|
|
|
- $user = \app\common\model\User::getByEmail($email);
|
|
|
|
- if (!$user) {
|
|
|
|
- $this->error(__('User not found'));
|
|
|
|
- }
|
|
|
|
- $ret = Ems::check($email, $captcha, 'resetpwd');
|
|
|
|
- if (!$ret) {
|
|
|
|
- $this->error(__('Captcha is incorrect'));
|
|
|
|
- }
|
|
|
|
- Ems::flush($email, 'resetpwd');
|
|
|
|
- }
|
|
|
|
- //模拟一次登录
|
|
|
|
- $this->auth->direct($user->id);
|
|
|
|
- $ret = $this->auth->changepwd($newpassword, '', true);
|
|
|
|
- if ($ret) {
|
|
|
|
- $this->success(__('Reset password successful'));
|
|
|
|
- } else {
|
|
|
|
- $this->error($this->auth->getError());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
//用户详细资料
|
|
//用户详细资料
|
|
public function getUserinfo($type = 1){
|
|
public function getUserinfo($type = 1){
|
|
$info = $this->auth->getUserinfo();
|
|
$info = $this->auth->getUserinfo();
|
|
@@ -402,73 +128,6 @@ class User extends Api
|
|
/**
|
|
/**
|
|
* 微信小程序登录
|
|
* 微信小程序登录
|
|
*/
|
|
*/
|
|
- public function wxMiniProgramLogin_old() {
|
|
|
|
- $openid = $this->request->request('openid');// openid值
|
|
|
|
- $avatar = $this->request->request('avatar');
|
|
|
|
- $nickname = $this->request->request('nickname');
|
|
|
|
- $mobile = $this->request->request('mobile');
|
|
|
|
-
|
|
|
|
- //学生信息
|
|
|
|
- $field = ['realname','gender','school_id','grade_id','classes_id','stu_mobile','idcard'];
|
|
|
|
- $stu_data = request_post_hub($field);
|
|
|
|
- //学生信息
|
|
|
|
-
|
|
|
|
- if (!$openid) {
|
|
|
|
- $this->error(__('Invalid parameters'));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 获取openid和sessionkey
|
|
|
|
- $openidInfo = Db::name('user_sessionkey')->where(['openid'=>$openid])->find();
|
|
|
|
- $session_key = $openidInfo['sessionkey'];
|
|
|
|
-
|
|
|
|
- // 微信授权openid登录
|
|
|
|
- $userInfo = Db::name('user')->where(['mini_openid'=>$openid])->find();
|
|
|
|
- // 用户信息不存在时使用
|
|
|
|
- $extend = [
|
|
|
|
- 'mini_openid' => $openid,
|
|
|
|
- 'nickname' => $nickname,
|
|
|
|
- 'avatar' => $avatar,
|
|
|
|
- 'mini_sessionkey'=> $session_key,
|
|
|
|
- 'unionid' => $openidInfo['unionid'],
|
|
|
|
- 'mobile' => $mobile,
|
|
|
|
- ];
|
|
|
|
-
|
|
|
|
- // 判断用户是否已经存在
|
|
|
|
- if($userInfo) { // 登录
|
|
|
|
- Db::name('user')->where('id',$userInfo['id'])->update(['logintime'=>time()]);
|
|
|
|
- $res = $this->auth->direct($userInfo['id']);
|
|
|
|
- } else {
|
|
|
|
- // 注册
|
|
|
|
- $username = '';
|
|
|
|
- $password = '';
|
|
|
|
-
|
|
|
|
- // 默认注册一个会员
|
|
|
|
- $result = $this->auth->register($username, $password, '','', $extend);
|
|
|
|
- if (!$result) {
|
|
|
|
- $this->error("注册失败!");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- //学生入库
|
|
|
|
- $stu_data['user_id'] = $this->auth->id;
|
|
|
|
- $stu_data['is_default'] = 1;
|
|
|
|
- Db::name('user_student')->insertGetId($stu_data);
|
|
|
|
-
|
|
|
|
- //从学生库找人,放到注册人名下
|
|
|
|
- Db::name('user_student')->where('user_id',0)->where('mobile',$mobile)->update(['user_id'=>$this->auth->id]);
|
|
|
|
-
|
|
|
|
- $res = $this->auth->direct($this->auth->id);
|
|
|
|
- }
|
|
|
|
- $userInfo = $this->getUserinfo('return');
|
|
|
|
- if($res) {
|
|
|
|
- $this->success("登录成功!",$userInfo);
|
|
|
|
- } else {
|
|
|
|
- $this->error("登录失败!");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- /**
|
|
|
|
- * 微信小程序登录
|
|
|
|
- */
|
|
|
|
public function wxMiniProgramLogin() {
|
|
public function wxMiniProgramLogin() {
|
|
$openid = $this->request->request('openid');// openid值
|
|
$openid = $this->request->request('openid');// openid值
|
|
|
|
|