gdoo/app/Gdoo/User/Controllers/TokenController.php

92 lines
2.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php namespace Gdoo\User\Controllers;
use Auth;
use Session;
use Request;
use App\Support\JWT;
use Gdoo\User\Models\User;
use Gdoo\Index\Models\Access;
use Gdoo\Index\Controllers\Controller;
use Gdoo\User\Services\UserAssetService;
class TokenController extends Controller
{
protected function createToken($userId)
{
$payload = array(
'sub' => $userId,
'iat' => time(),
// 一年有效
'exp' => time() + (365 * 24 * 60 * 60),
);
return JWT::encode($payload, config('app.key'));
}
/**
* APP登录
*/
public function login()
{
if (Request::isJson()) {
$gets = json_decode(Request::getContent(), true);
} else {
$gets = Request::all();
}
if (empty($gets['username'])) {
return ['message'=>'账户不能为空。','success'=>false];
}
if (empty($gets['password'])) {
return ['message'=>'密码不能为空。','success'=>false];
}
$credentials = [
'username' => $gets['username'],
'password' => $gets['password'],
'status' => 1
];
if (Auth::validate($credentials)) {
$user = User::where('username', $gets['username'])->first();
if ($user['auth_device']) {
if (empty($gets['deviceId'])) {
return ['message'=>'设备ID不能为空。','success'=>false];
}
// 设备ID为空时自动绑定
if ($user['auth_device_id'] == '') {
$user->auth_device_id = $gets['deviceId'];
} else {
// 存在设备ID检查是否匹配
$auth_device_id = explode(PHP_EOL, $user['auth_device_id']);
if (in_array($gets['deviceId'], $auth_device_id) == false) {
return ['message'=>'设备ID错误请联系相关人员。','success'=>false];
}
}
}
// 保存用户表数据
$user->save();
$assets = UserAssetService::getRoleAssets($user->role_id);
return [
'user' => $user,
'token' => $this->createToken($user->id),
'access' => $assets,
'success' => 1,
];
}
return ['message'=>'账户或密码错误。', 'success'=>false];
}
public function logout()
{
return '注销完成。';
}
}