feat: 项目基础框架+配置+Kernel

This commit is contained in:
testadmin
2026-04-29 05:35:00 +08:00
parent 6ce7adcbfb
commit 9a6151fce3
5082 changed files with 437062 additions and 0 deletions
+115
View File
@@ -0,0 +1,115 @@
<?php
namespace App\Http\Middleware;
use App\Admin;
use App\AdminModuleAction;
use App\AdminRole;
use App\AdminRolePermission;
use Closure;
use Illuminate\Support\Facades\Route;
class AdminAuthenticate
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$admin = session()->get('admin_username');
if (empty($admin)) {
//return response()->json(['error' => '999', 'message' => '请先登录']);
return redirect('/superdad');
}
// if (Session::getId()!=Auth::user()->last_session){
// }
$admin_user = Admin::where('username', $admin)->select()->first();
if(session() -> getId() != $admin_user -> session_id){
session()->put('admin_username', '');
session()->put('admin_id', '');
session()->put('admin_role_id','');
session()->put('admin_is_super', '');
return redirect('/superdad');
}
$admin_role = AdminRole::where('id', $admin_user->role_id)->first();
$admin_permit = AdminRolePermission::where('role_id', $admin_user->role_id)->get();
$arr = [];
foreach ($admin_permit as $v) {
$arr[] = $v['action'];
if ($v['action'] == 'admin/user/list') {
$arr[] = 'admin/user/cash_info';
$arr[] = 'admin/user/cash_info_international';
}
if ($v['action'] == 'admin/invite/childs') { // 可以查看关系图时也要赋下面的权限
$arr[] = 'admin/invite/getTop';
$arr[] = 'admin/invite/getSon';
}
if ($v['action'] == 'admin/micro_order') {
$arr[] = 'admin/micro_order_list';
}
if ($v['action'] == 'admin/deposit/config/view') {
$arr[] = 'admin/deposit/config';
}
if ($v['action'] == 'admin/currency/deposit_order') {
$arr[] = 'admin/currency/deposit_order/list';
}
if ($v['action'] == 'admin/bind_box/index') {
$arr[] = 'admin/bind_box/list';
}
if ($v['action'] == 'admin/bind_box/order') {
$arr[] = 'admin/bind_box/orderList';
}
if ($v['action'] == 'admin/bind_box/quotation') {
$arr[] = 'admin/bind_box/quotationList';
}
if ($v['action'] == 'admin/bind_box/rarity_house') {
$arr[] = 'admin/bind_box/rarity_house_list';
}
if ($v['action'] == 'admin/bind_box/success_order') {
$arr[] = 'admin/bind_box/success_order_list';
}
if ($v['action'] == 'admin/dual/index') {
$arr[] = 'admin/dual_list';
}
if ($v['action'] == 'admin/dual/order') {
$arr[] = 'admin/dual/order_lists';
}
if ($v['action'] == 'admin/currency') {
$arr[] = 'admin/currency_list';
}
if ($v['action'] == 'admin/currency/match') {
$arr[] = 'admin/currency/match_list';
}
if ($v['action'] == 'admin/currency/project/view') {
$arr[] = 'admin/currency/project/list';
}
if ($v['action'] == 'admin/user/charge_req') {
$arr[] = 'admin/user/charge_list';
}
if ($v['action'] == 'admin/wallet/index') {
$arr[] = 'admin/wallet/list';
}
}
// print_r($arr);exit();
$name = Route::getCurrentRoute()->uri();
if ($admin_role['is_super'] != 1 && (!in_array($name, $arr))) {
//return response()->json(['type'=>'997','message'=>'权限不够!']);
if($request->ajax()){
return response()->json(['type'=>'997','message'=>'权限不够!']);
}
abort(403, '权限不够');
}
//dd($name);
return $next($request);
}
}
+44
View File
@@ -0,0 +1,44 @@
<?php
namespace App\Http\Middleware;
use App\Agent;
use Closure;
class AgentAuth
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
// public function handle($request, Closure $next) {
// if ($request->session()->has('access_token')) {
// $access_token = $request->session()->get('access_token');
// if ($request->input('access_token') != $access_token){
// return response()->json(['code' => 1001, 'msg' => '登录超时']);
// }else{
// return $next($request);
// }
// }else{
// return response()->json(['code' => 1001, 'msg' => '登录超时']);
// }
// }
public function handle($request, Closure $next)
{
$agent_id = session()->get('agent_id');
if (empty($agent_id)) {
return redirect('/agent');
}
$agent = Agent::where('id', $agent_id)->first();
if (!$agent or $agent['is_lock'] == 1) {
return redirect('/agent');
}
return $next($request);
}
}
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Middleware;
use App\Users;
use App\Token;
use Closure;
use Session;
use Illuminate\Support\Facades\Auth;
class CheckApi
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
$token = Token::getToken();
// var_dump($token);
$user_id = Token::getUserIdByToken($token);
// var_dump($user_id);die;
// return response()->json(['user_id' => $user_id, 'message' => $token]);
// if (empty($user_id) || ($user_id != session('user_id'))){
// return response()->json(['type' => '999', 'message' => '请先登录']);
// }
// print($token.'--------------'.$user_id);
// file_put_contents("log.txt", $token.'--------------'.$user_id . PHP_EOL);
if (empty($user_id)) {
$message = str_replace('massage.', '', __("massage.请登录"));
return response()->json(['type' => '999', 'message' => $message]);
}
// if ($user_id != session('user_id')){
// return response()->json(['type'=>'999','message'=>'请先登录']);
// }
// echo $user_id;
// $request->attributes->add(['user_id' => $user_id]);//添加参数
// session(['user_id' => $user_id]);
return $next($request);
//->header('Access-Control-Allow-Origin', '*')
// ->header('Access-Control-Allow-Credentials', 'true');
}
}
+47
View File
@@ -0,0 +1,47 @@
<?php
namespace App\Http\Middleware;
use App\Users;
use App\Setting;
use Closure;
use App\UserReal;
class CheckUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$value = Setting::getValueByKey('realname');
$user_id = Users::getUserId();
$user_real = UserReal::where('user_id',$user_id)->first();
$users=Users::where('id',$user_id)->first();
if(empty($user_real) && $value){
$message='请实名认证';
$message=str_replace('massage.', '', __("massage.$message"));
return response()->json(['type' => '998', 'message' =>$message]);
}
if(!empty($user_real)){
if ($user_real->review_status != 2 && $value){
return response()->json(['type' => 'error', 'message' => '您的实名认证还未通过!']);
}
}
if($users->frozen_funds == 1){
$message='您好,您的资金已被锁定,详情请咨询客服。';
$message=str_replace('massage.', '', __("massage.$message"));
return response()->json(['type' => 'error', 'message' => $message]);
}
return $next($request);
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
class Cross
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Access-Control-Allow-Origin', '*');
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN,lang,1min');
$response->header('Access-Control-Expose-Headers', 'Authorization, authenticated,lang,1min');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
$response->header('Access-Control-Allow-Credentials', 'false');
return $response;
// return $next($request)->header('Access-Control-Allow-Origin', '*')
// ->header('Access-Control-Allow-Credentials', 'true');
}
}
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Closure;
class DemoLimit
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$demo_mode = config('app.demo_mode');
if ($demo_mode == 1) {
if ($request->ajax()) {
return response()->json([
'type' => 'error',
'message' => '模拟系统禁用此功能',
]);
} else {
abort(403, '模拟系统禁用此功能');
}
}
return $next($request);
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next){
$response = $next($request);
$origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
$allow_origin = [
'https://www.tronlink.vip/',
'https://m.tronlink.vip/',
];
/*
if (in_array($origin, $allow_origin)) {
$response->header('Access-Control-Allow-Origin', $origin);
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
$response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
$response->header('Access-Control-Allow-Credentials', 'true');
}
*/
return $response;
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Middleware;
use Closure;
use App\Users;
use App\LeverTransaction;
class HoldCheck
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user_id = Users::getUserId();
$exist_close_trade = LeverTransaction::where('user_id', $user_id)->whereNotIn('status', [LeverTransaction::CLOSED, LeverTransaction::CANCEL])->count();
if ($exist_close_trade > 0) {
$message = str_replace('massage.', '', __("massage.操作失败:您有未平仓的交易,操作禁止"));
return response()->json([
'type' => 'error',
'message' => $message
]);
}
return $next($request);
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Middleware;
use App\Users;
use Closure;
use App\UserReal;
class IsLock
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user_id = Users::getUserId();
//判断是否锁定账户 3.12 by t
$users=Users::where('id',$user_id)->first();
if ($users->status == 1){//1锁定 0不锁定
return response()->json(['type' => 'error', 'message' => '您处于锁定状态!']);
}
return $next($request);
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Session;
class Language
{
/**
* @param $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$lang = $request->get('lang', 'en');
session()->put('lang', $lang);
//$lang = session('lang', 'zh');
App::setLocale($lang);
return $next($request);
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace App\Http\Middleware;
use App\Setting;
use Closure;
use App\Users;
use App\LeverTransaction;
use Illuminate\Support\Facades\DB;
class ScoreLimit
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user_id = Users::getUserId();
$user = DB::table('users')->find($user_id);
$score_limit = Setting::getValueByKey('score_withdraw_limit');
if ($user->score < $score_limit){
$message = str_replace('massage.', '', __("massage.操作失败:您的信用分不足",['source'=>$score_limit]));
return response()->json([
'type' => 'error',
'message' => $message//'操作失败:您的信用分不足' . $score_limit
]);
}
return $next($request);
}
}
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies;
/**
* The current proxy header mappings.
*
* @var array
*/
protected $headers = [
Request::HEADER_FORWARDED => 'FORWARDED',
Request::HEADER_X_FORWARDED_FOR => 'X_FORWARDED_FOR',
Request::HEADER_X_FORWARDED_HOST => 'X_FORWARDED_HOST',
Request::HEADER_X_FORWARDED_PORT => 'X_FORWARDED_PORT',
Request::HEADER_X_FORWARDED_PROTO => 'X_FORWARDED_PROTO',
];
}
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Middleware;
use Closure;
use App\Users;
class ValidateUserLocked
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user_id = Users::getUserId();
$user = Users::find($user_id);
if ($user) {
if ($user->status == 1 && $user->lock_time > time()) {
return response()->json(['type' => 'error', 'message' => 'アカウントは現在凍結されており、この機能をご利用いただけません。']);
}
// return response()->json(['type' => 'error', 'message' => '账号锁定中,' . date('Y-m-d H:i:s', $user->lock_time) . '前不能进行此操作']);
// アカウントは現在凍結されており、この機能をご利用いただけません。
} else {
$message = str_replace('massage.', '', __("massage.请登录"));
return response()->json(['type' => '999', 'message' => $message]);
}
return $next($request);
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class XSS
{
public function handle(Request $request, Closure$next)
{
$input = $request->all();
array_walk_recursive($input,function(&$input) {
$input = strip_tags($input);
});
$request->merge($input);
return $next($request);
}
}