Commit f2b10f4d authored by zhoujun's avatar zhoujun

初始版本

parent e2e9b270
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
/node_modules
/public/hot
/public/storage
/public/.htaccess
/public/*.htaccess
/storage/*.key
/storage/logs/*
/vendor
.env
.env.backup
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
php:
preset: laravel
disabled:
- unused_use
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true
<?php
namespace App\Aldzn;
use Illuminate\Database\Eloquent\Model;
class UserCoupon extends Model
{
protected $connection = 'aldzn_data';
protected $table = "game_user_coupon";
public $timestamps = false;
}
<?php
namespace App\Aldzn;
use Illuminate\Database\Eloquent\Model;
class UserForbid extends Model
{
protected $connection = 'aldzn_data';
protected $table = "forbid_users";
public $timestamps = false;
}
<?php
namespace App\Aldzn;
use Illuminate\Database\Eloquent\Model;
class UserRefund extends Model
{
protected $connection = 'aldzn_data';
protected $table = "game_user_refund";
public $timestamps = false;
}
<?php
namespace App\Aldzn;
use Illuminate\Database\Eloquent\Model;
class UserTotalPay extends Model
{
protected $connection = 'aldzn_data';
protected $table = "game_user_total_pay";
public $timestamps = false;
}
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Aldzn\UserTotalPay;
use App\Aldzn\UserCoupon;
use App\Aldzn\UserRefund;
use App\Aldzn\UserForbid;
class Calculate_refund extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'calc:refund';
/**
* The console command description.
*
* @var string
*/
protected $description = '计算阿拉德之怒玩家退款';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->info("start processing");
UserTotalPay::orderBy("ouid")->chunk(100, function ($payRows) {
foreach ($payRows as $payRow) {
$channel = $payRow['channel_id'];
$ouid = $payRow['ouid'];
$refund = UserRefund::where('channel_id', $channel)->where("ouid", $ouid)->first(['id']);
if (!empty($refund)) {
continue;
}
$this->line($channel ." -> " . $ouid);
$totalPay = UserTotalPay::where("channel_id", $channel)->where("ouid", $ouid)->sum('total_payamount');
$coupon = UserCoupon::where("channel_id", $channel)->where("ouid", $ouid)->sum('coupon');
$unblock = UserForbid::where("channel", $channel)->where("accid", $ouid)->value('unblock');
$isBlock = 0;
if ($unblock === 0) {
$isBlock = 1;
}
$oCoin = 0;
if ($coupon > 0) {
$oCoin = ceil($coupon / 10);
}
if ($oCoin > $totalPay) {
$oCoin = ceil($totalPay);
}
if ($isBlock == 1) {
$oCoin = 0;
}
$userRefund = new UserRefund();
$userRefund->platform_id = $payRow['platform_id'];
$userRefund->channel_id = $channel;
$userRefund->ouid = $ouid;
$userRefund->coupon = $coupon;
$userRefund->total_pay = $totalPay;
$userRefund->is_block = $isBlock;
$userRefund->o_coin = $oCoin;
$userRefund->save();
}
});
$this->info("All done");
}
}
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Aldzn\UserTotalPay;
use App\Aldzn\UserCoupon;
use App\Aldzn\UserRefund;
use App\Aldzn\UserForbid;
class SearchRefund extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'search:refund {channel : 渠道ID} {ouid : 账号ID}';
/**
* The console command description.
*
* @var string
*/
protected $description = '查询阿拉德玩家退款';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$channel = $this->argument('channel');
$ouid = $this->argument('ouid');
$refund = UserRefund::where('channel_id', $channel)->where("ouid", $ouid)->first(['id']);
if (!empty($refund)) {
$this->line("历史数据");
$this->info(json_encode($refund, JSON_PRETTY_PRINT));
return;
}
$payRow = UserTotalPay::where("channel_id", $channel)->where("ouid", $ouid)->first();
$this->line($channel ." -> " . $ouid);
$totalPay = UserTotalPay::where("channel_id", $channel)->where("ouid", $ouid)->sum('total_payamount');
$coupon = UserCoupon::where("channel_id", $channel)->where("ouid", $ouid)->sum('coupon');
$unblock = UserForbid::where("channel", $channel)->where("accid", $ouid)->value('unblock');
$isBlock = 0;
if ($unblock === 0) {
$isBlock = 1;
}
$oCoin = 0;
if ($coupon > 0) {
$oCoin = ceil($coupon / 10);
}
if ($oCoin > $totalPay) {
$oCoin = ceil($totalPay);
}
if ($isBlock == 1) {
$oCoin = 0;
}
$userRefund = new UserRefund();
$userRefund->platform_id = $payRow['platform_id'] ?? '';
$userRefund->channel_id = $channel;
$userRefund->ouid = $ouid;
$userRefund->coupon = $coupon;
$userRefund->total_pay = $totalPay;
$userRefund->is_block = $isBlock;
$userRefund->o_coin = $oCoin;
$userRefund->save();
$this->info(json_encode($userRefund, JSON_PRETTY_PRINT));
}
}
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
<?php
namespace App\Exceptions;
use Illuminate\Session\TokenMismatchException;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* @param \Exception $exception
* @return void
*
* @throws \Exception
*/
public function report(Exception $exception)
{
parent::report($exception);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Symfony\Component\HttpFoundation\Response
*
* @throws \Exception
*/
public function render($request, Exception $exception)
{
if ($exception instanceof TokenMismatchException) {
$exception = new TokenMismatchException("网络异常,请稍后刷新重试");
}
if ($exception instanceof \ErrorException) {
return redirect(route("login"));
}
return parent::render($request, $exception);
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Exception;
use Carbon\Carbon;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
use App\Models\WxAdmin;
use App\Models\WxUserImg;
use App\Models\User;
use App\Models\WxAldGift;
use App\Models\WxBindRole;
class AdminController extends Controller
{
private $time;
public function __construct()
{
$this->time = Carbon::now()->format('Y-m-d H:i:s');
}
/**
* 后台登陆页
* @date 2021/06/02
* @author live
*/
public function getLogin()
{
$data['ERROR'] = Session::get('error','');
return $this->view('admin.login',$data);
}
/**
* 用户登录页提交
* @date 2021/06/02
* @author live
*/
public function getPostLogin(Request $request)
{
$postData = $request->all();
if( Auth::check()) return redirect(route('checkImg'));
if($request->isMethod('post'))
{
if (Auth::attempt(['name' => $postData['username'], 'password' => $postData['password']]))
{
return redirect(route('checkImg'))->with( 'success', '登录成功,明信片审核后台欢迎你!' );
}else{
$error = '用户名或密码不正确!';
}
}else{
$error = '非法登录!';
}
return redirect(route('adminLogin'))->with( 'error', $error );
}
/**
* 用户上传图片列表
* @date 2021/06/02
* @author live
*/
public function getImgList(Request $request)
{
$array = [];
$roles = WxBindRole::get();
foreach($roles as $role){
$tem[0] = $role->uid;
$tem[1] = $role->server_id;
$tem[2] = $role->server_name;
$tem[3] = '\''.(string)$role->role_id;
$tem[4] = $role->role_name;
$tem[5] = $role->user_id;
$tem[6] = $role->channel;
$array[$role->uid] = $tem;
}
$title = ['用户ID','服务器ID','服务器名称','角色ID','角色名称','阿拉德用户ID','渠道'];
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=dataUser.xls");
echo "<table><tr>";
foreach($title as $ti){
echo "<th>".$ti."</th>";
}
echo "</tr>";
foreach($array as $val){
echo "<tr>";
foreach($val as $v){
echo "<td>".$v."</td>";
}
echo "</tr>";
}
echo "</table>";
exit();
$postData = $request->all();
$pageNum = 20;
$startTime = $postData['startTime'] ?? '';
$endTime = $postData['endTime'] ?? '';
$status = $postData['status'] ?? 0;
$userName = $postData['user'] ?? '';
$paginateAppends['status'] = $status;
$lists = WxUserImg::when($userName != '', function ($query) use ($userName) {
$user = User::where('account',$userName)->select('uid')->first();
if($user){
return $query->where('uid',$user->uid);
}else{
return $query->where('uid','-1');
}
})->when($startTime != '', function ($query) use ($startTime) {
return $query->where('updated_at','>',$startTime);
})->when($endTime != '', function ($query) use ($endTime) {
return $query->where('updated_at','<',$endTime);
})->where('status',$status)->orderBy('id','ASC')->select('id', 'uid', 'img_url', 'status', 'updated_at')->paginate($pageNum);
if($startTime != '') $paginateAppends['startTime'] = $startTime;
if($endTime != '') $paginateAppends['endTime'] = $endTime;
if($userName != '') $paginateAppends['user'] = $userName;
if (!empty($paginateAppends)) $lists->appends($paginateAppends);
$userInfo = [];
$uids = [];
foreach($lists as $list) $uids[] = $list->uid;
if(!empty($uids)){
$users = User::whereIn('uid',$uids)->select('uid','account')->get();
foreach($users as $user) $userInfo[$user->uid] = $user->account;
}
$data['LIST'] = $lists;
$data['SEARCH'] = $postData;
$data['USER_INFO'] = $userInfo;
return $this->view('admin.img', $data);
}
/**
* 审核图片
* @date 2021/06/02
* @author live
*/
public function getSaveStatus(Request $request)
{
$postData = $request->all();
$id = $postData['id'] ?? 0;
$status = $postData['status'];
if($id < 1 || !in_array($status,[1,2])) return $this->getErrorMsg('10060', '参数错误');
$row = WxUserImg::find($id);
if(!$row) return $this->getErrorMsg('10061', '数据异常');
if($row->status > 0) return $this->getErrorMsg('10062', '请勿重复审核');
$row->status = $status;
if($row->save()) return $this->getSuccessMsg([]);
return $this->getErrorMsg('10063', '审核失败');
}
}
\ No newline at end of file
This diff is collapsed.
<?php
namespace App\Http\Controllers\Card;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Exception;
use Carbon\Carbon;
use Illuminate\Validation\Rule;
class HomeController extends Controller
{
private $time;
public function __construct()
{
$this->time = Carbon::now()->format('Y-m-d H:i:s');
}
/**
* 生涯明信片首页
* @date 2021/05/31
* @author live
*/
public function getHome(Request $request)
{
$data = [];
return view('card.index', $data);
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers\Card;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Exception;
use Carbon\Carbon;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Cache;
class WxController extends Controller
{
private $time;
private $appId;
private $appSecret;
public function __construct()
{
$this->time = Carbon::now()->format('Y-m-d H:i:s');
$this->appId = config('sign.WX_APPID');
$this->appSecret = config('sign.WX_AppSecret');
}
/**
* 生成微信分享参数
* @date 2021/06/04
* @author live
*/
public function getWxConfig(Request $request)
{
$jsapiTicket = $this->getJsApiTicket();
if(!$jsapiTicket) $this->jsonReturn(10070, '获取分享参数失败');
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$timestamp = time();
$nonceStr = $this->createNonceStr();
$string = 'jsapi_ticket='.$jsapiTicket.'&noncestr='.$nonceStr.'&timestamp='.$timestamp.'&url='.$url;
$signature = sha1($string);
$signPackage = array(
'appId' => $this->appId,
'nonceStr' => $nonceStr,
'timestamp' => $timestamp,
'url' => $url,
'signature' => $signature,
'rawString' => $string
);
return $this->jsonReturn(0, '微信分享参数',$signPackage);
}
/**
* 生成随机字符串
* @date 2021/06/04
* @author live
*/
public function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
/**
* 处理分享ticket
* @date 2021/06/04
* @author live
*/
public function getJsApiTicket() {
if(Cache::has('wx_share_jsapi_ticket')){
$ticket = Cache::get('wx_share_jsapi_ticket');
}else{
$accessToken = $this->getAccessToken();
if(!$accessToken) return false;
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token='.$accessToken;
$res = json_decode(file_get_contents($url));
$ticket = $res->ticket;
if ($ticket) {
Cache::put('wx_share_jsapi_ticket',$ticket,7000);
}else{
return false;
}
}
return $ticket;
}
/**
* 获取分享token
* @date 2021/06/04
* @author live
*/
public function getAccessToken() {
if(Cache::has('wx_share_access_token')){
$accessToken = Cache::get('wx_share_access_token');
}else{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appId.'&secret='.$this->appSecret;
$res = json_decode(file_get_contents($url));
$accessToken = $res->access_token;
if($accessToken) {
Cache::put('wx_share_access_token',$accessToken,7000);
}else{
return false;
}
}
return $accessToken;
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use DispatchesJobs, ValidatesRequests;
protected function jsonReturn($error, $msg, $data=NULL)
{
$result['error'] = $error;
$result['message'] = $msg;
$result['data'] = $data;
return response()->json($result);
}
protected function errorAbort($errorCode, $errorMessage)
{
$viewData = [
"error_code" => $errorCode,
"error_message" => $errorMessage,
];
return view("error.general", $viewData);
}
public function getClientRealIP()
{
$address = '';
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$address = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else {
$address = $_SERVER['REMOTE_ADDR'];
}
if ($address === "") {
$address = '0.0.0.0';
return $address;
}
if (strpos($address, ',') !== FALSE) {
$x = explode(',', $address);
$address = trim(current($x));
}
return $address;
}
protected function getSuccessMsg($data = array(), $msg = '操作成功', $needObject = true, $code = '200')
{
return response()->json([
'code' => $code,
'msg' => $msg,
'data' => $data ? $data : ($needObject ? (object)array() : []),
]);
}
protected function getErrorMsg($code = '', $msg = '')
{
return response()->json([
'code' => $code,
'msg' => $msg,
]);
}
protected function view( $name, $data = array() )
{
return view($name, $data);
}
}
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Exception;
use Carbon\Carbon;
class HomeController extends Controller
{
private $time;
public function __construct()
{
$this->time = Carbon::now()->format('Y-m-d H:i:s');
}
/**
* 跳到微信首页
* @date 2021/05/31
* @author live
*/
public function getIndex()
{
$data = [];
return view('index', $data);
}
}
\ No newline at end of file
<?php
namespace App\Http\Controllers\Platform;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Services\UtilService;
use App\Models\User;
use App\Models\UserExtra;
use App\Services\AldGmService;
use Illuminate\Support\Facades\Redis;
use App\Models\AldGift;
use Illuminate\Support\Facades\Log;
class AldUserController extends Controller
{
public function login(Request $request)
{
$rules = [
"account" => "required",
"password" => "required|string|min:6",
];
$messages = [
'required' => "请填写完整,缺少参数",
'account.min' => "账号最少3位",
'password.min' => '密码最少6位',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->errors()->first()) {
return $this->jsonReturn(10033, $validator->errors()->first());
}
$account = $request->input('account');
$password = $request->input('password');
//是否已同步
$user = User::findByAccount($account);
if ($user && $user->reg_type != 22) {
return $this->jsonReturn(1009, "该账号已被其他玩家注册占用");
}
if (empty($user)) {
$data = array(
'account' => $account,
'pwd' => md5($password),
'appid' => 21,
);
$data['ip'] = $request->getClientIp();
$data['sign'] = UtilService::genSafeSign($data,'73*Vet43nDverw#$');
$res = UtilService::get_http_request('http://adapi.srccwl.com/account_ald/login', $data);
$ret = json_decode($res,true);
if (!isset($ret['ret']) || $ret['ret'] != 0) {
Log::info("aldzn MG login:" , $data);
Log::info("aldzn MG login resp:" . $res);
}
if($ret['ret'] == 0 && !empty($ret['data']['uid'])) {
//如果手机号已存在
$mobile = $ret['data']['mobile'];
if ($mobile) {
$mobileBindUser = User::findByMobile($mobile);
}else {
$mobileBindUser = null;
}
if (!empty($mobile) && $mobileBindUser) {
// return $this->jsonReturn(1007, "手机账号已被账号" . $mobileBindUser->account ."绑定过");
$mobile = '';
}
//同步用户数据
$user = new User();
$user->account = $ret['data']['username'];
$user->mobile = $mobile;
$user->password = md5($password);
$user->real_name = $ret['data']['realname'] ?? '';
$user->id_card = $ret['data']['idcard'] ?? '';
$user->time = $ret['data']['reg_time'];
$user->reg_type = 22; //MG同步用户
$user->reg_ip = $ret['data']['cip'];
$user->nick_name = $ret['data']['nickname'] ?? '';
$user->device_id = $ret['data']['equip'] ?? '';
$user->mac = $ret['data']['mac'] ?? '';
$saveRet = $user->save();
if ($saveRet) {
//保存密码强度
$userExtra = new UserExtra();
$userExtra->uid = $user->uid;
$userExtra->password_strength = UserExtra::getPasswordStrength($password);
$userExtra->save();
}else {
return $this->jsonReturn(1007, "网络异常,请稍后再试");
}
}else {
return $this->jsonReturn(1004, $ret['msg']);
}
}
if (!User::attemptLogin($user->account, $password)) {
return $this->jsonReturn(1002, "账号或密码错误");
}
$request->session()->put("uid", $user->uid);
$request->session()->put("account", $user->account);
return $this->jsonReturn(0, "登陆成功", ['next_url' => route("index")]);
}
public function getRoleList(Request $request)
{
$uid = $request->session()->get("uid");
if (empty($uid)) {
return $this->jsonReturn(1019, "登陆失效或未登陆,请重新登陆");
}
$userId = $request->input("userId");
$serverId = $request->input("serverId");
$userExtra = UserExtra::find($uid);
if (empty($userExtra->aldzn_info)) {
return $this->jsonReturn(4003, "请您先绑定Orange识别码后再来领取哦~");
}
$gmService = new AldGmService();
$aldzn_info = json_decode($userExtra->aldzn_info, true);
//修补没有serverId的数据
if (!isset($aldzn_info['serverId']) || empty($aldzn_info['serverId'])) {
$codeInfo = $gmService->checkBindCode($userExtra->udid);
if ($codeInfo) {
$userExtra->aldzn_info = json_encode($codeInfo);
$userExtra->save();
$aldzn_info = $codeInfo;
}
}
$serverId = $aldzn_info['serverId'];
$userId = $aldzn_info['userId'];
$channel = $aldzn_info['channel'];
$roleList = $gmService->getRoles($serverId, $userId, $channel);
if ($roleList === false) {
return $this->jsonReturn(7001, "网络异常,请稍后再试");
}
if (empty($roleList)) {
return $this->jsonReturn(7003, "该账号未找到角色数据");
}
$roleIdsKey = "user_roleIds:" . $uid;
Redis::set($roleIdsKey, json_encode($roleList));
Redis::expire($roleIdsKey, 3600 * 5);
return $this->jsonReturn(0, "角色列表", $roleList);
}
public function sendRoleGift(Request $request)
{
$uid = $request->session()->get("uid");
if (empty($uid)) {
return $this->jsonReturn(1019, "登陆失效或未登陆,请重新登陆");
}
$aldGift = AldGift::find($uid);
if (!empty($aldGift)) {
return $this->jsonReturn(1020, "礼包已发送过");
}
$roleId = $request->input("roleId");
$serverId = $request->input("serverId");
if (empty($roleId) || empty($serverId)) {
return $this->jsonReturn(7002, "参数错误");
}
$targetRole = [];
$roleIdsKey = "user_roleIds:" . $uid;
$roleList = json_decode(Redis::get($roleIdsKey), true);
if (!isset($roleList[$serverId])) {
return $this->jsonReturn(7003, "请选择正确的服务器");
}
foreach ($roleList[$serverId]['list'] as $role) {
if ($role['roleId'] == $roleId) {
$targetRole = $role;
break;
}
}
if (empty($targetRole)) {
return $this->jsonReturn(7004, "请刷新重新选择角色");
}
$gmService = new AldGmService();
$gmService->sendRoleGift($serverId, $roleId, $targetRole['vipLevel'], $targetRole['channel']);
$aldGift = new AldGift();
$aldGift->uid = $uid;
$aldGift->server_id = $serverId;
$aldGift->vip_level = $targetRole['vipLevel'];
$aldGift->channel = $targetRole['channel'];
$aldGift->role_id = $targetRole['roleId'];
$aldGift->role_name = $targetRole['roleName'];
$aldGift->user_id = $targetRole['userId'];
// $aldGift->user_name = $targetRole['userName'];
$aldGift->save();
return $this->jsonReturn(0, "请您移步游戏内角色邮箱领取礼包");
}
public function bindInfo(Request $request)
{
$uid = $request->session()->get("uid");
if (empty($uid)) {
return $this->jsonReturn(1019, "登陆失效或未登陆,请重新登陆");
}
$userExtra = UserExtra::find($uid);
if (empty($userExtra->aldzn_info)) {
return $this->jsonReturn(4003, "暂未绑定识别码");
}
$aldznInfo = json_decode($userExtra->aldzn_info, true);
$aldznInfo['bind_code'] = $userExtra->udid;
return $this->jsonReturn(0, "绑定信息", $aldznInfo);
}
}
<?php
namespace App\Http\Controllers\Platform;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Redis;
use App\Services\UtilService;
use App\Models\AldGift;
use App\Models\User;
use App\Models\UserExtra;
class HomeController extends Controller
{
public function showLoginForm(Request $request)
{
if($request->session()->get("uid")) return redirect(route("index"));
$data['isWx'] = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
return view("home.login",$data);
}
public function showRegisterForm(Request $request)
{
if($request->session()->get("uid")) return redirect(route("index"));
$data['isWx'] = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
return view("home.register",$data);
}
public function showFindPasswordForm(Request $request)
{
if($request->session()->get("uid")) return redirect(route("index"));
$viewData['kefuURL'] = '';
$viewData['isWx'] = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
return view("home.findPassword", $viewData);
}
public function showAldLoginForm(Request $request)
{
if($request->session()->get("uid")) return redirect(route("index"));
$data['isWx'] = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
return view("home.ald_login",$data);
}
}
<?php
namespace App\Http\Controllers\Platform;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Models\User;
use App\Models\UserExtra;
use App\Services\UtilService;
class PasswordController extends Controller
{
public function getback(Request $request)
{
$request->validate([
'phone' => 'required',
'auth_code' => 'required',
'new_password' => 'required',
]);
$phone = $request->input('phone');
if (!UtilService::isPhoneNum($phone)) {
$this->jsonReturn(10033, "手机号码错误");
}
$srvAuthCode = Cache::get("sms_auth_code:" . $phone);
if ($request->input("auth_code") != $srvAuthCode) { //验证码错误
return $this->jsonReturn(1003, "验证码错误");
}
$new_password = $request->input('new_password');
if ($phone == $new_password) {
return $this->jsonReturn(12001, "密码不可以是手机号");
}
$user = User::findByMobile($phone);
if (empty($user)) {
return $this->jsonReturn(11008, "手机号未绑定账号");
}
if ($user->account == $new_password) {
return $this->jsonReturn(12002, "密码不可以是帐号");
}
if ($user->password == User::encryptPassword($new_password)) {
return $this->jsonReturn(11007, "新旧密码相同");
}
$ret = User::changePassword($user->uid, $new_password);
if ($ret) {
//更新密码强度
$userExtra = UserExtra::find($user->uid);
if (empty($userExtra)) {
$userExtra = new UserExtra();
}
$userExtra->uid = $user->uid;
$userExtra->password_strength = UserExtra::getPasswordStrength($new_password);
$userExtra->save();
return $this->jsonReturn(0, "密码重置成功");
}else {
return $this->jsonReturn(11007, "操作失败");
}
}
}
<?php
namespace App\Http\Controllers\Platform;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Validator;
use App\Models\AldGift;
use App\Models\User;
use App\Models\UserExtra;
use App\Services\RealnameAuthService;
use Illuminate\Support\Facades\Log;
use App\Services\UtilService;
use App\Services\AldGmService;
use Illuminate\Support\Facades\Artisan;
use App\Aldzn\UserRefund;
class UserController extends Controller
{
public function login(Request $request)
{
$expire = 300;
$rules = [
"account" => "required",
"password" => "required|string|min:6",
];
$messages = [
'required' => "请填写完整,缺少参数",
'account.min' => "账号最少3位",
'password.min' => '密码最少6位',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->errors()->first()) {
return $this->jsonReturn(10033, $validator->errors()->first());
}
$blockIPKey = "block:" . $request->getClientIp();
$ipErrorNum = Cache::get($blockIPKey, 0);
if ($ipErrorNum >= 5) {
$this->jsonReturn(1009, "短时间内错误太多,请稍后再试");
}
$account = trim($request->input("account"));
$password = $request->input("password");
$user = User::findByAccount($account);
if (empty($user)) { //用户不存在
if (UtilService::isPhoneNum($account)) {
$user = User::findByMobile($account);
if (empty($user)) {
return $this->jsonReturn(1101, "账号不存在");
}
}else {
return $this->jsonReturn(1001, "账号不存在");
}
}
if ($user->attemptLogin($user->account, $password)) { //成功登陆
$request->session()->put("uid", $user->uid);
$request->session()->put("account", $user->account);
return $this->jsonReturn(0, "登陆成功", ['next_url' => route("index")]);
}
Cache::put($blockIPKey, $ipErrorNum+1, $expire);
//登陆失败
return $this->jsonReturn(1002, "账号或密码错误");
}
//短信验证码登录
public function mobileLogin(Request $request) {
$rules = [
'phone' => 'required|min:11|string',
'auth_code' => 'required',
];
$messages = [
'phone.min' => '手机号码最少11位',
'required' => "请填写完整,缺少参数",
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->errors()->first()) {
return $this->jsonReturn(10033, $validator->errors()->first());
}
$mobile = $request->input("phone");
$srvAuthCode = Cache::get("sms_auth_code:" . $mobile);
if ($request->input("auth_code") != $srvAuthCode) { //验证码错误
return $this->jsonReturn(1003, "验证码错误");
}
$user = User::findByMobile($mobile);
if (empty($user)) {
return $this->jsonReturn(1004, "该手机未绑定任何账号");
}
$request->session()->put("uid", $user->uid);
$request->session()->put("account", $user->account);
return $this->jsonReturn(0, "登陆成功", ['next_url' => route("index")]);
}
public function logout(Request $request)
{
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect("/");
}
public function register(Request $request)
{
$messages = [
'phone.min' => '手机号码最少11位',
'required' => "请填写完整,缺少参数",
'password.min' => '密码最少6位',
// 'id_card.min' => '身份证最少16位',
];
$rules = [
'phone' => 'required|min:11|string',
'password' => 'required|string|min:6',
// 'real_name' => 'required|string',
// 'id_card' => 'required|string|min:16',
'auth_code' => 'required',
];
$validator = Validator::make($request->all(), $rules, $messages);
if ($validator->errors()->first()) {
return $this->jsonReturn(10033, $validator->errors()->first());
}
$mobile = $request->input("phone");
$srvAuthCode = Cache::get("sms_auth_code:" . $mobile);
if ($request->input("auth_code") != $srvAuthCode) { //验证码错误
return $this->jsonReturn(1003, "验证码错误");
}
$user = User::findByMobile($mobile);
if (!empty($user)) {
return $this->jsonReturn(11008, "手机号已绑定过账号");
}
$user = User::findByAccount($mobile);
if (!empty($user)) {
return $this->jsonReturn(11009, "手机号已被注册过");
}
$originPassword = $request->input("password");
if ($mobile == $originPassword) {
return $this->jsonReturn(12001, "密码不可以是手机号");
}
// $realName = trim($request->input('real_name'));
// $idCard = trim($request->input("id_card"));
// $realnameAuthService = new RealnameAuthService();
// $result = $realnameAuthService->check("用户中心", $realName, $idCard, $mobile, $this->getClientRealIP());
// if (!$result[0]) {
// Log::error("实名验证错误", $result);
// return $this->jsonReturn(30002, "实名信息不匹配");
// }
$user = new User();
$user->account = $mobile;
$user->mobile = $mobile;
$user->password = md5($originPassword);
// $user->real_name = $realName;
// $user->id_card = $idCard;
$user->time = time();
$user->reg_type = 21;
$user->reg_ip = $request->getClientIp();
$ret = $user->save();
if ($ret) {
//保存密码强度
$userExtra = new UserExtra();
$userExtra->uid = $user->uid;
$userExtra->password_strength = UserExtra::getPasswordStrength($originPassword);
$userExtra->save();
$request->session()->put("uid", $user->uid);
$request->session()->put("account", $user->account);
return $this->jsonReturn(0, "注册成功", ['next_url' => route("index")]);
}else {
return $this->jsonReturn(1007, "注册失败");
}
}
public function bindALD(Request $request)
{
$request->validate([
'bind_code' => 'required',
]);
$uid = $request->session()->get("uid");
if (empty($uid)) {
return $this->jsonReturn(1019, "登陆失效或未登陆,请重新登陆");
}
$limitErrorTimesPerDay = 3;
$errTimesKey = "bind_code_errtimes:" . date("Ymd") . ":" . $uid;
$expire = 3600 * 24;
$errTimes = Cache::get($errTimesKey, 0);
if ($errTimes >= $limitErrorTimesPerDay) {
return $this->jsonReturn(1020, "每日限额错误次数", ['left_times' => 0, 'total_times' => $limitErrorTimesPerDay ]);
}
$bindCode = trim($request->input("bind_code"));
$aldznUser = UserExtra::find($uid);
if (!empty($aldznUser) && !empty($aldznUser->udid)) {
Cache::put($errTimesKey, $errTimes+1, $expire);
return $this->jsonReturn(1015, "该账号已绑定过");
}
$bindUser = UserExtra::findByUdid($bindCode);
if ($bindUser) {
Cache::put($errTimesKey, $errTimes+1, $expire);
return $this->jsonReturn(1016, "该Orange识别码已被绑定");
}
if (empty($aldznUser)) {
$aldznUser = new UserExtra();
}
$gmService = new AldGmService();
$codeInfo = $gmService->checkBindCode($bindCode);
if (!$codeInfo) {
Cache::put($errTimesKey, $errTimes+1, $expire);
return $this->jsonReturn(1017, "该Orange识别码不存在请重新输入");
}
$channel = $codeInfo['channel'] ?? '';
$ouid = $codeInfo['userId'] ?? '';
// if (!empty($channel) && !empty($ouid) && $channel != "mg") {
// //Artisan::call("search:refund", ['channel' => $channel, 'ouid' => $ouid]);
// //$oCoin = UserRefund::where('channel_id', $codeInfo['channel'])
// ->where("ouid", $codeInfo['userId'])
// ->value('o_coin');
// //$aldznUser->o_coin = intval($oCoin);
// //$aldznUser->is_refund = 1;
// }
$aldznUser->uid = $uid;
$aldznUser->udid = $bindCode;
$aldznUser->aldzn_info = json_encode($codeInfo);
$ret = $aldznUser->save();
if ($ret) {
$gmService->confirmBind($bindCode, $codeInfo);
return $this->jsonReturn(0, "绑定成功", ['bind_code' => $bindCode] + $codeInfo);
}else {
return $this->jsonReturn(1013, "绑定失败");
}
}
}
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Redis;
use App\Services\Aliyunsms;
use App\Services\RealnameAuthService;
use Illuminate\Support\Facades\Log;
use App\Services\UtilService;
use App\Models\User;
use App\Models\UserExtra;
use App\Models\AldGift;
use Illuminate\Support\Facades\Validator;
class ToolController extends Controller
{
public function authcode(Request $request)
{
$expireSeconds = 300;
$ip = $this->getClientRealIP();
$todayDate = date("Ymd");
$request->validate([
'phone' => 'required|min:11|string',
]);
$mobile = $request->input("phone");
$limitMobile = Cache::get("sms:limit_mobile:" . $mobile, 0);
if ($limitMobile == 1) {
return $this->jsonReturn(4001, "发送太频繁,1分钟后再试");
}
$ipLimit = Cache::get("sms:limit_ip:" . $ip . ":" . $todayDate , 0);
if ($ipLimit > 50) {
return $this->jsonReturn(4002, "当天IP发送短信达上限");
}
$mobileDayLimit = Cache::get("sms:limit_mobile_daily:" . $mobile . ":" . $todayDate, 0);
if ($mobileDayLimit > 20) {
return $this->jsonReturn(4003, "当天手机发送短信达上限");
}
$authcode = $this->genAuthCode(6);
// $authcode = 666666;
Cache::put("sms_auth_code:" . $mobile, $authcode, $expireSeconds);
Cache::put("sms:limit_mobile:" . $mobile, 1, 60);
Cache::put("sms:limit_ip:" . $ip . ":" . $todayDate, $ipLimit + 1, 3600 *24);
Cache::put("sms:limit_mobile_daily:" . $mobile . ":" . $todayDate, $mobileDayLimit +1, 3600*24);
$aliyunsms = new Aliyunsms();
$ret = $aliyunsms->send($mobile, $authcode);
// $ret = 1;
if ($ret == 1) {
return $this->jsonReturn(0, "验证码发送成功");
}else {
return $this->jsonReturn(30001, "验证码发送失败,请稍后重试");
}
}
private function genAuthCode($len)
{
$len = intval($len);
if($len <= 0) {
$len = 4;
}
$list = array('1','2', '3', '4', '5', '6', '7', '8', '9');
$num = count($list);
$str = "";
for($i = 0; $i < $len; $i++) {
$r = mt_rand(0, $num-1);
$char = $list[$r];
$str .= $char;
}
return $str;
}
public function checkSmsAuthcode(Request $request) {
$request->validate([
'phone' => 'required',
'auth_code' => 'required',
]);
$phone = $request->input('phone');
if (!UtilService::isPhoneNum($phone)) {
$this->jsonReturn(10033, "手机号码错误");
}
$srvAuthCode = Cache::get("sms_auth_code:" . $phone);
if ($request->input("auth_code") != $srvAuthCode) { //验证码错误
return $this->jsonReturn(1003, "验证码错误");
}
return $this->jsonReturn(0, 'match');
}
}
<?php
namespace App\Http\Controllers\WX;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Throwable;
use Exception;
use Carbon\Carbon;
use Illuminate\Validation\Rule;
use App\Models\UserExtra;
use App\Models\User;
use App\Services\UtilService;
class HomeController extends Controller
{
private $time;
public function __construct()
{
$this->time = Carbon::now()->format('Y-m-d H:i:s');
}
/**
* 微信公众号签到首页
* @date 2021/05/26
* @author live
*/
public function getHome(Request $request){
if($request->session()->get("uid")) return redirect(route("index"));
$isLogin = 0;
$userName = '';
$serverName = '';
$roleName = '';
$isBandOrange = 0;
$bindOrangeUrl = route("aldCode");
$isBindRole = 0;
$startTime = strtotime(config('sign.date'));
$endTime = $startTime + 15 * 86400 - 1;
$num = intval((strtotime(date('Y-m-d')) - strtotime(date('Y-m-d',$startTime))) / 86400) + 1 ;
$data['num'] = $num;
$data['startTime'] = date('Y',$startTime).'年'.date('m',$startTime).'月'.date('d',$startTime).'日';
$data['endTime'] = date('Y',$endTime).'年'.date('m',$endTime).'月'.date('d',$endTime).'日';
$data['signGift'] = config('sign.sign');
$data['continueSign'] = config('sign.continueSign');
$data['signDay'] = 0;
$data['isLogin'] = $isLogin;
$data['userName'] = $userName;
$data['serverName'] = $serverName;
$data['roleName'] = $roleName;
$data['isBandOrange'] = $isBandOrange;
$data['bindOrangeUrl'] = $bindOrangeUrl;
$data['isBindRole'] = $isBindRole;
$data['loginUrl'] = route("login");
$data['loginOutUrl'] = route("logout");
$data['isWx'] = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
return view("wx.signIndex", $data);
}
/**
* 验证微信token
* @return array
* @date 2021/05/28
* @author live
*/
public function getVerityWX(Request $request){
$postData = $request->all();
$echoStr = $postData['echostr'] ?? '';
if($echoStr == ''){
echo '未接到随机字符串';
exit();
}
echo $echoStr;
exit();
$signature = $postData['signature'] ?? '';
$timestamp = $postData['timestamp'] ?? '';
$nonce = $postData['nonce'] ?? '';
$token = 'srccwl2021';
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
echo $echoStr;
exit();
} else {
echo '验证未通过';
exit();
}
}
}
\ No newline at end of file
This diff is collapsed.
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'check.login' => \App\Http\Middleware\CheckLogin::class,
'check.adminLogin' => \App\Http\Middleware\CheckAdminLogin::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\Authenticate::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
}
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}
<?php
namespace App\Http\Middleware;
use Closure;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Models\WxAdmin;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class CheckAdminLogin
{
/**
*
* @param $request
* @param Closure $next
* @return array|mixed
*/
public function handle(Request $request, Closure $next)
{
if(!Auth::check()) return redirect(route('adminLogin'))->with( 'error', '用户登录信息失效,请重新登录');
$request['userId'] = Auth::user()->id;
$request['userName'] = Auth::user()->name;
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
class CheckForMaintenanceMode extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}
<?php
namespace App\Http\Middleware;
use Closure;
use App\Services\UtilService;
class CheckLogin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$isWx = UtilService::getIsWx($_SERVER['HTTP_USER_AGENT']);
if(!$isWx){
echo '请在微信中打开!';
exit();
}
if (!$request->session()->get("uid")) {
if ($request->expectsJson()) {
$result = [];
$result['error'] = 1019;
$result['message'] = "登陆失效或未登陆,请重新登陆";
$result['data'] = null;
return response()->json($result);
}else {
return redirect(route("login"));
}
}
return $next($request);
}
}
<?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 = [
//
];
}
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
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(RouteServiceProvider::HOME);
// }
return $next($request);
}
}
<?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',
];
}
<?php
namespace App\Http\Middleware;
use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array|string
*/
protected $proxies = "100.120.136.0/24";
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
*
* @var bool
*/
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
This diff is collapsed.
<?php
namespace OSS\Core;
/**
* Class OssException
*
* This is the class that OSSClient is expected to thrown, which the caller needs to handle properly.
* It has the OSS specific errors which is useful for troubleshooting.
*
* @package OSS\Core
*/
class OssException extends \Exception
{
private $details = array();
function __construct($details)
{
if (is_array($details)) {
$message = $details['code'] . ': ' . $details['message']
. ' RequestId: ' . $details['request-id'];
parent::__construct($message);
$this->details = $details;
} else {
$message = $details;
parent::__construct($message);
}
}
public function getHTTPStatus()
{
return isset($this->details['status']) ? $this->details['status'] : '';
}
public function getRequestId()
{
return isset($this->details['request-id']) ? $this->details['request-id'] : '';
}
public function getErrorCode()
{
return isset($this->details['code']) ? $this->details['code'] : '';
}
public function getErrorMessage()
{
return isset($this->details['message']) ? $this->details['message'] : '';
}
public function getDetails()
{
return isset($this->details['body']) ? $this->details['body'] : '';
}
}
This diff is collapsed.
Copyright (c) 2006-2010 Ryan Parman, Foleeo Inc., and contributors. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of
conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of Ryan Parman, Foleeo Inc. nor the names of its contributors may be used to
endorse or promote products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
This diff is collapsed.
<?php
namespace OSS\Http;
class RequestCore_Exception extends \Exception
{
}
\ No newline at end of file
<?php
namespace OSS\Http;
/**
* Container for all response-related methods.
*/
class ResponseCore
{
/**
* Store the HTTP header information.
*/
public $header;
/**
* Store the SimpleXML response.
*/
public $body;
/**
* Store the HTTP response code.
*/
public $status;
/**
* Construct a new instance of this class.
*
* @param array $header (Required) Associative array of HTTP headers (typically returned by <RequestCore::get_response_header()>).
* @param string $body (Required) XML-formatted response from OSS.
* @param integer $status (Optional) HTTP response status code from the request.
* @return Mixed Contains an <php:array> `header` property (HTTP headers as an associative array), a <php:SimpleXMLElement> or <php:string> `body` property, and an <php:integer> `status` code.
*/
public function __construct($header, $body, $status = null)
{
$this->header = $header;
$this->body = $body;
$this->status = $status;
return $this;
}
/**
* Did we receive the status code we expected?
*
* @param integer|array $codes (Optional) The status code(s) to expect. Pass an <php:integer> for a single acceptable value, or an <php:array> of integers for multiple acceptable values.
* @return boolean Whether we received the expected status code or not.
*/
public function isOK($codes = array(200, 201, 204, 206))
{
if (is_array($codes)) {
return in_array($this->status, $codes);
}
return $this->status === $codes;
}
}
\ No newline at end of file
<?php
namespace OSS\Model;
/**
* Bucket information class. This is the type of element in BucketListInfo's
*
* Class BucketInfo
* @package OSS\Model
*/
class BucketInfo
{
/**
* BucketInfo constructor.
*
* @param string $location
* @param string $name
* @param string $createDate
*/
public function __construct($location = '', $name = '', $createDate = '')
{
$this->location = $location;
$this->createDate = $createDate;
$this->name = $name;
}
/**
* Get bucket location
*
* @return string
*/
public function getLocation()
{
return $this->location;
}
/**
* Get bucket name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Get bucket creation time.
*
* @return string
*/
public function getCreateDate()
{
return $this->createDate;
}
/**
* Get bucket storage class.
*
* @return string
*/
public function getStorageClass()
{
return $this->storageClass;
}
/**
* Get bucket extranet endpoint.
*
* @return string
*/
public function getExtranetEndpoint()
{
return $this->extranetEndpoint;
}
/**
* Get bucket intranet endpoint.
*
* @return string
*/
public function getIntranetEndpoint()
{
return $this->intranetEndpoint;
}
/**
* Get bucket intranet endpoint.
*
* @return string
*/
public function getRegion()
{
return $this->region;
}
/**
* Parse bucket information from node.
*
* @param xml $xml
* @throws OssException
* @return null
*/
public function parseFromXmlNode($xml)
{
if (isset($xml->Location)) {
$this->location = strval($xml->Location);
}
if (isset($xml->Name)) {
$this->name = strval($xml->Name);
}
if (isset($xml->CreationDate)) {
$this->createDate = strval($xml->CreationDate);
}
if (isset($xml->StorageClass)) {
$this->storageClass = strval($xml->StorageClass);
}
if (isset($xml->ExtranetEndpoint)) {
$this->extranetEndpoint = strval($xml->ExtranetEndpoint);
}
if (isset($xml->IntranetEndpoint)) {
$this->intranetEndpoint = strval($xml->IntranetEndpoint);
}
if (isset($xml->IntranetEndpoint)) {
$this->intranetEndpoint = strval($xml->IntranetEndpoint);
}
if (isset($xml->Region)) {
$this->region = strval($xml->Region);
}
}
/**
* bucket region
*
* @var string
*/
private $location;
/**
* bucket name
*
* @var string
*/
private $name;
/**
* bucket creation time
*
* @var string
*/
private $createDate;
/**
* bucket storage class
*
* @var string
*/
private $storageClass;
/**
* bucket extranet endpoint
*
* @var string
*/
private $extranetEndpoint;
/**
* bucket intranet endpoint
*
* @var string
*/
private $intranetEndpoint;
/**
* bucket region
*
* @var string
*/
private $region;
}
\ No newline at end of file
<?php
namespace OSS\Model;
/**
* Class BucketListInfo
*
* It's the type of return value of ListBuckets.
*
* @package OSS\Model
*/
class BucketListInfo
{
/**
* BucketListInfo constructor.
* @param array $bucketList
*/
public function __construct(array $bucketList)
{
$this->bucketList = $bucketList;
}
/**
* Get the BucketInfo list
*
* @return BucketInfo[]
*/
public function getBucketList()
{
return $this->bucketList;
}
/**
* BucketInfo list
*
* @var array
*/
private $bucketList = array();
}
\ No newline at end of file
<?php
namespace OSS\Model;
/**
* Bucket stat class.
*
* Class BucketStat
* @package OSS\Model
*/
class BucketStat
{
/**
* Get storage
*
* @return int
*/
public function getStorage()
{
return $this->storage;
}
/**
* Get object count
*
* @return int
*/
public function getObjectCount()
{
return $this->objectCount;
}
/**
* Get multipart upload count.
*
* @return int
*/
public function getMultipartUploadCount()
{
return $this->multipartUploadCount;
}
/**
* Parse stat from the xml.
*
* @param string $strXml
* @throws OssException
* @return null
*/
public function parseFromXml($strXml)
{
$xml = simplexml_load_string($strXml);
if (isset($xml->Storage) ) {
$this->storage = intval($xml->Storage);
}
if (isset($xml->ObjectCount) ) {
$this->objectCount = intval($xml->ObjectCount);
}
if (isset($xml->MultipartUploadCount) ) {
$this->multipartUploadCount = intval($xml->MultipartUploadCount);
}
}
/**
* current storage
*
* @var int
*/
private $storage;
/**
* object count
*
* @var int
*/
private $objectCount;
/**
* multipart upload count
*
* @var int
*/
private $multipartUploadCount;
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?php
namespace OSS\Model;
/**
*
* Class DeleteMarkerInfo
*
* @package OSS\Model
*/
class DeleteMarkerInfo
{
/**
* DeleteMarkerInfo constructor.
*
* @param string $key
* @param string $versionId
* @param string $lastModified
* @param string $isLatest
*/
public function __construct($key, $versionId, $lastModified, $isLatest)
{
$this->key = $key;
$this->versionId = $versionId;
$this->lastModified = $lastModified;
$this->isLatest = $isLatest;
}
/**
* @return string
*/
public function getKey()
{
return $this->key;
}
/**
* @return string
*/
public function getVersionId()
{
return $this->versionId;
}
/**
* @return string
*/
public function getLastModified()
{
return $this->lastModified;
}
/**
* @return string
*/
public function getIsLatest()
{
return $this->isLatest;
}
private $key = "";
private $versionId = "";
private $lastModified = "";
private $isLatest = "";
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?php
namespace OSS\Result;
/**
* Class BodyResult
* @package OSS\Result
*/
class BodyResult extends Result
{
/**
* @return string
*/
protected function parseDataFromResponse()
{
return empty($this->rawResponse->body) ? "" : $this->rawResponse->body;
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment