62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
<?php
 | 
						|
 | 
						|
namespace app\controller;
 | 
						|
 | 
						|
use app\model\AuthRule;
 | 
						|
use app\model\LoginLog;
 | 
						|
use app\model\Member;
 | 
						|
use app\service\Jwt;
 | 
						|
 | 
						|
class ApiManager extends Base
 | 
						|
{
 | 
						|
    public function index()
 | 
						|
    {
 | 
						|
//        $jwtData = [
 | 
						|
//            'member_id'     => "11",
 | 
						|
//        ];
 | 
						|
//        $token =  Jwt::generate($jwtData);
 | 
						|
 | 
						|
        $token = input("token/s","");
 | 
						|
        $userInfo = Jwt::parse($token);//token中携带的简易用户信息
 | 
						|
        if(empty($userInfo)||!array_key_exists("member_id",$userInfo)){
 | 
						|
            return $this->json(4001,"无效请求");
 | 
						|
        }
 | 
						|
        $member = Member::getById($userInfo["member_id"]);
 | 
						|
        if(empty($member)){
 | 
						|
            return $this->json(4001,"用户不存在");
 | 
						|
        }
 | 
						|
 | 
						|
        //执行登录
 | 
						|
        $rulesList = AuthRule::userRolesList($member['group_id']);
 | 
						|
        $rulesIdStr = '';
 | 
						|
        if (!empty($rulesList)) {
 | 
						|
            $rulesId = $rulesList['allRulesId'];
 | 
						|
            $rulesIdStr = implode(',', $rulesId);
 | 
						|
        }
 | 
						|
        $authSession = [
 | 
						|
            'userId' => $member['id'],
 | 
						|
            'userName' => $member['username'],
 | 
						|
            'groupId' => $member['group_id'],
 | 
						|
            'rules' => $rulesIdStr,
 | 
						|
            'cates' => $member['cates']
 | 
						|
        ];
 | 
						|
 | 
						|
        //记录最后登陆时间
 | 
						|
        $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', $authSession);
 | 
						|
 | 
						|
        return $this->redirect("/manager");
 | 
						|
    }
 | 
						|
 | 
						|
} |