mirror of
https://github.com/PGYER/codefever.git
synced 2026-05-07 14:07:53 +08:00
50 lines
1.4 KiB
PHP
Executable File
50 lines
1.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace service\AccessControl;
|
|
|
|
use service\Network\Request;
|
|
use service\Network\Response;
|
|
|
|
class APIAuth
|
|
{
|
|
const AUTH_TYPE_WEB_USER = 'web_user';
|
|
const AUTH_TYPE_ADMIN_WEB_USER = 'web_admin_user';
|
|
const AUTH_TYPE_GATEWAY = 'internal_gateway';
|
|
private static $CI;
|
|
|
|
static function auth(array $authTypes)
|
|
{
|
|
if (in_array(self::AUTH_TYPE_GATEWAY, $authTypes)) {
|
|
if ((string) Request::parse()->token === (string) YAML_GATEWAY_TOKEN) {
|
|
Request::setAuthData([]);
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
if (in_array(self::AUTH_TYPE_WEB_USER, $authTypes)) {
|
|
self::$CI = &get_instance();
|
|
$userData = self::$CI->session->userdata;
|
|
$uKey = $userData['userInfo']['u_key'];
|
|
|
|
if ($uKey) {
|
|
self::$CI->load->model('User_model', 'userModel');
|
|
$userInfo = self::$CI->userModel->get($uKey);
|
|
|
|
if ($userInfo) {
|
|
Request::setAuthData(['userData' => $userInfo]);
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (in_array(self::AUTH_TYPE_ADMIN_WEB_USER, $authTypes)) {
|
|
$userInfo = Request::parse()->authData['userData'];
|
|
if ($userInfo['u_admin']) {
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
Response::reject(0x0101);
|
|
}
|
|
}
|