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

92 lines
2.5 KiB
PHP

<?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 '注销完成。';
}
}