mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-28 05:11:39 +08:00
抽象AuthUser
This commit is contained in:
parent
66b1861ba0
commit
f565e68e43
@ -57,8 +57,8 @@ class CourseRelatedList extends Cache
|
||||
'title' => $course->title,
|
||||
'cover' => $course->cover,
|
||||
'summary' => $course->summary,
|
||||
'market_price' => $course->market_price,
|
||||
'vip_price' => $course->vip_price,
|
||||
'market_price' => (float)$course->market_price,
|
||||
'vip_price' => (float)$course->vip_price,
|
||||
'model' => $course->model,
|
||||
'level' => $course->level,
|
||||
];
|
||||
|
41
app/Caches/SectionConfig.php
Normal file
41
app/Caches/SectionConfig.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Caches;
|
||||
|
||||
use App\Repos\Config as ConfigRepo;
|
||||
|
||||
class SectionConfig extends Cache
|
||||
{
|
||||
|
||||
protected $lifetime = 365 * 86400;
|
||||
|
||||
public function getLifetime()
|
||||
{
|
||||
return $this->lifetime;
|
||||
}
|
||||
|
||||
public function getKey($id = null)
|
||||
{
|
||||
return "section_config:{$id}";
|
||||
}
|
||||
|
||||
public function getContent($id = null)
|
||||
{
|
||||
$configRepo = new ConfigRepo();
|
||||
|
||||
$items = $configRepo->findAll(['section' => $id]);
|
||||
|
||||
if ($items->count() == 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$result = [];
|
||||
|
||||
foreach ($items as $item) {
|
||||
$result[$item->item_key] = $item->item_value;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
@ -60,7 +60,7 @@ class CategoryController extends Controller
|
||||
'msg' => '创建分类成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,7 +96,7 @@ class CategoryController extends Controller
|
||||
'msg' => '更新分类成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,7 +115,7 @@ class CategoryController extends Controller
|
||||
'msg' => '删除分类成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -134,7 +134,7 @@ class CategoryController extends Controller
|
||||
'msg' => '还原分类成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ class ChapterController extends Controller
|
||||
'msg' => '创建章节成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -148,7 +148,7 @@ class ChapterController extends Controller
|
||||
'msg' => '更新章节成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -167,7 +167,7 @@ class ChapterController extends Controller
|
||||
'msg' => '删除章节成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -186,7 +186,7 @@ class ChapterController extends Controller
|
||||
'msg' => '删除章节成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,7 +212,7 @@ class ChapterController extends Controller
|
||||
'msg' => '更新课时内容成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ class CommentController extends Controller
|
||||
'msg' => '更新评论成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -95,7 +95,7 @@ class CommentController extends Controller
|
||||
'msg' => '删除评论成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
|
||||
@ -115,7 +115,7 @@ class CommentController extends Controller
|
||||
'msg' => '还原评论成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateSectionConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -50,7 +50,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateStorageConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -75,7 +75,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateStorageConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -100,7 +100,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateVodConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -125,7 +125,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateLiveConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -153,7 +153,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateSectionConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -180,7 +180,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateSmserConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -208,7 +208,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateSectionConfig($section, $data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
@ -238,7 +238,7 @@ class ConfigController extends Controller
|
||||
'msg' => '更新配置成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
|
||||
} else {
|
||||
|
||||
@ -261,7 +261,7 @@ class ConfigController extends Controller
|
||||
|
||||
$configService->updateVipConfig($data);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '更新配置成功']);
|
||||
return $this->jsonSuccess(['msg' => '更新配置成功']);
|
||||
|
||||
} else {
|
||||
|
||||
|
@ -64,7 +64,7 @@ class ConsultController extends Controller
|
||||
'msg' => '更新咨询成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,7 +83,7 @@ class ConsultController extends Controller
|
||||
'msg' => '删除咨询成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,7 +102,7 @@ class ConsultController extends Controller
|
||||
'msg' => '还原咨询成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
namespace App\Http\Admin\Controllers;
|
||||
|
||||
use App\Models\Audit as AuditModel;
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
use App\Traits\Security as SecurityTrait;
|
||||
use Phalcon\Mvc\Dispatcher;
|
||||
|
||||
@ -12,7 +12,7 @@ class Controller extends \Phalcon\Mvc\Controller
|
||||
|
||||
protected $authUser;
|
||||
|
||||
use AjaxTrait, SecurityTrait;
|
||||
use ResponseTrait, SecurityTrait;
|
||||
|
||||
public function beforeExecuteRoute(Dispatcher $dispatcher)
|
||||
{
|
||||
|
@ -61,7 +61,7 @@ class CourseController extends Controller
|
||||
'msg' => '创建课程成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,7 +97,7 @@ class CourseController extends Controller
|
||||
|
||||
$content = ['msg' => '更新课程成功'];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,7 +114,7 @@ class CourseController extends Controller
|
||||
'msg' => '删除课程成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -131,7 +131,7 @@ class CourseController extends Controller
|
||||
'msg' => '还原课程成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -46,7 +46,7 @@ class HelpController extends Controller
|
||||
'msg' => '创建帮助成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,7 +77,7 @@ class HelpController extends Controller
|
||||
'msg' => '更新帮助成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,7 +96,7 @@ class HelpController extends Controller
|
||||
'msg' => '删除帮助成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,7 +115,7 @@ class HelpController extends Controller
|
||||
'msg' => '还原帮助成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ class NavController extends Controller
|
||||
'msg' => '创建导航成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,7 +96,7 @@ class NavController extends Controller
|
||||
'msg' => '更新导航成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,7 +115,7 @@ class NavController extends Controller
|
||||
'msg' => '删除导航成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -134,7 +134,7 @@ class NavController extends Controller
|
||||
'msg' => '还原导航成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ class OrderController extends Controller
|
||||
'msg' => '关闭订单成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -87,7 +87,7 @@ class OrderController extends Controller
|
||||
'msg' => '订单退款成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ class PackageController extends Controller
|
||||
'msg' => '创建套餐成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -93,7 +93,7 @@ class PackageController extends Controller
|
||||
|
||||
$content = ['msg' => '更新套餐成功'];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -110,7 +110,7 @@ class PackageController extends Controller
|
||||
'msg' => '删除套餐成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -127,7 +127,7 @@ class PackageController extends Controller
|
||||
'msg' => '还原套餐成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ class PageController extends Controller
|
||||
'msg' => '创建单页成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,7 +77,7 @@ class PageController extends Controller
|
||||
'msg' => '更新单页成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,7 +96,7 @@ class PageController extends Controller
|
||||
'msg' => '删除单页成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,7 +115,7 @@ class PageController extends Controller
|
||||
'msg' => '还原单页成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Admin\Controllers;
|
||||
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
|
||||
/**
|
||||
* @RoutePrefix("/admin")
|
||||
@ -10,7 +10,7 @@ use App\Traits\Ajax as AjaxTrait;
|
||||
class PublicController extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use AjaxTrait;
|
||||
use ResponseTrait;
|
||||
|
||||
/**
|
||||
* @Route("/auth", name="admin.auth")
|
||||
@ -18,7 +18,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function authAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '会话已过期,请重新登录']);
|
||||
return $this->jsonError(['msg' => '会话已过期,请重新登录']);
|
||||
}
|
||||
|
||||
$this->response->redirect(['for' => 'admin.login']);
|
||||
@ -30,7 +30,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function robotAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '疑似机器人请求']);
|
||||
return $this->jsonError(['msg' => '疑似机器人请求']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function forbiddenAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '无相关操作权限']);
|
||||
return $this->jsonError(['msg' => '无相关操作权限']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ class RefundController extends Controller
|
||||
'msg' => '审核退款成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ class ReviewController extends Controller
|
||||
'msg' => '更新评价成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,7 +83,7 @@ class ReviewController extends Controller
|
||||
'msg' => '删除评价成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,7 +102,7 @@ class ReviewController extends Controller
|
||||
'msg' => '还原评价成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ class RoleController extends Controller
|
||||
'msg' => '创建角色成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -82,7 +82,7 @@ class RoleController extends Controller
|
||||
'msg' => '更新角色成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -101,7 +101,7 @@ class RoleController extends Controller
|
||||
'msg' => '删除角色成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -120,7 +120,7 @@ class RoleController extends Controller
|
||||
'msg' => '还原角色成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace App\Http\Admin\Controllers;
|
||||
|
||||
use App\Http\Admin\Services\Config as ConfigService;
|
||||
use App\Http\Admin\Services\Session as SessionService;
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
use App\Traits\Security as SecurityTrait;
|
||||
|
||||
/**
|
||||
@ -13,7 +13,7 @@ use App\Traits\Security as SecurityTrait;
|
||||
class SessionController extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use AjaxTrait;
|
||||
use ResponseTrait;
|
||||
use SecurityTrait;
|
||||
|
||||
/**
|
||||
@ -37,7 +37,7 @@ class SessionController extends \Phalcon\Mvc\Controller
|
||||
|
||||
$location = $this->url->get(['for' => 'admin.index']);
|
||||
|
||||
return $this->ajaxSuccess(['location' => $location]);
|
||||
return $this->jsonSuccess(['location' => $location]);
|
||||
}
|
||||
|
||||
$configService = new ConfigService();
|
||||
|
@ -49,7 +49,7 @@ class SlideController extends Controller
|
||||
'msg' => '创建轮播成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,7 +80,7 @@ class SlideController extends Controller
|
||||
'msg' => '更新轮播成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -99,7 +99,7 @@ class SlideController extends Controller
|
||||
'msg' => '删除轮播成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -118,7 +118,7 @@ class SlideController extends Controller
|
||||
'msg' => '还原轮播成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ class StudentController extends Controller
|
||||
'msg' => '添加学员成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -113,7 +113,7 @@ class StudentController extends Controller
|
||||
'msg' => '更新学员成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -29,9 +29,9 @@ class TestController extends Controller
|
||||
$result = $storageService->uploadTestFile();
|
||||
|
||||
if ($result) {
|
||||
return $this->ajaxSuccess(['msg' => '上传文件成功,请到控制台确认']);
|
||||
return $this->jsonSuccess(['msg' => '上传文件成功,请到控制台确认']);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '上传文件失败,请检查相关配置']);
|
||||
return $this->jsonError(['msg' => '上传文件失败,请检查相关配置']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,9 +45,9 @@ class TestController extends Controller
|
||||
$result = $vodService->test();
|
||||
|
||||
if ($result) {
|
||||
return $this->ajaxSuccess(['msg' => '接口返回成功']);
|
||||
return $this->jsonSuccess(['msg' => '接口返回成功']);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '接口返回失败,请检查相关配置']);
|
||||
return $this->jsonError(['msg' => '接口返回失败,请检查相关配置']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -107,9 +107,9 @@ class TestController extends Controller
|
||||
$response = $smserService->handle($phone);
|
||||
|
||||
if ($response) {
|
||||
return $this->ajaxSuccess(['msg' => '发送短信成功,请到收件箱确认']);
|
||||
return $this->jsonSuccess(['msg' => '发送短信成功,请到收件箱确认']);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '发送短信失败,请查看短信日志']);
|
||||
return $this->jsonError(['msg' => '发送短信失败,请查看短信日志']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,9 +125,9 @@ class TestController extends Controller
|
||||
$result = $mailerService->handle($email);
|
||||
|
||||
if ($result) {
|
||||
return $this->ajaxSuccess(['msg' => '发送邮件成功,请到收件箱确认']);
|
||||
return $this->jsonSuccess(['msg' => '发送邮件成功,请到收件箱确认']);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '发送邮件失败,请检查配置']);
|
||||
return $this->jsonError(['msg' => '发送邮件失败,请检查配置']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,10 +148,10 @@ class TestController extends Controller
|
||||
|
||||
$configService->updateSectionConfig('captcha', ['enabled' => 1]);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '后台验证成功']);
|
||||
return $this->jsonSuccess(['msg' => '后台验证成功']);
|
||||
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '后台验证失败']);
|
||||
return $this->jsonError(['msg' => '后台验证失败']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,7 +200,7 @@ class TestController extends Controller
|
||||
|
||||
$status = $alipayTestService->status($tradeSn);
|
||||
|
||||
return $this->ajaxSuccess(['status' => $status]);
|
||||
return $this->jsonSuccess(['status' => $status]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -214,7 +214,7 @@ class TestController extends Controller
|
||||
|
||||
$alipayTestService->cancel($tradeSn);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '取消订单成功']);
|
||||
return $this->jsonSuccess(['msg' => '取消订单成功']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -253,7 +253,7 @@ class TestController extends Controller
|
||||
|
||||
$status = $wxpayTestService->status($tradeSn);
|
||||
|
||||
return $this->ajaxSuccess(['status' => $status]);
|
||||
return $this->jsonSuccess(['status' => $status]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -267,7 +267,7 @@ class TestController extends Controller
|
||||
|
||||
$wxpayTestService->cancel($tradeSn);
|
||||
|
||||
return $this->ajaxSuccess(['msg' => '取消订单成功']);
|
||||
return $this->jsonSuccess(['msg' => '取消订单成功']);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ class TopicController extends Controller
|
||||
'msg' => '创建话题成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,7 +77,7 @@ class TopicController extends Controller
|
||||
|
||||
$content = ['msg' => '更新话题成功'];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -94,7 +94,7 @@ class TopicController extends Controller
|
||||
'msg' => '删除话题成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +111,7 @@ class TopicController extends Controller
|
||||
'msg' => '还原话题成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ class TradeController extends Controller
|
||||
'msg' => '关闭交易成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,7 +85,7 @@ class TradeController extends Controller
|
||||
'msg' => '申请退款成功,请到退款管理中审核确认',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,9 +22,9 @@ class UploadController extends Controller
|
||||
$url = $storageService->getCiImageUrl($key);
|
||||
|
||||
if ($url) {
|
||||
return $this->ajaxSuccess(['data' => ['src' => $url, 'title' => '']]);
|
||||
return $this->jsonSuccess(['data' => ['src' => $url, 'title' => '']]);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '上传文件失败']);
|
||||
return $this->jsonError(['msg' => '上传文件失败']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,9 +38,9 @@ class UploadController extends Controller
|
||||
$url = $storageService->uploadContentImage();
|
||||
|
||||
if ($url) {
|
||||
return $this->ajaxSuccess(['data' => ['src' => $url, 'title' => '']]);
|
||||
return $this->jsonSuccess(['data' => ['src' => $url, 'title' => '']]);
|
||||
} else {
|
||||
return $this->ajaxError(['msg' => '上传文件失败']);
|
||||
return $this->jsonError(['msg' => '上传文件失败']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ class UserController extends Controller
|
||||
'msg' => '新增用户成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +111,7 @@ class UserController extends Controller
|
||||
'msg' => '更新用户成功',
|
||||
];
|
||||
|
||||
return $this->ajaxSuccess($content);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ class VodController extends Controller
|
||||
|
||||
$signature = $vodService->getUploadSignature();
|
||||
|
||||
return $this->ajaxSuccess(['signature' => $signature]);
|
||||
return $this->jsonSuccess(['signature' => $signature]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -59,7 +59,7 @@ class VodController extends Controller
|
||||
|
||||
$syncerService->addItem($learning, $query['timeout']);
|
||||
|
||||
return $this->ajaxSuccess();
|
||||
return $this->jsonSuccess();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ class XmCourseController extends Controller
|
||||
|
||||
$pager = $xmCourseService->getAllCourses();
|
||||
|
||||
return $this->ajaxSuccess([
|
||||
return $this->jsonSuccess([
|
||||
'count' => $pager->total_items,
|
||||
'data' => $pager->items,
|
||||
]);
|
||||
@ -34,7 +34,7 @@ class XmCourseController extends Controller
|
||||
|
||||
$pager = $xmCourseService->getPaidCourses();
|
||||
|
||||
return $this->ajaxSuccess([
|
||||
return $this->jsonSuccess([
|
||||
'count' => $pager->total_items,
|
||||
'data' => $pager->items,
|
||||
]);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Admin;
|
||||
|
||||
use App\Http\Admin\Services\AuthUser;
|
||||
use App\Services\AuthUser\Admin as AdminAuthUser;
|
||||
use Phalcon\DiInterface;
|
||||
use Phalcon\Mvc\ModuleDefinitionInterface;
|
||||
use Phalcon\Mvc\View;
|
||||
@ -27,7 +27,7 @@ class Module implements ModuleDefinitionInterface
|
||||
});
|
||||
|
||||
$di->setShared('auth', function () {
|
||||
$authUser = new AuthUser();
|
||||
$authUser = new AdminAuthUser();
|
||||
return $authUser;
|
||||
});
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Admin\Services;
|
||||
|
||||
use App\Caches\SectionConfig as SectionConfigCache;
|
||||
use App\Repos\Config as ConfigRepo;
|
||||
use App\Repos\Vip as VipRepo;
|
||||
|
||||
@ -36,6 +37,10 @@ class Config extends Service
|
||||
$item->update();
|
||||
}
|
||||
}
|
||||
|
||||
$cache = new SectionConfigCache();
|
||||
|
||||
$cache->rebuild($section);
|
||||
}
|
||||
|
||||
public function updateStorageConfig($section, $config)
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Admin\Services;
|
||||
|
||||
use App\Services\AuthUser as AuthUserService;
|
||||
use App\Validators\Account as AccountValidator;
|
||||
use App\Validators\Security as SecurityValidator;
|
||||
|
||||
@ -9,7 +10,7 @@ class Session extends Service
|
||||
{
|
||||
|
||||
/**
|
||||
* @var AuthUser
|
||||
* @var AuthUserService
|
||||
*/
|
||||
protected $auth;
|
||||
|
||||
@ -39,12 +40,12 @@ class Session extends Service
|
||||
$securityValidator->checkCaptchaCode($post['ticket'], $post['rand']);
|
||||
}
|
||||
|
||||
$this->auth->setAuthInfo($user);
|
||||
$this->auth->saveAuthInfo($user);
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$this->auth->removeAuthInfo();
|
||||
$this->auth->clearAuthInfo();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -40,7 +40,7 @@
|
||||
</form>
|
||||
|
||||
<script>
|
||||
if (window != top) {
|
||||
if (window !== top) {
|
||||
top.location.href = window.location.href;
|
||||
}
|
||||
</script>
|
||||
|
@ -2,9 +2,13 @@
|
||||
|
||||
namespace App\Http\Api\Controllers;
|
||||
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
|
||||
class Controller extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use ResponseTrait;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Api;
|
||||
|
||||
use App\Services\AuthUser\Home as ApiAuthUser;
|
||||
use Phalcon\DiInterface;
|
||||
use Phalcon\Mvc\ModuleDefinitionInterface;
|
||||
use Phalcon\Mvc\View;
|
||||
@ -21,5 +22,10 @@ class Module implements ModuleDefinitionInterface
|
||||
$view->disable();
|
||||
return $view;
|
||||
});
|
||||
|
||||
$di->setShared('auth', function () {
|
||||
$authUser = new ApiAuthUser();
|
||||
return $authUser;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -2,68 +2,12 @@
|
||||
|
||||
namespace App\Http\Api\Services;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\User as UserRepo;
|
||||
use App\Validators\Filter as BaseFilter;
|
||||
use App\Traits\Auth as AuthTrait;
|
||||
use Phalcon\Mvc\User\Component;
|
||||
|
||||
|
||||
class Service extends Component
|
||||
{
|
||||
|
||||
public function getCurrentUser()
|
||||
{
|
||||
$token = $this->getAuthToken();
|
||||
|
||||
return $token ? $this->getUser($token) : $this->getGuest();
|
||||
}
|
||||
|
||||
public function getLoggedUser()
|
||||
{
|
||||
$token = $this->getAuthToken();
|
||||
|
||||
$filter = new BaseFilter();
|
||||
|
||||
$filter->checkAuthToken($token);
|
||||
|
||||
$user = $this->getUser($token);
|
||||
|
||||
$filter->checkAuthUser($user);
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
private function getAuthToken()
|
||||
{
|
||||
$token = null;
|
||||
|
||||
if ($this->cookies->has('token')) {
|
||||
|
||||
$cookie = $this->cookies->get('token');
|
||||
|
||||
$token = $cookie->getValue();
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
private function getGuest()
|
||||
{
|
||||
$guest = new UserModel();
|
||||
|
||||
$guest->id = 0;
|
||||
$guest->name = 'guest';
|
||||
|
||||
return $guest;
|
||||
}
|
||||
|
||||
private function getUser($token)
|
||||
{
|
||||
$userRepo = new UserRepo();
|
||||
|
||||
$user = $userRepo->findById($token);
|
||||
|
||||
return $user;
|
||||
}
|
||||
use AuthTrait;
|
||||
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ class AccountController extends Controller
|
||||
|
||||
$service->resetPassword();
|
||||
|
||||
return $this->ajaxSuccess();
|
||||
return $this->jsonSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,7 +71,7 @@ class AccountController extends Controller
|
||||
|
||||
$service->updateMobile();
|
||||
|
||||
return $this->ajaxSuccess();
|
||||
return $this->jsonSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,7 +83,7 @@ class AccountController extends Controller
|
||||
|
||||
$service->updatePassword();
|
||||
|
||||
return $this->ajaxSuccess();
|
||||
return $this->jsonSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -95,7 +95,7 @@ class AccountController extends Controller
|
||||
|
||||
$service->sendCaptcha();
|
||||
|
||||
return $this->ajaxSuccess();
|
||||
return $this->jsonSuccess();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace App\Http\Home\Controllers;
|
||||
|
||||
use App\Caches\Config as ConfigCache;
|
||||
use App\Caches\NavTreeList as NavTreeListCache;
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
use App\Traits\Security as SecurityTrait;
|
||||
use Phalcon\Mvc\Dispatcher;
|
||||
|
||||
@ -15,7 +15,7 @@ class Controller extends \Phalcon\Mvc\Controller
|
||||
protected $navList;
|
||||
protected $authUser;
|
||||
|
||||
use AjaxTrait, SecurityTrait;
|
||||
use ResponseTrait, SecurityTrait;
|
||||
|
||||
public function beforeExecuteRoute(Dispatcher $dispatcher)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ class CourseController extends Controller
|
||||
|
||||
$pager = $courseListService->getCourses();
|
||||
|
||||
return $this->ajaxSuccess(['pager' => $pager]);
|
||||
return $this->jsonSuccess(['pager' => $pager]);
|
||||
|
||||
$this->view->setVar('pager', $pager);
|
||||
}
|
||||
@ -37,7 +37,7 @@ class CourseController extends Controller
|
||||
|
||||
$course = $courseService->getCourse($id);
|
||||
|
||||
return $this->ajaxSuccess(['course' => $course]);
|
||||
return $this->jsonSuccess(['course' => $course]);
|
||||
|
||||
$this->view->setVar('course', $course);
|
||||
}
|
||||
@ -51,7 +51,7 @@ class CourseController extends Controller
|
||||
|
||||
$courses = $relatedService->getRelated($id);
|
||||
|
||||
return $this->ajaxSuccess(['courses' => $courses]);
|
||||
return $this->jsonSuccess(['courses' => $courses]);
|
||||
|
||||
$this->view->setVar('course', $course);
|
||||
}
|
||||
@ -65,7 +65,7 @@ class CourseController extends Controller
|
||||
|
||||
$pager = $reviewService->getReviews($id);
|
||||
|
||||
return $this->ajaxSuccess(['pager' => $pager]);
|
||||
return $this->jsonSuccess(['pager' => $pager]);
|
||||
|
||||
$this->view->setVar('pager', $pager);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Home\Controllers;
|
||||
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
use Phalcon\Mvc\View;
|
||||
|
||||
/**
|
||||
@ -11,7 +11,7 @@ use Phalcon\Mvc\View;
|
||||
class ErrorController extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use AjaxTrait;
|
||||
use ResponseTrait;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
@ -50,7 +50,7 @@ class ErrorController extends \Phalcon\Mvc\Controller
|
||||
$this->response->setStatusCode(404);
|
||||
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['code' => 'sys.uri_not_found']);
|
||||
return $this->jsonError(['code' => 'sys.uri_not_found']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,8 +58,8 @@ class MyController extends Controller
|
||||
$orders = $service->getOrders();
|
||||
|
||||
$this->view->orders = $orders;
|
||||
|
||||
return $this->ajaxSuccess($orders);
|
||||
|
||||
return $this->jsonSuccess($orders);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,7 +78,7 @@ class OrderController extends Controller
|
||||
$this->view->order = $order;
|
||||
$this->view->orderItems = $orderItems;
|
||||
|
||||
return $this->ajaxSuccess($order->toArray());
|
||||
return $this->jsonSuccess($order->toArray());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -136,7 +136,7 @@ class OrderController extends Controller
|
||||
|
||||
$order = $service->cancel();
|
||||
|
||||
return $this->ajaxSuccess($order->toArray());
|
||||
return $this->jsonSuccess($order->toArray());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,12 +4,12 @@ namespace App\Http\Home\Controllers;
|
||||
|
||||
use App\Services\Payment\Alipay as AlipayService;
|
||||
use App\Services\Payment\Wxpay as WxpayService;
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
|
||||
class PaymentController extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use AjaxTrait;
|
||||
use ResponseTrait;
|
||||
|
||||
/**
|
||||
* @Post("/alipay/notify", name="home.alipay.notify")
|
||||
@ -54,7 +54,7 @@ class PaymentController extends \Phalcon\Mvc\Controller
|
||||
|
||||
$status = $alipayService->status($sn);
|
||||
|
||||
return $this->ajaxSuccess(['status' => $status]);
|
||||
return $this->jsonSuccess(['status' => $status]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,7 +68,7 @@ class PaymentController extends \Phalcon\Mvc\Controller
|
||||
|
||||
$status = $wxpayService->status($sn);
|
||||
|
||||
return $this->ajaxSuccess(['status' => $status]);
|
||||
return $this->jsonSuccess(['status' => $status]);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,13 +4,13 @@ namespace App\Http\Home\Controllers;
|
||||
|
||||
use App\Models\ContentImage as ContentImageModel;
|
||||
use App\Services\Storage as StorageService;
|
||||
use App\Traits\Ajax as AjaxTrait;
|
||||
use App\Traits\Response as ResponseTrait;
|
||||
use PHPQRCode\QRcode;
|
||||
|
||||
class PublicController extends \Phalcon\Mvc\Controller
|
||||
{
|
||||
|
||||
use AjaxTrait;
|
||||
use ResponseTrait;
|
||||
|
||||
/**
|
||||
* @Route("/auth", name="home.auth")
|
||||
@ -18,7 +18,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function authAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '会话已过期,请重新登录']);
|
||||
return $this->jsonError(['msg' => '会话已过期,请重新登录']);
|
||||
}
|
||||
|
||||
$this->response->redirect(['for' => 'home.login']);
|
||||
@ -30,7 +30,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function robotAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '疑似机器人请求']);
|
||||
return $this->jsonError(['msg' => '疑似机器人请求']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
public function forbiddenAction()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
return $this->ajaxError(['msg' => '无相关操作权限']);
|
||||
return $this->jsonError(['msg' => '无相关操作权限']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@ class ReviewController extends Controller
|
||||
|
||||
$data = $service->getReview($review->id);
|
||||
|
||||
return $this->ajaxSuccess($data);
|
||||
return $this->jsonSuccess($data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Http\Home;
|
||||
|
||||
use App\Http\Home\Services\AuthUser;
|
||||
use App\Services\AuthUser\Home as HomeAuthUser;
|
||||
use Phalcon\DiInterface;
|
||||
use Phalcon\Mvc\ModuleDefinitionInterface;
|
||||
use Phalcon\Mvc\View;
|
||||
@ -27,7 +27,7 @@ class Module implements ModuleDefinitionInterface
|
||||
});
|
||||
|
||||
$di->setShared('auth', function () {
|
||||
$authUser = new AuthUser();
|
||||
$authUser = new HomeAuthUser();
|
||||
return $authUser;
|
||||
});
|
||||
}
|
||||
|
@ -2,44 +2,12 @@
|
||||
|
||||
namespace App\Http\Home\Services;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
use App\Validators\Validator as AppValidator;
|
||||
use App\Traits\Auth as AuthTrait;
|
||||
use Phalcon\Mvc\User\Component;
|
||||
|
||||
class Service extends Component
|
||||
{
|
||||
|
||||
public function getCurrentUser()
|
||||
{
|
||||
$authUser = $this->getAuthUser();
|
||||
|
||||
if ($authUser) {
|
||||
$user = UserModel::findFirst($authUser->id);
|
||||
} else {
|
||||
$user = new UserModel();
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function getLoginUser()
|
||||
{
|
||||
$authUser = $this->getAuthUser();
|
||||
|
||||
$validator = new AppValidator();
|
||||
|
||||
$validator->checkAuthUser($authUser);
|
||||
|
||||
$user = UserModel::findFirst($authUser->id);
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function getAuthUser()
|
||||
{
|
||||
$auth = $this->getDI()->get('auth');
|
||||
|
||||
return $auth->getAuthInfo();
|
||||
}
|
||||
use AuthTrait;
|
||||
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Library\Util;
|
||||
|
||||
use Phalcon\Cache\Backend\Redis;
|
||||
use Phalcon\Di;
|
||||
use Phalcon\Text;
|
||||
|
||||
class Verification
|
||||
{
|
||||
|
||||
public static function code($key, $lifetime = 300)
|
||||
{
|
||||
/**
|
||||
* @var Redis $cache
|
||||
*/
|
||||
$cache = Di::getDefault()->get('cache');
|
||||
|
||||
$code = Text::random(Text::RANDOM_NUMERIC, 6);
|
||||
|
||||
$cache->save(self::getKey($key), $code, $lifetime);
|
||||
|
||||
return $code;
|
||||
}
|
||||
|
||||
public static function checkCode($key, $code)
|
||||
{
|
||||
/**
|
||||
* @var Redis $cache
|
||||
*/
|
||||
$cache = Di::getDefault()->get('cache');
|
||||
|
||||
$value = $cache->get(self::getKey($key));
|
||||
|
||||
return $code == $value;
|
||||
}
|
||||
|
||||
public static function getKey($key)
|
||||
{
|
||||
return "verify:{$key}";
|
||||
}
|
||||
|
||||
}
|
@ -84,14 +84,18 @@ class Account extends Model
|
||||
public function beforeCreate()
|
||||
{
|
||||
$this->salt = Password::salt();
|
||||
|
||||
$this->password = Password::hash($this->password, $this->salt);
|
||||
|
||||
$this->created_at = time();
|
||||
}
|
||||
|
||||
public function beforeUpdate()
|
||||
{
|
||||
if (!empty($this->password)) {
|
||||
|
||||
$this->salt = Password::salt();
|
||||
|
||||
$this->password = Password::hash($this->password, $this->salt);
|
||||
}
|
||||
|
||||
@ -101,8 +105,10 @@ class Account extends Model
|
||||
public function afterCreate()
|
||||
{
|
||||
$user = new User();
|
||||
|
||||
$user->id = $this->id;
|
||||
$user->name = "user_{$this->id}";
|
||||
|
||||
$user->create();
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Caches\Config as ConfigCache;
|
||||
|
||||
class Config extends Model
|
||||
{
|
||||
|
||||
@ -40,10 +38,4 @@ class Config extends Model
|
||||
return 'kg_config';
|
||||
}
|
||||
|
||||
public function afterUpdate()
|
||||
{
|
||||
$configCache = new ConfigCache();
|
||||
$configCache->rebuild();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ class Order extends Repository
|
||||
* @param string $itemType
|
||||
* @return OrderModel|Model|bool
|
||||
*/
|
||||
public function findFinishedUserOrder($userId, $itemId, $itemType)
|
||||
public function findUserLastFinishedOrder($userId, $itemId, $itemType)
|
||||
{
|
||||
$status = OrderModel::STATUS_FINISHED;
|
||||
|
||||
@ -125,11 +125,13 @@ class Order extends Repository
|
||||
* @param string $itemType
|
||||
* @return OrderModel|Model|bool
|
||||
*/
|
||||
public function findLastUserOrder($userId, $itemId, $itemType)
|
||||
public function findUserLastPendingOrder($userId, $itemId, $itemType)
|
||||
{
|
||||
$status = OrderModel::STATUS_PENDING;
|
||||
|
||||
$result = OrderModel::findFirst([
|
||||
'conditions' => 'user_id = ?1 AND item_id = ?2 AND item_type = ?3',
|
||||
'bind' => [1 => $userId, 2 => $itemId, 3 => $itemType],
|
||||
'conditions' => 'user_id = ?1 AND item_id = ?2 AND item_type = ?3 AND status= ?4',
|
||||
'bind' => [1 => $userId, 2 => $itemId, 3 => $itemType, 4 => $status],
|
||||
'order' => 'id DESC',
|
||||
]);
|
||||
|
||||
|
16
app/Services/AuthUser.php
Normal file
16
app/Services/AuthUser.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
|
||||
abstract class AuthUser extends Service
|
||||
{
|
||||
|
||||
abstract function saveAuthInfo(UserModel $user);
|
||||
|
||||
abstract function getAuthInfo();
|
||||
|
||||
abstract function clearAuthInfo();
|
||||
|
||||
}
|
@ -1,42 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Admin\Services;
|
||||
namespace App\Services\AuthUser;
|
||||
|
||||
use App\Models\Role as RoleModel;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Repos\Role as RoleRepo;
|
||||
use Phalcon\Mvc\User\Component;
|
||||
use App\Services\AuthUser;
|
||||
|
||||
class AuthUser extends Component
|
||||
class Admin extends AuthUser
|
||||
{
|
||||
|
||||
/**
|
||||
* 判断权限
|
||||
*
|
||||
* @param string $route
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPermission($route)
|
||||
{
|
||||
$authUser = $this->getAuthInfo();
|
||||
|
||||
if ($authUser->root) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (in_array($route, $authUser->routes)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 写入会话
|
||||
*
|
||||
* @param UserModel $user
|
||||
*/
|
||||
public function setAuthInfo(UserModel $user)
|
||||
public function saveAuthInfo(UserModel $user)
|
||||
{
|
||||
$roleRepo = new RoleRepo();
|
||||
|
||||
@ -60,7 +39,7 @@ class AuthUser extends Component
|
||||
/**
|
||||
* 清除会话
|
||||
*/
|
||||
public function removeAuthInfo()
|
||||
public function clearAuthInfo()
|
||||
{
|
||||
$authKey = $this->getAuthKey();
|
||||
|
||||
@ -89,4 +68,25 @@ class AuthUser extends Component
|
||||
return 'admin_info';
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断权限
|
||||
*
|
||||
* @param string $route
|
||||
* @return bool
|
||||
*/
|
||||
public function hasPermission($route)
|
||||
{
|
||||
$authUser = $this->getAuthInfo();
|
||||
|
||||
if ($authUser->root) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (in_array($route, $authUser->routes)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
82
app/Services/AuthUser/Api.php
Normal file
82
app/Services/AuthUser/Api.php
Normal file
@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\AuthUser;
|
||||
|
||||
use App\Library\Cache\Backend\Redis as RedisCache;
|
||||
use App\Models\User as UserModel;
|
||||
use App\Services\AuthUser;
|
||||
|
||||
class Api extends AuthUser
|
||||
{
|
||||
|
||||
public function saveAuthInfo(UserModel $user)
|
||||
{
|
||||
$authUser = new \stdClass();
|
||||
|
||||
$authUser->id = $user->id;
|
||||
$authUser->name = $user->name;
|
||||
$authUser->avatar = $user->avatar;
|
||||
$authUser->admin_role = $user->admin_role;
|
||||
$authUser->edu_role = $user->edu_role;
|
||||
|
||||
$authToken = $this->getRandToken($user->id);
|
||||
|
||||
$cacheKey = $this->getCacheKey($authToken);
|
||||
|
||||
$cache = $this->getCache();
|
||||
|
||||
$cache->save($cacheKey, $authUser);
|
||||
}
|
||||
|
||||
public function clearAuthInfo()
|
||||
{
|
||||
$authToken = $this->getAuthToken();
|
||||
|
||||
$cacheKey = $this->getCacheKey($authToken);
|
||||
|
||||
$cache = $this->getCache();
|
||||
|
||||
$cache->delete($cacheKey);
|
||||
}
|
||||
|
||||
public function getAuthInfo()
|
||||
{
|
||||
$authToken = $this->getAuthToken();
|
||||
|
||||
$cacheKey = $this->getCacheKey($authToken);
|
||||
|
||||
$cache = $this->getCache();
|
||||
|
||||
return $cache->get($cacheKey);
|
||||
}
|
||||
|
||||
public function getAuthToken()
|
||||
{
|
||||
$authToken = $this->request->getHeader('Authorization');
|
||||
|
||||
return $authToken;
|
||||
}
|
||||
|
||||
public function getCacheKey($token)
|
||||
{
|
||||
return "token:{$token}";
|
||||
}
|
||||
|
||||
public function getRandToken($userId)
|
||||
{
|
||||
$token = md5($userId . time() . rand(1000, 9999));
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RedisCache
|
||||
*/
|
||||
public function getCache()
|
||||
{
|
||||
$cache = $this->getDI()->get('cache');
|
||||
|
||||
return $cache;
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Home\Services;
|
||||
namespace App\Services\AuthUser;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
use Phalcon\Mvc\User\Component;
|
||||
use App\Services\AuthUser;
|
||||
|
||||
class AuthUser extends Component
|
||||
class Home extends AuthUser
|
||||
{
|
||||
|
||||
/**
|
||||
@ -13,7 +13,7 @@ class AuthUser extends Component
|
||||
*
|
||||
* @param UserModel $user
|
||||
*/
|
||||
public function setAuthInfo(UserModel $user)
|
||||
public function saveAuthInfo(UserModel $user)
|
||||
{
|
||||
$authKey = $this->getAuthKey();
|
||||
|
||||
@ -31,7 +31,7 @@ class AuthUser extends Component
|
||||
/**
|
||||
* 清除会话
|
||||
*/
|
||||
public function removeAuthInfo()
|
||||
public function clearAuthInfo()
|
||||
{
|
||||
$authKey = $this->getAuthKey();
|
||||
|
28
app/Services/Frontend/Account/Login.php
Normal file
28
app/Services/Frontend/Account/Login.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Frontend\Account;
|
||||
|
||||
use App\Services\Frontend\Service;
|
||||
use App\Validators\Account as AccountValidator;
|
||||
use App\Validators\Security as SecurityValidator;
|
||||
|
||||
class Login extends Service
|
||||
{
|
||||
|
||||
public function loginByPassword($account, $password)
|
||||
{
|
||||
$validator = new AccountValidator();
|
||||
|
||||
$user = $validator->checkUserLogin($account, $password);
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function loginByVerify($account, $code)
|
||||
{
|
||||
$validator = new SecurityValidator();
|
||||
|
||||
$validator->checkVerifyCode($account, $code);
|
||||
}
|
||||
|
||||
}
|
20
app/Services/Frontend/Account/Logout.php
Normal file
20
app/Services/Frontend/Account/Logout.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Frontend\Account;
|
||||
|
||||
use App\Services\Frontend\Service;
|
||||
|
||||
class Logout extends Service
|
||||
{
|
||||
|
||||
public function logoutBySession()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public function logoutByToken()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -7,10 +7,10 @@ use App\Services\Frontend\Service;
|
||||
use App\Validators\Account as AccountValidator;
|
||||
use App\Validators\Security as SecurityValidator;
|
||||
|
||||
class AccountCreate extends Service
|
||||
class Register extends Service
|
||||
{
|
||||
|
||||
public function createAccount()
|
||||
public function register()
|
||||
{
|
||||
$post = $this->request->getPost();
|
||||
|
@ -78,8 +78,8 @@ class CourseInfo extends Service
|
||||
'summary' => $course->summary,
|
||||
'details' => $course->details,
|
||||
'keywords' => $course->keywords,
|
||||
'market_price' => $course->market_price,
|
||||
'vip_price' => $course->vip_price,
|
||||
'market_price' => (float)$course->market_price,
|
||||
'vip_price' => (float)$course->vip_price,
|
||||
'study_expiry' => $course->study_expiry,
|
||||
'refund_expiry' => $course->refund_expiry,
|
||||
'score' => $course->score,
|
||||
|
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Frontend;
|
||||
namespace App\Services\Frontend\Course;
|
||||
|
||||
use App\Library\Paginator\Query as PagerQuery;
|
||||
use App\Repos\Course as CourseRepo;
|
||||
use App\Services\Category as CategoryService;
|
||||
use App\Services\Frontend\Service;
|
||||
|
||||
class CourseList extends Service
|
||||
{
|
||||
@ -53,18 +54,16 @@ class CourseList extends Service
|
||||
foreach ($courses as $course) {
|
||||
|
||||
$course['cover'] = $imgBaseUrl . $course['cover'];
|
||||
$course['attrs'] = json_decode($course['attrs'], true);
|
||||
|
||||
$items[] = [
|
||||
'id' => $course['id'],
|
||||
'title' => $course['title'],
|
||||
'cover' => $course['cover'],
|
||||
'summary' => $course['summary'],
|
||||
'market_price' => $course['market_price'],
|
||||
'vip_price' => $course['vip_price'],
|
||||
'market_price' => (float)$course['market_price'],
|
||||
'vip_price' => (float)$course['vip_price'],
|
||||
'model' => $course['model'],
|
||||
'level' => $course['level'],
|
||||
'attrs' => $course['attrs'],
|
||||
'user_count' => $course['user_count'],
|
||||
'lesson_count' => $course['lesson_count'],
|
||||
'review_count' => $course['review_count'],
|
||||
|
@ -43,8 +43,8 @@ class PackageList extends Service
|
||||
$result[] = [
|
||||
'id' => $package->id,
|
||||
'title' => $package->title,
|
||||
'market_price' => $package->market_price,
|
||||
'vip_price' => $package->vip_price,
|
||||
'market_price' => (float)$package->market_price,
|
||||
'vip_price' => (float)$package->vip_price,
|
||||
'courses' => $courses,
|
||||
];
|
||||
}
|
||||
@ -71,8 +71,8 @@ class PackageList extends Service
|
||||
'title' => $course->title,
|
||||
'cover' => $course->cover,
|
||||
'summary' => $course->summary,
|
||||
'market_price' => $course->market_price,
|
||||
'vip_price' => $course->vip_price,
|
||||
'market_price' => (float)$course->market_price,
|
||||
'vip_price' => (float)$course->vip_price,
|
||||
'model' => $course->model,
|
||||
'level' => $course->level,
|
||||
];
|
||||
|
@ -34,7 +34,7 @@ class OrderCreate extends Service
|
||||
|
||||
$orderRepo = new OrderRepo();
|
||||
|
||||
$order = $orderRepo->findLastUserOrder($user->id, $post['item_id'], $post['item_type']);
|
||||
$order = $orderRepo->findUserLastPendingOrder($user->id, $post['item_id'], $post['item_type']);
|
||||
|
||||
/**
|
||||
* 存在新鲜的未支付订单直接返回(减少订单记录)
|
||||
|
@ -1,13 +1,15 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Frontend;
|
||||
namespace App\Services\Frontend\Teacher;
|
||||
|
||||
use App\Builders\CourseUserList as CourseUserListBuilder;
|
||||
use App\Library\Paginator\Query as PagerQuery;
|
||||
use App\Models\CourseUser as CourseUserModel;
|
||||
use App\Repos\CourseUser as CourseUserRepo;
|
||||
use App\Services\Frontend\Service;
|
||||
use App\Services\Frontend\UserTrait;
|
||||
|
||||
class TeacherCourseList extends Service
|
||||
class CourseList extends Service
|
||||
{
|
||||
|
||||
use UserTrait;
|
52
app/Services/Frontend/Teacher/TeacherInfo.php
Normal file
52
app/Services/Frontend/Teacher/TeacherInfo.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Frontend\Teacher;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
use App\Services\Frontend\Service;
|
||||
use App\Services\Frontend\UserTrait;
|
||||
|
||||
class TeacherInfo extends Service
|
||||
{
|
||||
|
||||
use UserTrait;
|
||||
|
||||
public function getUser($id)
|
||||
{
|
||||
$user = $this->checkUser($id);
|
||||
|
||||
return $this->handleUser($user);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param UserModel $user
|
||||
* @return array
|
||||
*/
|
||||
protected function handleUser($user)
|
||||
{
|
||||
$user->avatar = kg_img_url($user->avatar);
|
||||
$user->vip = $user->vip == 1;
|
||||
$user->locked = $user->locked == 1;
|
||||
|
||||
$result = [
|
||||
'id' => $user->id,
|
||||
'name' => $user->name,
|
||||
'avatar' => $user->avatar,
|
||||
'title' => $user->title,
|
||||
'about' => $user->about,
|
||||
'location' => $user->location,
|
||||
'gender' => $user->gender,
|
||||
'vip' => $user->vip,
|
||||
'locked' => $user->locked,
|
||||
'vip_expiry_time' => $user->vip_expiry_time,
|
||||
'lock_expiry_time' => $user->lock_expiry_time,
|
||||
'edu_role' => $user->edu_role,
|
||||
'admin_role' => $user->admin_role,
|
||||
'notice_count' => $user->notice_count,
|
||||
'msg_count' => $user->msg_count,
|
||||
];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Services\Mailer;
|
||||
|
||||
use App\Library\Util\Verification;
|
||||
use App\Services\Mailer;
|
||||
use App\Services\Verification;
|
||||
|
||||
class Verify extends Mailer
|
||||
{
|
||||
@ -14,11 +14,13 @@ class Verify extends Mailer
|
||||
|
||||
$message = $this->manager->createMessage();
|
||||
|
||||
$subject = '邮件验证码';
|
||||
$verification = new Verification();
|
||||
|
||||
$minutes = 5;
|
||||
|
||||
$code = Verification::code($email, 60 * $minutes);
|
||||
$code = $verification->getSmsCode($email, 60 * $minutes);
|
||||
|
||||
$subject = '邮件验证码';
|
||||
|
||||
$content = $this->formatContent($code, $minutes);
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Caches\Config as ConfigCache;
|
||||
use App\Caches\SectionConfig as SectionConfigCache;
|
||||
use App\Library\Logger as AppLogger;
|
||||
use Phalcon\Logger\Adapter\File as FileLogger;
|
||||
use Phalcon\Mvc\User\Component;
|
||||
@ -33,9 +33,9 @@ class Service extends Component
|
||||
*/
|
||||
public function getSectionConfig($section)
|
||||
{
|
||||
$configCache = new ConfigCache();
|
||||
$cache = new SectionConfigCache();
|
||||
|
||||
$result = $configCache->getSectionConfig($section);
|
||||
$result = $cache->get($section);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace App\Services\Smser;
|
||||
|
||||
use App\Library\Util\Verification;
|
||||
use App\Services\Smser;
|
||||
use App\Services\Verification;
|
||||
|
||||
class Verify extends Smser
|
||||
{
|
||||
@ -12,9 +12,11 @@ class Verify extends Smser
|
||||
|
||||
public function handle($phone)
|
||||
{
|
||||
$verifyCode = new Verification();
|
||||
|
||||
$minutes = 5;
|
||||
|
||||
$code = Verification::code($phone, 60 * $minutes);
|
||||
$code = $verifyCode->getSmsCode($phone, 60 * $minutes);
|
||||
|
||||
$templateId = $this->getTemplateId($this->templateCode);
|
||||
|
||||
|
83
app/Services/Verification.php
Normal file
83
app/Services/Verification.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Services\Mailer\Verify as VerifyMailer;
|
||||
use App\Services\Smser\Verify as VerifySmser;
|
||||
use Phalcon\Cache\Backend\Redis;
|
||||
use Phalcon\Text;
|
||||
|
||||
class Verification extends Service
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Redis
|
||||
*/
|
||||
protected $cache;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->cache = $this->getDI()->get('cache');
|
||||
}
|
||||
|
||||
public function sendSmsCode($phone)
|
||||
{
|
||||
$smser = new VerifySmser();
|
||||
|
||||
$smser->handle($phone);
|
||||
}
|
||||
|
||||
public function sendMailCode($email)
|
||||
{
|
||||
$mailer = new VerifyMailer();
|
||||
|
||||
$mailer->handle($email);
|
||||
}
|
||||
|
||||
public function getSmsCode($phone, $lifetime = 300)
|
||||
{
|
||||
$key = $this->getSmsCacheKey($phone);
|
||||
|
||||
$code = Text::random(Text::RANDOM_NUMERIC, 6);
|
||||
|
||||
$this->cache->save($key, $code, $lifetime);
|
||||
}
|
||||
|
||||
public function getMailCode($email, $lifetime = 300)
|
||||
{
|
||||
$key = $this->getSmsCacheKey($email);
|
||||
|
||||
$code = Text::random(Text::RANDOM_NUMERIC, 6);
|
||||
|
||||
$this->cache->save($key, $code, $lifetime);
|
||||
}
|
||||
|
||||
public function checkSmsCode($phone, $code)
|
||||
{
|
||||
$key = $this->getSmsCacheKey($phone);
|
||||
|
||||
$value = $this->cache->get($key);
|
||||
|
||||
return $code == $value;
|
||||
}
|
||||
|
||||
public function checkMailCode($email, $code)
|
||||
{
|
||||
$key = $this->getMailCacheKey($email);
|
||||
|
||||
$value = $this->cache->get($key);
|
||||
|
||||
return $code == $value;
|
||||
}
|
||||
|
||||
protected function getMailCacheKey($email)
|
||||
{
|
||||
return "verify:mail:{$email}";
|
||||
}
|
||||
|
||||
protected function getSmsCacheKey($phone)
|
||||
{
|
||||
return "verify:sms:{$phone}";
|
||||
}
|
||||
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
trait Ajax
|
||||
{
|
||||
|
||||
public function ajaxSuccess($content = [])
|
||||
{
|
||||
$content['code'] = 0;
|
||||
$content['msg'] = $content['msg'] ?? '';
|
||||
|
||||
$this->response->setStatusCode(200);
|
||||
$this->response->setJsonContent($content);
|
||||
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
public function ajaxError($content = [])
|
||||
{
|
||||
$content['code'] = $content['code'] ?? 1;
|
||||
$content['msg'] = $content['msg'] ?? $this->getErrorMessage($content['code']);
|
||||
|
||||
$this->response->setJsonContent($content);
|
||||
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
public function getErrorMessage($code)
|
||||
{
|
||||
$errors = require config_path() . '/errors.php';
|
||||
|
||||
$message = $errors[$code] ?? $code;
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
}
|
@ -3,7 +3,9 @@
|
||||
namespace App\Traits;
|
||||
|
||||
use App\Models\User as UserModel;
|
||||
use App\Validators\Validator;
|
||||
use App\Repos\User as UserRepo;
|
||||
use App\Services\AuthUser as AuthUserService;
|
||||
use App\Validators\Validator as AppValidator;
|
||||
|
||||
trait Auth
|
||||
{
|
||||
@ -12,12 +14,14 @@ trait Auth
|
||||
{
|
||||
$authUser = $this->getAuthUser();
|
||||
|
||||
if ($authUser) {
|
||||
$user = UserModel::findFirst($authUser->id);
|
||||
} else {
|
||||
$user = new UserModel();
|
||||
if (!$authUser) {
|
||||
return $this->getGuestUser();
|
||||
}
|
||||
|
||||
$userRepo = new UserRepo();
|
||||
|
||||
$user = $userRepo->findById($authUser->id);
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
@ -25,17 +29,32 @@ trait Auth
|
||||
{
|
||||
$authUser = $this->getAuthUser();
|
||||
|
||||
$validator = new Validator();
|
||||
$validator = new AppValidator();
|
||||
|
||||
$validator->checkAuthUser($authUser);
|
||||
|
||||
$user = UserModel::findFirst($authUser->id);
|
||||
$userRepo = new UserRepo();
|
||||
|
||||
$user = $userRepo->findById($authUser->id);
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function getGuestUser()
|
||||
{
|
||||
$user = new UserModel();
|
||||
|
||||
$user->id = 0;
|
||||
$user->name = 'guest';
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function getAuthUser()
|
||||
{
|
||||
/**
|
||||
* @var AuthUserService $auth
|
||||
*/
|
||||
$auth = $this->getDI()->get('auth');
|
||||
|
||||
return $auth->getAuthInfo();
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Phalcon\Di;
|
||||
use Phalcon\Http\Request;
|
||||
use WhichBrowser\Parser as BrowserParser;
|
||||
|
||||
trait Client
|
||||
@ -9,14 +11,24 @@ trait Client
|
||||
|
||||
public function getClientIp()
|
||||
{
|
||||
$clientIp = $this->request->getClientAddress();
|
||||
/**
|
||||
* @var Request $request
|
||||
*/
|
||||
$request = Di::getDefault()->get('request');
|
||||
|
||||
$clientIp = $request->getClientAddress();
|
||||
|
||||
return $clientIp;
|
||||
}
|
||||
|
||||
public function getClientType()
|
||||
{
|
||||
$userAgent = $this->request->getServer('HTTP_USER_AGENT');
|
||||
/**
|
||||
* @var Request $request
|
||||
*/
|
||||
$request = Di::getDefault()->get('request');
|
||||
|
||||
$userAgent = $request->getServer('HTTP_USER_AGENT');
|
||||
|
||||
$result = new BrowserParser($userAgent);
|
||||
|
||||
|
69
app/Traits/Response.php
Normal file
69
app/Traits/Response.php
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Phalcon\Di;
|
||||
use Phalcon\Http\Response as HttpResponse;
|
||||
|
||||
trait Response
|
||||
{
|
||||
|
||||
public function jsonSuccess($content = [])
|
||||
{
|
||||
$content['code'] = 0;
|
||||
|
||||
$content['msg'] = $content['msg'] ?? '';
|
||||
|
||||
/**
|
||||
* @var HttpResponse $response
|
||||
*/
|
||||
$response = Di::getDefault()->get('response');
|
||||
|
||||
$response->setStatusCode(200);
|
||||
|
||||
$response->setJsonContent($content);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function jsonError($content = [])
|
||||
{
|
||||
$content['code'] = $content['code'] ?? 1;
|
||||
|
||||
$content['msg'] = $content['msg'] ?? $this->getErrorMessage($content['code']);
|
||||
|
||||
/**
|
||||
* @var HttpResponse $response
|
||||
*/
|
||||
$response = Di::getDefault()->get('response');
|
||||
|
||||
$response->setJsonContent($content);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function jsonPaginate($paginate)
|
||||
{
|
||||
$items = $paginate->items ?? [];
|
||||
$totalItems = $paginate->total_items ?? 0;
|
||||
$totalPages = $paginate->total_pages ?? 0;
|
||||
|
||||
$content = [
|
||||
'items' => $items,
|
||||
'total_items' => $totalItems,
|
||||
'total_pages' => $totalPages,
|
||||
];
|
||||
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
public function getErrorMessage($code)
|
||||
{
|
||||
$errors = require config_path() . '/errors.php';
|
||||
|
||||
$message = $errors[$code] ?? $code;
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
}
|
@ -2,30 +2,54 @@
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Phalcon\Di;
|
||||
use Phalcon\Http\Request;
|
||||
|
||||
trait Security
|
||||
{
|
||||
|
||||
public function checkCsrfToken()
|
||||
{
|
||||
$tokenKey = $this->request->getHeader('X-Csrf-Token-Key');
|
||||
$tokenValue = $this->request->getHeader('X-Csrf-Token-Value');
|
||||
$checkToken = $this->security->checkToken($tokenKey, $tokenValue);
|
||||
/**
|
||||
* @var Request $request ;
|
||||
*/
|
||||
$request = Di::getDefault()->get('request');
|
||||
|
||||
$tokenKey = $request->getHeader('X-Csrf-Token-Key');
|
||||
$tokenValue = $request->getHeader('X-Csrf-Token-Value');
|
||||
|
||||
/**
|
||||
* @var \App\Library\Security $security
|
||||
*/
|
||||
$security = Di::getDefault()->get('security');
|
||||
|
||||
$checkToken = $security->checkToken($tokenKey, $tokenValue);
|
||||
|
||||
return $checkToken;
|
||||
}
|
||||
|
||||
public function checkHttpReferer()
|
||||
{
|
||||
$httpHost = parse_url($this->request->getHttpReferer(), PHP_URL_HOST);
|
||||
/**
|
||||
* @var Request $request ;
|
||||
*/
|
||||
$request = Di::getDefault()->get('request');
|
||||
|
||||
$checkHost = $httpHost == $this->request->getHttpHost();
|
||||
$httpHost = parse_url($request->getHttpReferer(), PHP_URL_HOST);
|
||||
|
||||
$checkHost = $httpHost == $request->getHttpHost();
|
||||
|
||||
return $checkHost;
|
||||
}
|
||||
|
||||
public function isNotSafeRequest()
|
||||
{
|
||||
$method = $this->request->getMethod();
|
||||
/**
|
||||
* @var Request $request ;
|
||||
*/
|
||||
$request = Di::getDefault()->get('request');
|
||||
|
||||
$method = $request->getMethod();
|
||||
|
||||
$list = ['post', 'put', 'patch', 'delete'];
|
||||
|
||||
|
@ -112,9 +112,10 @@ class Order extends Validator
|
||||
|
||||
$itemType = OrderModel::ITEM_PACKAGE;
|
||||
|
||||
$order = $orderRepo->findFinishedUserOrder($userId, $courseId, $itemType);
|
||||
$order = $orderRepo->findUserLastFinishedOrder($userId, $courseId, $itemType);
|
||||
|
||||
if ($order) {
|
||||
|
||||
/**
|
||||
* @var array $itemInfo
|
||||
*/
|
||||
@ -132,7 +133,7 @@ class Order extends Validator
|
||||
|
||||
$itemType = OrderModel::ITEM_PACKAGE;
|
||||
|
||||
$order = $orderRepo->findFinishedUserOrder($userId, $packageId, $itemType);
|
||||
$order = $orderRepo->findUserLastFinishedOrder($userId, $packageId, $itemType);
|
||||
|
||||
if ($order) {
|
||||
throw new BadRequestException('order.has_bought_package');
|
||||
|
@ -3,24 +3,35 @@
|
||||
namespace App\Validators;
|
||||
|
||||
use App\Exceptions\BadRequest as BadRequestException;
|
||||
use App\Library\Util\Verification as VerifyUtil;
|
||||
use App\Library\Validator\Common as CommonValidator;
|
||||
use App\Services\Captcha as CaptchaService;
|
||||
use App\Services\Verification as VerificationService;
|
||||
|
||||
class Security extends Validator
|
||||
{
|
||||
|
||||
public function checkVerifyCode($key, $code)
|
||||
{
|
||||
if (!VerifyUtil::checkCode($key, $code)) {
|
||||
$verification = new VerificationService();
|
||||
|
||||
$result = false;
|
||||
|
||||
if (CommonValidator::email($key)) {
|
||||
$result = $verification->checkMailCode($key, $code);
|
||||
} elseif (CommonValidator::phone($key)) {
|
||||
$result = $verification->checkSmsCode($key, $code);
|
||||
}
|
||||
|
||||
if (!$result) {
|
||||
throw new BadRequestException('security.invalid_verify_code');
|
||||
}
|
||||
}
|
||||
|
||||
public function checkCaptchaCode($ticket, $rand)
|
||||
{
|
||||
$captchaService = new CaptchaService();
|
||||
$captcha = new CaptchaService();
|
||||
|
||||
$result = $captchaService->verify($ticket, $rand);
|
||||
$result = $captcha->verify($ticket, $rand);
|
||||
|
||||
if (!$result) {
|
||||
throw new BadRequestException('security.invalid_captcha_code');
|
||||
|
@ -39,7 +39,7 @@ class HttpErrorHandler extends Component
|
||||
if ($this->router->getModuleName() == 'api') {
|
||||
$this->apiError($e);
|
||||
} else if ($this->isAjax()) {
|
||||
$this->ajaxError($e);
|
||||
$this->jsonError($e);
|
||||
} else {
|
||||
$this->pageError($e);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user