Initial project files: BESCMS full source
This commit is contained in:
@@ -0,0 +1,186 @@
|
||||
<?php namespace Phpcmf\Library\Member;
|
||||
|
||||
class Member {
|
||||
|
||||
// phpcmf初始化
|
||||
public function init($ci) {
|
||||
|
||||
// 开启session
|
||||
$ci->session();
|
||||
// 登录状态验证
|
||||
if (!$ci->member && !in_array(\Phpcmf\Service::L('Router')->class, ['register', 'login', 'api', 'pay'])) {
|
||||
if (APP_DIR && dr_is_module(APP_DIR)
|
||||
&& \Phpcmf\Service::L('Router')->class == 'home' && \Phpcmf\Service::L('Router')->method == 'add') {
|
||||
// 游客发布权限
|
||||
} else {
|
||||
// 会话超时,请重新登录
|
||||
if (IS_API_HTTP) {
|
||||
$ci->_json(0, dr_lang('无法获取到登录用户信息'));
|
||||
} elseif (method_exists($ci, \Phpcmf\Service::L('Router')->method)) {
|
||||
\Phpcmf\Service::L('Router')->go_member_login(dr_now_url());
|
||||
} else {
|
||||
$ci->goto_404_page('无法识别的控制器');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($ci->member && \Phpcmf\Service::L('Router')->class != 'api'
|
||||
&& !$ci->member['regip'] && SYS_TIME - $ci->member['regtime'] > 100) {
|
||||
//补全注册ip
|
||||
$ci->member['regip'] = \Phpcmf\Service::L('input')->ip_info();
|
||||
\Phpcmf\Service::M()->table('member')->update($ci->member['id'], [
|
||||
'regip' => $ci->member['regip']
|
||||
]);
|
||||
}
|
||||
|
||||
\Phpcmf\Service::V()->assign($this->_member_seo(\Phpcmf\Service::L('cache')->get('menu-member')));
|
||||
}
|
||||
|
||||
private function _member_seo($menu) {
|
||||
|
||||
$seo = [
|
||||
'menu' => $menu['url'],
|
||||
'page_bar' => '<div class="page-bar">
|
||||
<ul class="page-breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-home"></i>
|
||||
<a href="'.dr_member_url('/').'">'.dr_lang('用户中心').'</a>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
{value}
|
||||
</ul>
|
||||
</div>',
|
||||
];
|
||||
|
||||
// 自定义菜单显示
|
||||
if (function_exists('dr_my_member_menu')) {
|
||||
$seo['menu'] = dr_my_member_menu($seo['menu']);
|
||||
}
|
||||
|
||||
list($uri1, $uri2) = \Phpcmf\Service::L('router')->member_uri();
|
||||
$uri = isset($menu['uri'][$uri1]) ? $uri1 : (isset($menu['uri'][$uri2]) ? $uri2 : '');
|
||||
|
||||
if (!$uri && APP_DIR && APP_DIR != 'member') {
|
||||
// 来自内容模块的菜单全部归结于内容下
|
||||
$uri = APP_DIR.'/home/index';
|
||||
}
|
||||
|
||||
$seo['mymenu'] = []; // 当前菜单id和pid
|
||||
|
||||
if ($menu['uri'][$uri]) {
|
||||
$seo['page_bar'] = str_replace('{value}', '
|
||||
<li>
|
||||
<i class="'.dr_icon($menu['uri'][$uri]['picon']).'"></i>
|
||||
<span>'.dr_lang($menu['uri'][$uri]['pname']).'</span>
|
||||
<i class="fa fa-angle-right"></i>
|
||||
</li>
|
||||
<li>
|
||||
<i class="'.dr_icon($menu['uri'][$uri]['icon']).'"></i>
|
||||
<a href="'.dr_member_url($uri).'">'.dr_lang($menu['uri'][$uri]['name']).'</a>
|
||||
</li>
|
||||
', $seo['page_bar']);
|
||||
$seo['mymenu'] = [$menu['uri'][$uri]['id'], $menu['uri'][$uri]['pid']]; // 当前菜单id和pid
|
||||
$seo['meta_name'] = $menu['uri'][$uri]['name'];
|
||||
$seo['meta_title'] = $menu['uri'][$uri]['name'].SITE_SEOJOIN.$menu['uri'][$uri]['pname'].SITE_SEOJOIN.dr_lang('用户中心');
|
||||
} else {
|
||||
$seo['meta_title'] = $seo['meta_name'] = dr_lang('用户中心');
|
||||
}
|
||||
|
||||
$seo['page_bar'] = str_replace('{value}', '', $seo['page_bar']);
|
||||
$seo['meta_keywords'] = \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'seo', 'SITE_KEYWORDS');
|
||||
$seo['meta_description'] = \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'seo', 'SITE_DESCRIPTION');
|
||||
|
||||
return $seo;
|
||||
}
|
||||
|
||||
// 用户组是否过期
|
||||
public function group_timeout($ci) {
|
||||
if ($ci->member) {
|
||||
// 用户组是否过期
|
||||
if ($ci->member['group_timeout'] && dr_member_group_is_timeout()) {
|
||||
$msg = dr_lang('您的用户组(%s)于%s过期', $ci->member_cache['group'][$ci->member['group_timeout']]['name'], dr_date($ci->member['group_timeout_time']));
|
||||
$rt = \Phpcmf\Hooks::trigger_callback('member_group_timeout', $ci->member);
|
||||
if ($rt && $rt['code']) {
|
||||
// 自定义执行段
|
||||
} else {
|
||||
if ($ci->member_cache['group'][$ci->member['group_timeout']]['setting']['outtype'] == 2) {
|
||||
// 跳转指定页面
|
||||
$url = $ci->member_cache['group'][$ci->member['group_timeout']]['setting']['out_url'];
|
||||
if (strpos(FC_NOW_URL, $url) !== false) {
|
||||
// 表示本身页面
|
||||
} else {
|
||||
$ci->_msg(0, $msg, $url);
|
||||
}
|
||||
} elseif ($ci->member_cache['group'][$ci->member['group_timeout']]['setting']['outtype'] == 1) {
|
||||
// 跳转续费页面
|
||||
$ci->_msg(0, $msg, dr_member_url('apply/level', ['gid' => $ci->member['group_timeout']]));
|
||||
}
|
||||
}
|
||||
}
|
||||
// 判断用户的权限
|
||||
if (!in_array(\Phpcmf\Service::L('Router')->class, ['register', 'login', 'api'])) {
|
||||
$this->member_option($ci);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台登录判断
|
||||
*/
|
||||
public function member_option($ci) {
|
||||
|
||||
if (!IS_MEMBER) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 有用户组来获取最终的强制权限
|
||||
$ci->member_cache['config']['complete'] = $ci->member_cache['config']['mobile'] = $ci->member_cache['config']['avatar'] = 0;
|
||||
// 强制完善资料
|
||||
if (!$ci->member_cache['config']['complete']) {
|
||||
$ci->member_cache['config']['complete'] = (int)\Phpcmf\Service::L('member_auth', 'member')->member_auth('complete', $ci->member);
|
||||
}
|
||||
// 强制手机认证
|
||||
if (!$ci->member_cache['config']['mobile']) {
|
||||
$ci->member_cache['config']['mobile'] = (int)\Phpcmf\Service::L('member_auth', 'member')->member_auth('mobile', $ci->member);
|
||||
}
|
||||
// 强制email认证
|
||||
if (!$ci->member_cache['config']['email']) {
|
||||
$ci->member_cache['config']['email'] = (int)\Phpcmf\Service::L('member_auth', 'member')->member_auth('email', $ci->member);
|
||||
}
|
||||
// 强制头像上传
|
||||
if (!$ci->member_cache['config']['avatar']) {
|
||||
$ci->member_cache['config']['avatar'] = (int)\Phpcmf\Service::L('member_auth', 'member')->member_auth('avatar', $ci->member);
|
||||
}
|
||||
|
||||
if (!$ci->member['is_verify']) {
|
||||
// 审核提醒
|
||||
$ci->_msg(0, dr_lang('账号还没有通过审核'), dr_member_url('api/verify'));
|
||||
} elseif ($ci->member_cache['config']['complete']
|
||||
&& !$ci->member['is_complete']
|
||||
&&\Phpcmf\Service::L('Router')->class != 'account') {
|
||||
// 强制完善资料
|
||||
$ci->_msg(0, dr_lang('账号必须完善资料'), dr_member_url('account/index'));
|
||||
} elseif ($ci->member_cache['config']['mobile']
|
||||
&& !$ci->member['is_mobile']
|
||||
&&\Phpcmf\Service::L('Router')->class != 'account') {
|
||||
// 强制手机认证
|
||||
$ci->_msg(0, dr_lang('账号必须手机认证'), dr_member_url('account/mobile'));
|
||||
} elseif ($ci->member_cache['config']['email']
|
||||
&& !$ci->member['is_email']
|
||||
&&\Phpcmf\Service::L('Router')->class != 'account') {
|
||||
// 强制邮箱认证
|
||||
$ci->_msg(0, dr_lang('账号必须邮箱认证'), dr_member_url('account/email'));
|
||||
} elseif ($ci->member_cache['config']['avatar']
|
||||
&& !$ci->member['is_avatar']
|
||||
&&\Phpcmf\Service::L('Router')->class != 'account') {
|
||||
// 强制头像上传
|
||||
$ci->_msg(0, dr_lang('账号必须上传头像'), dr_member_url('account/avatar'));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user