81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						|
 | 
						|
namespace app\controller\manager;
 | 
						|
 | 
						|
use app\service\Jwt;
 | 
						|
use Exception;
 | 
						|
use app\model\{Member, LoginLog};
 | 
						|
use app\controller\BaseController;
 | 
						|
use think\response\Json;
 | 
						|
use think\response\View;
 | 
						|
 | 
						|
class Login extends BaseController
 | 
						|
{
 | 
						|
    protected $noNeedLogin = ['index'];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return View|Json
 | 
						|
     * @throws Exception
 | 
						|
     */
 | 
						|
    public function index()
 | 
						|
    {
 | 
						|
        if (request()->isPost()) {
 | 
						|
            $param    = input('post.data');
 | 
						|
            $username = trim($param['username']);
 | 
						|
            $password = trim($param['password']);
 | 
						|
            $captcha  = trim($param['captcha'] ?? '');
 | 
						|
            if (!captcha_check($captcha)) {
 | 
						|
                return $this->json(4001, '验证码错误'.$captcha);
 | 
						|
            }
 | 
						|
 | 
						|
            if (empty($username) || empty($password)) {
 | 
						|
                return $this->json(4001, '用户名和密码不能为空');
 | 
						|
            }
 | 
						|
            $member = Member::getByUserName($username);
 | 
						|
            if (empty($member)) {
 | 
						|
                return $this->json(4002, '用户名或密码错误');
 | 
						|
            }
 | 
						|
            if ($member['password'] != md5($password.$username)) {
 | 
						|
                return $this->json(4003, '用户名或密码错误');
 | 
						|
            }
 | 
						|
            if ($member['status'] != Member::STATUS_NORMAL) {
 | 
						|
                return $this->json(4004, '账号已被禁用');
 | 
						|
            }
 | 
						|
 | 
						|
            $userInfo = [
 | 
						|
                'user_id'    => $member['id'],
 | 
						|
                'username'   => $member['username'],
 | 
						|
                'nickname'   => $member['nickname'],
 | 
						|
                'is_teacher' => $member['is_teacher'],
 | 
						|
                'account_id' => $member['account_id'],//绑定的前台用户ID
 | 
						|
            ];
 | 
						|
 | 
						|
            $jwtToken = Jwt::generate($userInfo, env('app.expire', 7200));
 | 
						|
 | 
						|
            $userInfo['token'] = $jwtToken;//jwt生成token
 | 
						|
 | 
						|
            //记录最后登陆时间
 | 
						|
            $ip   = request()->ip();
 | 
						|
            $time = time();
 | 
						|
            Member::updateById($member['id'], [
 | 
						|
                'login_time' => $time,
 | 
						|
                'login_ip'   => $ip
 | 
						|
            ]);
 | 
						|
            LoginLog::create([
 | 
						|
                'member_id'   => $member['id'],
 | 
						|
                'name'        => $member['username'],
 | 
						|
                'ip'          => $ip,
 | 
						|
                'create_time' => $time
 | 
						|
            ]);
 | 
						|
            session('auth', $userInfo);
 | 
						|
            return $this->json(0, 'success', ['url' => '/manager']);
 | 
						|
        }
 | 
						|
 | 
						|
        $viewData = [];
 | 
						|
        \think\facade\Config::load('extra/base', 'base');
 | 
						|
        $config                 = config('base');
 | 
						|
        $viewData['loginTitle'] = $config['login_title'] ?? '大向天诚商城管理系统';
 | 
						|
        return view()->assign($viewData);
 | 
						|
    }
 | 
						|
}
 |