fastadmin/application/index/controller/User.php

223 lines
7.0 KiB
PHP

<?php
namespace app\index\controller;
use app\common\controller\Frontend;
use fast\Random;
use fast\third\Application;
use fast\ucenter\client\Client;
use think\Config;
use think\Cookie;
use think\Loader;
/**
* 会员中心
*/
class User extends Frontend
{
// 使用布局
protected $layout = 'bootstrap';
protected $noNeedLogin = ['*'];
public function _initialize()
{
parent::_initialize();
//导入UC常量
Loader::import('uc', APP_PATH);
}
public function index()
{
return $this->view->fetch();
}
/**
* 注册会员
*/
public function register()
{
$url = $this->request->get('url', '/');
if ($this->user->check())
$this->error(__('You\'ve logged in, do not login again'), $url);
if ($this->request->isPost())
{
$username = $this->request->post('username');
$password = $this->request->post('password');
$repassword = $password;
$email = $this->request->post('email');
$captcha = $this->request->post('captcha');
if (!captcha_check($captcha))
{
$this->error(__('Captcha is incorrect'));
}
if ($this->user->register($username, $password, $email))
{
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$synchtml = $uc->uc_user_synregister($this->user->id, $password);
}
$referer = Cookie::get('referer_url');
$this->success(__('Sign up successful') . $synchtml, $url);
}
else
{
$this->error($this->user->getError());
}
}
return $this->view->fetch();
}
/**
* 会员登录
*/
public function login()
{
$url = $this->request->get('url', '/');
if ($this->user->check())
$this->error(__('You\'ve logged in, do not login again'), $url);
if ($this->request->isPost())
{
$account = $this->request->post('account');
$password = $this->request->post('password');
// $captcha = $this->request->post('captcha');
// if (!captcha_check($captcha))
// {
// $this->error(__('Captcha is incorrect'));
// }
if ($this->user->login($account, $password))
{
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$synchtml = $uc->uc_user_synlogin($this->user->id);
}
$this->success(__('Logged in successful') . $synchtml, $url);
}
else
{
$this->error($this->user->getError());
}
}
return $this->view->fetch();
}
/**
* 注销登录
*/
function logout()
{
//注销本站
$this->user->logout();
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$synchtml = $uc->uc_user_synlogout();
}
$this->success(__('Logout successful') . $synchtml, '/');
}
/**
* 第三方登录跳转和回调处理
*/
public function third()
{
$action = $this->request->param('action');
$platform = $this->request->param('platform');
$config = Config::get('third');
if (!isset($config[$platform]))
{
$this->error(__('Invalid parameters'));
return;
}
$thirdapp = new Application();
if ($action == 'redirect')
{
// 跳转到登录授权页面
$this->redirect($thirdapp->{$platform}->getAuthorizeUrl());
}
else if ($action == 'callback')
{
// 授权成功后的回调
$result = $thirdapp->{$platform}->getUserInfo();
if ($result)
{
$loginret = $this->user->connect($platform, $result);
if ($loginret)
{
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$synchtml = $uc->uc_user_synlogin($this->user->id);
}
$this->success(__('Logged in successful') . $synchtml, '/');
return;
}
}
$this->error(__('Operation failed'), 'user/login');
}
else
{
$this->error(__('Invalid parameters'));
}
return;
}
/**
* 修改密码
*/
public function changepwd()
{
if ($this->request->isPost())
{
$oldpassword = $this->request->post("oldpassword");
$newpassword = $this->request->post("newpassword");
//判断旧密码是否正确
if ($this->user->password == $this->user->getEncryptPassword($oldpassword, $this->user->salt))
{
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$ret = $uc->uc_user_edit($this->user->id, $this->user->username, $newpassword, $this->user->email, $this->user->mobile);
// 如果小于0则说明发生错误
if ($ret < 0)
{
$this->error(__('Change password failure'));
}
}
$salt = Random::alnum();
$newpassword = $this->user->getEncryptPassword($newpassword, $salt);
$this->user->save(['password' => $newpassword, 'salt' => $salt]);
$this->user->logout();
$synchtml = '';
////////////////同步到Ucenter////////////////
if (defined('UC_STATUS') && UC_STATUS)
{
$uc = new Client();
$synchtml = $uc->uc_user_synlogout();
}
$this->success(__('Change password successful') . $synchtml, "user/login");
}
else
{
//旧密码不正确
$this->error(__('Password is incorrect'));
}
}
return $this->view->fetch();
}
}