1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-12 19:39:10 +08:00

1.简化部分路由地址

2.优化账户安全以及登录页面
This commit is contained in:
xiaochong0302 2020-09-29 18:34:47 +08:00
parent d75885e3ca
commit 0a1c64d2b6
33 changed files with 294 additions and 271 deletions

View File

@ -84,7 +84,7 @@ class UserController extends Controller
$roles = $userService->getRoles(); $roles = $userService->getRoles();
if ($user->admin_role == RoleModel::ROLE_ROOT) { if ($user->admin_role == RoleModel::ROLE_ROOT) {
$this->response->redirect(['action' => 'list']); $this->response->redirect(['for' => 'admin.user.list']);
} }
$this->view->setVar('user', $user); $this->view->setVar('user', $user);

View File

@ -4,17 +4,17 @@
{%- macro position_info(value) %} {%- macro position_info(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">顶部</span> 顶部
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">底部</span> 底部
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro target_info(value) %} {%- macro target_info(value) %}
{% if value == '_blank' %} {% if value == '_blank' %}
<span class="layui-badge layui-bg-green">新窗口</span> 新窗口
{% elseif value == '_self' %} {% elseif value == '_self' %}
<span class="layui-badge layui-bg-blue">原窗口</span> 原窗口
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -38,28 +38,28 @@
{%- macro item_type(value) %} {%- macro item_type(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">课程</span> 课程
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">套餐</span> 套餐
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-red">赞赏</span> 赞赏
{% elseif value == 4 %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-orange">会员</span> 会员
{% elseif value == 99 %} {% elseif value == 99 %}
<span class="layui-badge layui-bg-black">测试</span> 测试
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro order_status(value) %} {%- macro order_status(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待支付</span> 待支付
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-gray">发货中</span> 发货中
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-green">已完成</span> 已完成
{% elseif value == 4 %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-cyan">已关闭</span> 已关闭
{% elseif value == 5 %} {% elseif value == 5 %}
<span class="layui-badge layui-bg-red">已退款</span> 已退款
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -1,16 +1,16 @@
{%- macro refund_status(value) %} {%- macro refund_status(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待处理</span> 待处理
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-gray">已取消</span> 已取消
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-orange">已审核</span> 已审核
{% elseif value == 4 %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-red">已拒绝</span> 已拒绝
{% elseif value == 5 %} {% elseif value == 5 %}
<span class="layui-badge layui-bg-green">已完成</span> 已完成
{% elseif value == 6 %} {% elseif value == 6 %}
<span class="layui-badge layui-bg-cyan">已失败</span> 已失败
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -3,10 +3,10 @@
{% block content %} {% block content %}
{%- macro type_info(value) %} {%- macro type_info(value) %}
{% if value == 'system' %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">内置</span> 内置
{% elseif value == 'custom' %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">自定</span> 自定义
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
@ -43,7 +43,7 @@
{% set restore_url = url({'for':'admin.role.restore','id':item.id}) %} {% set restore_url = url({'for':'admin.role.restore','id':item.id}) %}
<tr> <tr>
<td>{{ item.id }}</td> <td>{{ item.id }}</td>
<td><a href="javascript:" title="{{ item.summary }}">{{ item.name }}</a></td> <td><a href="{{ edit_url }}" title="{{ item.summary }}">{{ item.name }}</a></td>
<td>{{ type_info(item.type) }}</td> <td>{{ type_info(item.type) }}</td>
<td> <td>
<a href="{{ user_list_url }}"> <a href="{{ user_list_url }}">

View File

@ -4,11 +4,11 @@
{%- macro target_info(value) %} {%- macro target_info(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">课程</span> 课程
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-blue">单页</span> 单页
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-gray">链接</span> 链接
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -4,11 +4,11 @@
{%- macro source_type_info(value) %} {%- macro source_type_info(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-green">免费</span> 免费
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-orange">付费</span> <span class="layui-badge layui-bg-orange">付费</span>
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-blue">导入</span> 导入
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-CN-Hans"> <html lang="zh-CN-Hans">
<head> <head>
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="csrf-token" content="{{ csrfToken.getToken() }}"> <meta name="csrf-token" content="{{ csrfToken.getToken() }}">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-CN-Hans"> <html lang="zh-CN-Hans">
<head> <head>
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="csrf-token" content="{{ csrfToken.getToken() }}"> <meta name="csrf-token" content="{{ csrfToken.getToken() }}">

View File

@ -1,20 +1,20 @@
{%- macro channel_type(value) %} {%- macro channel_type(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">支付宝</span> 支付宝
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-green">微信</span> 微信
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro trade_status(value) %} {%- macro trade_status(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-blue">待支付</span> 待支付
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-green">已完成</span> 已完成
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-cyan">已关闭</span> 已关闭
{% elseif value == 4 %} {% elseif value == 4 %}
<span class="layui-badge layui-bg-red">已退款</span> 已退款
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -4,25 +4,25 @@
{%- macro gender_info(value) %} {%- macro gender_info(value) %}
{% if value == 1 %} {% if value == 1 %}
<span class="layui-badge layui-bg-gray"></span>
{% elseif value == 2 %} {% elseif value == 2 %}
<span class="layui-badge layui-bg-gray"></span>
{% elseif value == 3 %} {% elseif value == 3 %}
<span class="layui-badge layui-bg-gray"></span>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro edu_role_info(user) %} {%- macro edu_role_info(user) %}
{% if user.edu_role.id == 1 %} {% if user.edu_role.id == 1 %}
<span class="layui-badge layui-bg-gray">学员</span> 学员
{% elseif user.edu_role.id == 2 %} {% elseif user.edu_role.id == 2 %}
<span class="layui-badge layui-bg-blue">讲师</span> <a href="{{ url({'for':'admin.user.list'},{'edu_role':user.edu_role.id}) }}">讲师</a>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{%- macro admin_role_info(user) %} {%- macro admin_role_info(user) %}
{% if user.admin_role.id %} {% if user.admin_role.id > 0 %}
<span class="layui-badge layui-bg-gray">{{ user.admin_role.name }}</span> <a href="{{ url({'for':'admin.user.list'},{'admin_role':user.admin_role.id}) }}">{{ user.admin_role.name }}</a>
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}

View File

@ -7,11 +7,7 @@ use App\Services\Logic\Account\EmailUpdate as EmailUpdateService;
use App\Services\Logic\Account\PasswordReset as PasswordResetService; use App\Services\Logic\Account\PasswordReset as PasswordResetService;
use App\Services\Logic\Account\PasswordUpdate as PasswordUpdateService; use App\Services\Logic\Account\PasswordUpdate as PasswordUpdateService;
use App\Services\Logic\Account\PhoneUpdate as PhoneUpdateService; use App\Services\Logic\Account\PhoneUpdate as PhoneUpdateService;
use Phalcon\Mvc\View;
/**
* @RoutePrefix("/account")
*/
class AccountController extends Controller class AccountController extends Controller
{ {
@ -24,12 +20,12 @@ class AccountController extends Controller
$this->response->redirect('/'); $this->response->redirect('/');
} }
$returnUrl = $this->request->getHTTPReferer();
$service = new AccountService(); $service = new AccountService();
$captcha = $service->getSettings('captcha'); $captcha = $service->getSettings('captcha');
$returnUrl = $this->request->getHTTPReferer();
$this->view->setVar('return_url', $returnUrl); $this->view->setVar('return_url', $returnUrl);
$this->view->setVar('captcha', $captcha); $this->view->setVar('captcha', $captcha);
} }
@ -137,60 +133,6 @@ class AccountController extends Controller
$this->view->setVar('captcha', $captcha); $this->view->setVar('captcha', $captcha);
} }
/**
* @Get("/password/edit", name="home.account.edit_pwd")
*/
public function editPasswordAction()
{
if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'home.account.login']);
}
$service = new AccountService();
$captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_password');
$this->view->setVar('captcha', $captcha);
}
/**
* @Get("/phone/edit", name="home.account.edit_phone")
*/
public function editPhoneAction()
{
if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'home.account.login']);
}
$service = new AccountService();
$captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_phone');
$this->view->setVar('captcha', $captcha);
}
/**
* @Get("/email/edit", name="home.account.edit_email")
*/
public function editEmailAction()
{
if ($this->authUser->id == 0) {
$this->response->redirect(['for' => 'home.account.login']);
}
$service = new AccountService();
$captcha = $service->getSettings('captcha');
$this->view->setRenderLevel(View::LEVEL_ACTION_VIEW);
$this->view->pick('account/edit_email');
$this->view->setVar('captcha', $captcha);
}
/** /**
* @Post("/password/reset", name="home.account.reset_pwd") * @Post("/password/reset", name="home.account.reset_pwd")
*/ */
@ -219,7 +161,12 @@ class AccountController extends Controller
$service->handle(); $service->handle();
$content = ['msg' => '更新手机成功']; $location = $this->url->get(['for' => 'home.uc.account']);
$content = [
'location' => $location,
'msg' => '更新手机成功',
];
return $this->jsonSuccess($content); return $this->jsonSuccess($content);
} }
@ -233,7 +180,12 @@ class AccountController extends Controller
$service->handle(); $service->handle();
$content = ['msg' => '更新邮箱成功']; $location = $this->url->get(['for' => 'home.uc.account']);
$content = [
'location' => $location,
'msg' => '更新邮箱成功',
];
return $this->jsonSuccess($content); return $this->jsonSuccess($content);
} }
@ -247,7 +199,12 @@ class AccountController extends Controller
$service->handle(); $service->handle();
$content = ['msg' => '更新密码成功']; $location = $this->url->get(['for' => 'home.uc.account']);
$content = [
'location' => $location,
'msg' => '更新密码成功',
];
return $this->jsonSuccess($content); return $this->jsonSuccess($content);
} }

View File

@ -24,7 +24,7 @@ class ImController extends Controller
} }
/** /**
* @Get("/index", name="home.im.index") * @Get("/", name="home.im.index")
*/ */
public function indexAction() public function indexAction()
{ {

View File

@ -1,6 +1,5 @@
<?php <?php
namespace App\Http\Home\Controllers; namespace App\Http\Home\Controllers;
use App\Services\Logic\Teacher\Console\ConsultList as ConsultListService; use App\Services\Logic\Teacher\Console\ConsultList as ConsultListService;
@ -28,7 +27,7 @@ class TeacherConsoleController extends Controller
} }
/** /**
* @Get("/index", name="home.tc.index") * @Get("/", name="home.tc.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -95,7 +94,7 @@ class TeacherConsoleController extends Controller
'stream_code' => substr($pushUrl, $pos + 1), 'stream_code' => substr($pushUrl, $pos + 1),
]; ];
$this->view->pick('teacher/console/live_push'); $this->view->pick('teacher/console/live');
$this->view->setVar('qrcode', $qrcode); $this->view->setVar('qrcode', $qrcode);
$this->view->setVar('obs', $obs); $this->view->setVar('obs', $obs);
} }

View File

@ -34,7 +34,7 @@ class UserConsoleController extends Controller
} }
/** /**
* @Get("/index", name="home.uc.index") * @Get("/", name="home.uc.index")
*/ */
public function indexAction() public function indexAction()
{ {
@ -61,9 +61,23 @@ class UserConsoleController extends Controller
{ {
$service = new AccountInfoService(); $service = new AccountInfoService();
$captcha = $service->getSettings('captcha');
$account = $service->handle(); $account = $service->handle();
$this->view->pick('user/console/account'); $type = $this->request->getQuery('type', 'string', 'info');
if ($type == 'info') {
$this->view->pick('user/console/account_info');
} elseif ($type == 'phone') {
$this->view->pick('user/console/account_phone');
} elseif ($type == 'email') {
$this->view->pick('user/console/account_email');
} elseif ($type == 'password') {
$this->view->pick('user/console/account_password');
}
$this->view->setVar('captcha', $captcha);
$this->view->setVar('account', $account); $this->view->setVar('account', $account);
} }
@ -183,8 +197,10 @@ class UserConsoleController extends Controller
$service->handle(); $service->handle();
$location = $this->url->get(['for' => 'home.uc.profile']);
$content = [ $content = [
'location' => $this->request->getHTTPReferer(), 'location' => $location,
'msg' => '更新资料成功', 'msg' => '更新资料成功',
]; ];

View File

@ -1,42 +0,0 @@
{% extends 'templates/layer.volt' %}
{% block content %}
<form class="layui-form account-form" method="POST" action="{{ url({'for':'home.account.update_email'}) }}">
<br><br>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="login_password" placeholder="登录密码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input id="cv-account" class="layui-input" type="text" name="email" placeholder="邮箱地址" data-type="email" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即绑定</button>
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>
{% endblock %}
{% block include_js %}
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
{{ js_include('home/js/captcha.verify.js') }}
{% endblock %}

View File

@ -1,29 +0,0 @@
{% extends 'templates/layer.volt' %}
{% block content %}
<form class="layui-form account-form" method="POST" action="{{ url({'for':'home.account.update_pwd'}) }}">
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="origin_password" placeholder="原始密码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="new_password" placeholder="新设密码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="confirm_password" placeholder="确认密码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-fluid" lay-submit="true" lay-filter="go">提交</button>
</div>
</div>
</form>
{% endblock %}

View File

@ -1,42 +0,0 @@
{% extends 'templates/layer.volt' %}
{% block content %}
<form class="layui-form account-form" method="POST" action="{{ url({'for':'home.account.update_phone'}) }}">
<br><br>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-input" type="password" name="login_password" placeholder="登录密码" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input id="cv-account" class="layui-input" type="text" name="phone" placeholder="手机号码" data-type="phone" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<div class="verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div>
<div class="verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即绑定</button>
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>
{% endblock %}
{% block include_js %}
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
{{ js_include('home/js/captcha.verify.js') }}
{% endblock %}

View File

@ -16,20 +16,20 @@
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码" lay-verify="required"> <input class="layui-input" type="password" name="new_password" autocomplete="off" placeholder="新密码字母数字特殊字符6-16位" lay-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="verify-input-inline"> <div class="layui-input-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required"> <input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div> </div>
<div class="verify-btn-inline"> <div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button> <button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即重置</button> <button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">重置密码</button>
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}"> <input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket"> <input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand"> <input id="cv-rand" type="hidden" name="rand">

View File

@ -5,10 +5,10 @@
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="verify-input-inline"> <div class="layui-input-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required"> <input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div> </div>
<div class="verify-btn-inline"> <div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button> <button id="cv-verify-emit" class="layui-btn layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div> </div>
</div> </div>

View File

@ -16,20 +16,20 @@
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码" lay-verify="required"> <input class="layui-input" type="password" name="password" autocomplete="off" placeholder="密码字母数字特殊字符6-16位" lay-verify="required">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="verify-input-inline"> <div class="layui-input-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required"> <input class="layui-input" type="text" name="verify_code" placeholder="验证码" lay-verify="required">
</div> </div>
<div class="verify-btn-inline"> <div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button> <button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-input-block"> <div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">立即注册</button> <button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">注册帐号</button>
<input type="hidden" name="return_url" value="{{ return_url }}"> <input type="hidden" name="return_url" value="{{ return_url }}">
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}"> <input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket"> <input id="cv-ticket" type="hidden" name="ticket">

View File

@ -8,7 +8,8 @@
<div class="breadcrumb"> <div class="breadcrumb">
<span class="layui-breadcrumb"> <span class="layui-breadcrumb">
<a href="{{ url({'for':'home.group.list'}) }}">群组列表</a> <a href="/">首页</a>
<a href="{{ url({'for':'home.group.list'}) }}">群组</a>
<a><cite>{{ group.name }}</cite></a> <a><cite>{{ group.name }}</cite></a>
</span> </span>
</div> </div>

View File

@ -1,7 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-CN-Hans"> <html lang="zh-CN-Hans">
<head> <head>
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>出错啦</title> <title>出错啦</title>
{{ icon_link("favicon.ico") }} {{ icon_link("favicon.ico") }}

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-CN-Hans"> <html lang="zh-CN-Hans">
<head> <head>
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="csrf-token" content="{{ csrfToken.getToken() }}"> <meta name="csrf-token" content="{{ csrfToken.getToken() }}">

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh-CN-Hans"> <html lang="zh-CN-Hans">
<head> <head>
<meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="{{ seo.getKeywords() }}"> <meta name="keywords" content="{{ seo.getKeywords() }}">

View File

@ -0,0 +1,54 @@
{% extends 'templates/main.volt' %}
{% block content %}
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="wrap">
<div class="my-nav">
<span class="title">账号安全 - 修改邮箱</span>
</div>
<form class="layui-form security-form" method="POST" action="{{ url({'for':'home.account.update_email'}) }}">
<div class="layui-form-item">
<label class="layui-form-label">登录密码</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="login_password" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱地址</label>
<div class="layui-input-block">
<input id="cv-account" class="layui-input" type="text" name="email" data-type="email" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">提交修改</button>
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock %}
{% block include_js %}
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
{{ js_include('home/js/captcha.verify.js') }}
{% endblock %}

View File

@ -2,9 +2,9 @@
{% block content %} {% block content %}
{% set edit_pwd_url = url({'for':'home.account.edit_pwd'}) %} {% set edit_pwd_url = url({'for':'home.uc.account'},{'type':'password'}) %}
{% set edit_phone_url = url({'for':'home.account.edit_phone'}) %} {% set edit_phone_url = url({'for':'home.uc.account'},{'type':'phone'}) %}
{% set edit_email_url = url({'for':'home.account.edit_email'}) %} {% set edit_email_url = url({'for':'home.uc.account'},{'type':'email'}) %}
<div class="layout-main clearfix"> <div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div> <div class="my-sidebar">{{ partial('user/console/menu') }}</div>
@ -18,17 +18,17 @@
<span class="icon"><i class="layui-icon layui-icon-password"></i></span> <span class="icon"><i class="layui-icon layui-icon-password"></i></span>
<span class="title">登录密码</span> <span class="title">登录密码</span>
<span class="summary">经常更改密码有助于保护您的帐号安全</span> <span class="summary">经常更改密码有助于保护您的帐号安全</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-pwd" href="javascript:" data-url="{{ edit_pwd_url }}">修改</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-pwd" href="{{ edit_pwd_url }}">修改</a></span>
</div> </div>
<div class="security-item"> <div class="security-item">
<span class="icon"><i class="layui-icon layui-icon-cellphone"></i></span> <span class="icon"><i class="layui-icon layui-icon-cellphone"></i></span>
<span class="title">手机绑定</span> <span class="title">手机绑定</span>
{% if account.phone %} {% if account.phone %}
<span class="summary">已绑定手机:{{ account.phone|anonymous }}</span> <span class="summary">已绑定手机:{{ account.phone|anonymous }}</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-phone" href="javascript:" data-url="{{ edit_phone_url }}">修改</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-phone" href="{{ edit_phone_url }}">修改</a></span>
{% else %} {% else %}
<span class="summary">可用于登录和重置密码</span> <span class="summary">可用于登录和重置密码</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-phone" href="javascript:" data-url="{{ edit_phone_url }}">绑定</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-phone" href="{{ edit_phone_url }}">绑定</a></span>
{% endif %} {% endif %}
</div> </div>
<div class="security-item"> <div class="security-item">
@ -36,10 +36,10 @@
<span class="title">邮箱绑定</span> <span class="title">邮箱绑定</span>
{% if account.phone %} {% if account.phone %}
<span class="summary">已绑定邮箱:{{ account.email|anonymous }}</span> <span class="summary">已绑定邮箱:{{ account.email|anonymous }}</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="javascript:" data-url="{{ edit_email_url }}">修改</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="{{ edit_email_url }}">修改</a></span>
{% else %} {% else %}
<span class="summary">可用于登录和重置密码</span> <span class="summary">可用于登录和重置密码</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="javascript:" data-url="{{ edit_email_url }}">绑定</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="{{ edit_email_url }}">绑定</a></span>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@ -47,10 +47,4 @@
</div> </div>
</div> </div>
{% endblock %}
{% block include_js %}
{{ js_include('home/js/user.console.account.js') }}
{% endblock %} {% endblock %}

View File

@ -0,0 +1,44 @@
{% extends 'templates/main.volt' %}
{% block content %}
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="wrap">
<div class="my-nav">
<span class="title">账号安全 - 修改密码</span>
</div>
<form class="layui-form security-form" method="POST" action="{{ url({'for':'home.account.update_pwd'}) }}">
<div class="layui-form-item">
<label class="layui-form-label">原始密码</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="origin_password" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">新设密码</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="new_password" placeholder="字母数字特殊字符6-16位" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">确认密码</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="confirm_password" placeholder="字母数字特殊字符6-16位" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<button class="layui-btn" lay-submit="true" lay-filter="go">提交</button>
<button class="layui-btn layui-btn-primary" type="reset">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,54 @@
{% extends 'templates/main.volt' %}
{% block content %}
<div class="layout-main clearfix">
<div class="my-sidebar">{{ partial('user/console/menu') }}</div>
<div class="my-content">
<div class="wrap">
<div class="my-nav">
<span class="title">账号安全 - 修改手机</span>
</div>
<form class="layui-form security-form" method="POST" action="{{ url({'for':'home.account.update_phone'}) }}">
<div class="layui-form-item">
<label class="layui-form-label">登录密码</label>
<div class="layui-input-block">
<input class="layui-input" type="password" name="login_password" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-block">
<input id="cv-account" class="layui-input" type="text" name="phone" data-type="phone" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">验证码</label>
<div class="layui-input-inline verify-input-inline">
<input class="layui-input" type="text" name="verify_code" lay-verify="required">
</div>
<div class="layui-input-inline verify-btn-inline">
<button id="cv-verify-emit" class="layui-btn layui-btn-primary layui-btn-disabled" type="button" disabled="disabled">获取验证码</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button id="cv-submit-btn" class="layui-btn layui-btn-fluid layui-btn-disabled" disabled="disabled" lay-submit="true" lay-filter="go">提交修改</button>
<input id="cv-app-id" type="hidden" value="{{ captcha.app_id }}">
<input id="cv-ticket" type="hidden" name="ticket">
<input id="cv-rand" type="hidden" name="rand">
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock %}
{% block include_js %}
{{ js_include('https://ssl.captcha.qq.com/TCaptcha.js',false) }}
{{ js_include('home/js/captcha.verify.js') }}
{% endblock %}

View File

@ -90,7 +90,7 @@ class Common
public static function password($str) public static function password($str)
{ {
$pattern = '/^[A-Za-z0-9]{6,16}$/'; $pattern = '/^[[:graph:]]{6,16}$/';
return preg_match($pattern, $str) ? true : false; return preg_match($pattern, $str) ? true : false;
} }

View File

@ -43,24 +43,24 @@ function xmCourse(data, url) {
{field: 'title', title: '标题', width: 390}, {field: 'title', title: '标题', width: 390},
{ {
field: 'model', title: '类型', width: 50, templet: function (d) { field: 'model', title: '类型', width: 50, templet: function (d) {
if (d.model === 'vod') { if (d.model === 1) {
return '点播'; return '点播';
} else if (d.model === 'live') { } else if (d.model === 2) {
return '直播'; return '直播';
} else if (d.model === 'read') { } else if (d.model === 3) {
return '图文'; return '图文';
} }
} }
}, },
{ {
field: 'level', title: '难度', width: 50, templet: function (d) { field: 'level', title: '难度', width: 50, templet: function (d) {
if (d.level === 'entry') { if (d.level === 1) {
return '入门'; return '入门';
} else if (d.level === 'junior') { } else if (d.level === 2) {
return '初级'; return '初级';
} else if (d.level === 'medium') { } else if (d.level === 3) {
return '中级'; return '中级';
} else if (d.level === 'senior') { } else if (d.level === 4) {
return '高级'; return '高级';
} }
} }

View File

@ -1161,18 +1161,18 @@
} }
.account-form .verify-input-inline { .account-form .verify-input-inline {
display: inline-block; width: 280px;
width: 283px; margin-right: 10px;
margin-right: 5px;
} }
.account-form .verify-btn-inline { .account-form .verify-btn-inline {
display: inline-block; width: 110px;
vertical-align: top; margin-right: 0;
} }
.verify-btn-inline button { .verify-btn-inline button {
min-width: 108px; min-width: 100px;
width: 100%;
} }
.login-tab { .login-tab {
@ -1523,6 +1523,19 @@
word-wrap: break-word; word-wrap: break-word;
} }
.security-form {
width: 600px;
}
.security-form .verify-input-inline {
width: 360px;
}
.security-form .verify-btn-inline {
width: 120px;
margin-right: 0;
}
.security-item { .security-item {
padding: 15px; padding: 15px;
line-height: 50px; line-height: 50px;

View File

@ -1,5 +1,7 @@
layui.use(['jquery'], function () { layui.use(['jquery'], function () {
var $ = layui.jquery; var $ = layui.jquery;
var captcha = new TencentCaptcha( var captcha = new TencentCaptcha(
$('#captcha-btn')[0], $('#captcha-btn')[0],
$('#captcha-btn').data('app-id'), $('#captcha-btn').data('app-id'),
@ -12,4 +14,5 @@ layui.use(['jquery'], function () {
} }
} }
); );
}); });