function login($params) { $auth = pam_auth::instance($params['type']); if ($params['module']) { if ($passport_module = kernel::single($params['module'])) { if ($passport_module instanceof pam_interface_passport) { $module_uid = $passport_module->login($auth, $auth_data); if ($module_uid) { $auth->account()->update($params['module'], $module_uid, $auth_data); } $log = array('event_time' => time(), 'event_type' => $auth->type, 'event_data' => $auth_data['log_data']); app::get('pam')->model('log')->insert($log); $_SESSION['last_error'] = $auth_data['log_data']; $_SESSION['type'] = $auth->type; $_SESSION['login_time'] = time(); $url = ''; if ($params['mini']) { $url = '?mini=1'; } /** * appעļ */ $params['member_id'] = $module_uid; $params['uname'] = $_POST['uname']; foreach (kernel::servicelist('pam_login_listener') as $service) { $service->listener_login($params); } header('Location:' . base64_decode(urldecode($params['redirect'])) . $url); } } else { } } }
public function logout($backurl = 'index.php') { $this->begin('index.php?app=desktop&ctl=dashboard'); $this->user->login(); $this->user->logout(); $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); foreach (vmc::servicelist('passport') as $k => $passport) { if ($auth->is_module_valid($k, $this->app->app_id)) { $passport->loginout($auth, $backurl); } } vmc::singleton('base_session')->destory(); $this->end('true', '成功登出'); }
function logout($backurl = 'index.php') { $this->begin('javascript:Cookie.dispose("basicloginform_password");Cookie.dispose("basicloginform_autologin"); location="' . kernel::router()->app->base_url(1) . '"'); $this->user->login(); $this->user->logout(); $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); foreach (kernel::servicelist('passport') as $k => $passport) { if ($auth->is_module_valid($k, $this->app->app_id)) { $passport->loginout($auth, $backurl); } } kernel::single('base_session')->destory(); $this->end('true', app::get('desktop')->_('已成功退出系统,正在转向...')); /* $this->redirect('');*/ }
function __construct($app) { $this->defaultwg = $this->defaultWorkground; parent::__construct($app); kernel::single('base_session')->start(); $auth = pam_auth::instance(pam_account::get_account_type('desktop')); $account = $auth->account(); if (get_class($this) != 'desktop_ctl_passport' && !$account->is_valid()) { $url = $this->app->router()->gen_url(array(), 1); $url = base64_encode($url); echo "<script>top.location='index.php?ctl=passport&url=" . $url . "'</script>"; exit; } $this->user = kernel::single('desktop_user'); if ($_GET['ctl'] != "passport" && $_GET['ctl'] != "") { $this->status = $this->user->get_status(); if (!$this->status && $this->status == 0) { #echo "未启用";exit; //echo "<script>alert('管理员未启用')</script>"; echo "<script>window.location='index.php?ctl=passport&act=logout'</script>"; exit; } } ###如果不是超级管理员就查询操作权限 if (!$this->user->is_super()) { if (!$this->user->chkground($this->workground)) { echo "您无权操作"; exit; } } $this->_finish_modifier = array(); foreach (kernel::servicelist(sprintf('desktop_controller_content.%s.%s.%s', $_GET['app'], $_GET['ctl'], $_GET['act'])) as $class_name => $service) { if ($service instanceof desktop_interface_controller_content) { if (method_exists($service, 'modify')) { $this->_finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } if ($this->_finish_modifier) { ob_start(); register_shutdown_function(array(&$this, 'finish_modifier')); } $this->url = 'index.php?app=' . $this->app->app_id . '&ctl=' . $_GET['ctl']; }
function index() { //TODO 模拟升级脚本 if (!(app::get('desktop')->getConf('upgreade') === "YES")) { pam_account::register_account_type('desktop', 'shopadmin', '后台管理系统'); pam_account::register_account_type('b2c', 'member', '前台会员系统'); app::get('desktop')->setConf('upgreade', 'YES'); } $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); $auth->set_redirect_url($_GET['url']); $pagedata['pam_passport_basic_uname'] = $_COOKIE['pam_passport_basic_uname']; foreach (kernel::servicelist('passport') as $k => $passport) { if ($auth->is_module_valid($k)) { $this->pagedata['passports'][] = array('name' => $auth->get_name($k) ? $auth->get_name($k) : $passport->get_name(), 'html' => $passport->get_login_form($auth, 'desktop', 'basic-login.html', $pagedata)); } } $this->display('login.html'); }
function gen_auth_url() { $config = $this->config; $appid = $config['app_id']['value']; $appsecret = $config['app_secret']['value']; $auth = pam_auth::instance(pam_account::get_account_type('b2c')); $redirect_uri = $this->redirect_uri; if (!strpos($_SERVER['HTTP_REFERER'], 'passport') && !$_SESSION['signup_next']) { $_SESSION['signup_next'] = $_SERVER['HTTP_REFERER']; } $back_url = $_SESSION['signup_next']; unset($_SESSION['signup_next']); $state = base64_encode($back_url); $_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id={$appid}&redirect_uri={$redirect_uri}&state={$state}"; if (base_mobiledetect::is_mobile()) { $_url .= '&display=mobile'; } return $_url; }
public function admin_login() { $_POST['uname'] = $_POST['username']; $auth = pam_auth::instance('shopadmin'); $auth->set_appid('desktop'); $passport_module = kernel::single('pam_passport_basic'); $module_uid = $passport_module->login($auth, $auth_data); $str_xml = $this->xml_encodeing; $str_xml .= "<data>"; if ($module_uid) { $auth_data['account_type'] = $auth->type; $auth->account()->update('pam_passport_basic', $module_uid, $auth_data); //获取该项记录集合 $users = app::get('desktop')->model('users'); $roles = app::get('desktop')->model('roles'); $sdf_users = $users->dump($module_uid); if ($sdf_users['super']) { $roles_info = "超级用户"; } else { $workgroup = $roles->getList('*'); $hasrole = app::get('desktop')->model('hasrole'); $role_name = array(); foreach ($workgroup as $key => $group) { $rolesData = $hasrole->getList('*', array('user_id' => $module_uid, 'role_id' => $group['role_id'])); if ($rolesData) { $role_name[] = $group['role_name']; } } $roles_info = implode(',', $role_name); } $str_xml .= "<code>ok</code>"; $str_xml .= "<info>" . $auth_data['log_data'] . "</info>"; $str_xml .= "<contents><username>" . $_POST['uname'] . "</username><uid>{$module_uid}</uid><role>{$roles_info}</role></contents>"; } else { $str_xml .= "<code>fail</code>"; $str_xml .= "<info>" . implode(',', $auth_data) . "</info>"; } $str_xml .= "</data>"; echo $str_xml; exit; }
public function unset_seller() { $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); foreach (vmc::servicelist('passport') as $k => $passport) { $passport->loginout($auth); } $this->app->seller_id = 0; vmc::singleton('base_session')->set_cookie_expires(0); $this->cookie_path = vmc::base_url() . '/'; $this->set_cookie('UNAME', '', time() - 3600); //用户名 $this->set_cookie('SELLER_IDENT', 0, time() - 3600); //会员ID foreach (vmc::servicelist('seller.logout_after') as $service) { $service->logout(); } }
public function __construct($app) { header('Cache-Control:no-store, no-cache, must-revalidate'); // HTTP/1.1 header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // 强制查询etag header('Progma: no-cache'); if (app::get('base')->getConf('shell_base_url') != vmc::base_url(1)) { app::get('base')->setConf('shell_base_url', vmc::base_url(1)); } $this->fix_location(); $this->defaultwg = $this->defaultWorkground; parent::__construct($app); vmc::singleton('base_session')->start(); if ($_COOKIE['autologin'] > 0) { vmc::singleton('base_session')->set_sess_expires($_COOKIE['autologin']); } //如果有自动登录,设置session过期时间,单位:分 $auth = pam_auth::instance(pam_account::get_account_type('desktop')); $account = $auth->account(); if (get_class($this) != 'desktop_ctl_passport' && !$account->is_valid()) { if (get_class($this) != 'desktop_ctl_default') { $url = app::get('desktop')->router()->gen_url($_GET, 1); } else { $url = app::get('desktop')->router()->gen_url(array(), 1); } $url = base64_encode($url); $_SESSION['passport_redirect_url'] = $url; echo "<script>top.location = '?ctl=passport'</script>"; exit; } $this->user = vmc::singleton('desktop_user'); if ($_GET['ctl'] != 'passport' && $_GET['ctl'] != '') { $this->status = $this->user->get_status(); if (!$this->status && $this->status == 0) { unset($_SESSION['account']); $url = app::get('desktop')->router()->gen_url(array(), 1); $url = base64_encode($url); $_SESSION['passport_redirect_url'] = $url; header('Content-Type:text/html; charset=utf-8'); $this->pagedata['link_url'] = '?ctl=passport'; echo $this->fetch('auth_error.html'); exit; } } ###如果不是超级管理员就查询操作权限 if (!$this->user->is_super()) { if (!$this->user->chkground()) { echo $this->fetch('auth_error.html'); exit; } } $this->_finish_modifier = array(); foreach (vmc::servicelist(sprintf('desktop_controller_content.%s.%s.%s', $_GET['app'], $_GET['ctl'], $_GET['act'])) as $class_name => $service) { if ($service instanceof desktop_interface_controller_content) { if (method_exists($service, 'modify')) { $this->_finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } //修改tab detail 里的内容 foreach (vmc::servicelist(sprintf('desktop_controller_content_finderdetail.%s.%s.%s.%s', $_GET['app'], $_GET['ctl'], $_GET['act'], (string) (isset($_GET['finderview']) ? $_GET['finderview'] : '0'))) as $class_name => $service) { if ($service instanceof desktop_interface_controller_content) { if (method_exists($service, 'modify')) { $this->_finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } if ($this->_finish_modifier) { ob_start(); register_shutdown_function(array(&$this, 'finish_modifier')); } $this->url = 'index.php?app=' . $this->app->app_id . '&ctl=' . $_GET['ctl']; foreach (vmc::servicelist('desktop_controller_destruct') as $service) { if (is_object($service) && method_exists($service, 'construct')) { $service->construct(); } } }
function unset_member() { $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); foreach (kernel::servicelist('passport') as $k => $passport) { $passport->loginout($auth); } $this->app->member_id = 0; $this->cookie_path = kernel::base_url() . '/'; $this->set_cookie('MEMBER', null, time() - 3600); $this->set_cookie('UNAME', '', time() - 3600); $this->set_cookie('MLV', '', time() - 3600); $this->set_cookie('CUR', '', time() - 3600); $this->set_cookie('LANG', '', time() - 3600); $this->set_cookie('S[MEMBER]', '', time() - 3600); foreach (kernel::servicelist('member_logout') as $service) { $service->logout(); } }
/** * 登录调用的方法 * @param array $params 认证传递的参数,包含认证类型,跳转地址等 */ function login($params) { kernel::single('site_controller')->RemoveXSS($params['module']); //过滤xss攻击 $auth = pam_auth::instance($params['type']); $auth->set_appid($params['appid']); try { class_exists($params['module']); } catch (Exception $e) { kernel::single('site_router')->http_status('p404'); } if ($params['module']) { if (class_exists($params['module']) && ($passport_module = kernel::single($params['module']))) { if ($passport_module instanceof pam_interface_passport) { $module_uid = $passport_module->login($auth, $auth_data); if ($module_uid) { $auth_data['account_type'] = $params['type']; $auth->account()->update($params['module'], $module_uid, $auth_data); } $log = array('event_time' => time(), 'event_type' => $auth->type, 'event_data' => base_request::get_remote_addr() . ':' . $auth_data['log_data'] . ':' . $_SERVER['HTTP_REFERER']); app::get('pam')->model('log')->insert($log); if (!$module_uid) { $_SESSION['last_error'] = $auth_data['log_data']; } $_SESSION['type'] = $auth->type; $_SESSION['login_time'] = time(); $params['member_id'] = $_SESSION['account'][$params['type']]; $params['uname'] = $_POST['uname']; /*foreach(kernel::servicelist('pam_login_listener') as $service) { $service->listener_login($params); }*/ if ($params['redirect'] && $module_uid) { $service = kernel::service('callback_infomation'); if (is_object($service)) { if (method_exists($service, 'get_callback_infomation') && $module_uid) { $data = $service->get_callback_infomation($module_uid, $params['type']); if (!$data) { $url = ''; } else { $url = '?' . utils::http_build_query($data); } } } } if ($_COOKIE['autologin'] > 0) { kernel::single('base_session')->set_cookie_expires($_COOKIE['autologin']); //如果自动登录,设置cookie过期时间,单位:分 } if ($_SESSION['callback'] && !$module_uid) { $callback_url = $_SESSION['callback']; unset($_SESSION['callback']); header('Location:' . urldecode($callback_url)); exit; } else { header('Location:' . base64_decode(str_replace('%2F', '/', urldecode($params['redirect']))) . $url); exit; } } } else { } } }
private function gen_login_form() { if ($_SESSION['next_page']) { $url = $_SESSION['next_page']; } else { $url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'index')); } #var_dump($url);echo "<hr/>"; unset($_SESSION['next_page']); $auth = pam_auth::instance(pam_account::get_account_type($this->app->app_id)); $pagedata['singup_url'] = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'signup')); $pagedata['lost_url'] = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'lost')); $pagedata['loginName'] = $_COOKIE['loginName']; #设置回调函数地址 $auth->set_redirect_url(base64_encode($this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'post_login', 'arg' => base64_encode($url))))); #print_r(kernel::servicelist('passport'));exit; foreach (kernel::servicelist('passport') as $k => $passport) { if ($auth->is_module_valid($k)) { $this->pagedata['passports'][] = array('name' => $auth->get_name($k) ? $auth->get_name($k) : $passport->get_name(), 'html' => $passport->get_login_form($auth, 'b2c', 'site/passport/member-login.html', $pagedata)); } } }
function __construct($app) { header("Cache-Control:no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 强制查询etag header('Progma: no-cache'); $this->defaultwg = $this->defaultWorkground; parent::__construct($app); kernel::single('base_session')->start(); if ($_COOKIE['autologin'] > 0) { kernel::single('base_session')->set_sess_expires($_COOKIE['autologin']); } //如果有自动登录,设置session过期时间,单位:分 $auth = pam_auth::instance(pam_account::get_account_type('desktop')); $account = $auth->account(); if (get_class($this) != 'desktop_ctl_passport' && !$account->is_valid()) { if (get_class($this) != 'desktop_ctl_default') { $url = kernel::router()->gen_url($_GET, 1); } else { $url = kernel::router()->gen_url(array(), 1); } $url = base64_encode($url); $arr_get = $_GET; foreach ($arr_get as &$str_get) { $str_get = urldecode($str_get); } $params = urlencode(json_encode($arr_get)); $_GOTO = 'index.php?ctl=passport&url=' . $url . '¶ms=' . $params; echo "<script>location ='{$_GOTO}'</script>"; exit; } $this->user = kernel::single('desktop_user'); if ($_GET['ctl'] != "passport" && $_GET['ctl'] != "") { $this->status = $this->user->get_status(); if (!$this->status && $this->status == 0) { #echo "未启用";exit; //echo "<script>alert('管理员未启用')</script>"; $url = kernel::router()->gen_url(array(), 1); $url = base64_encode($url); header('Content-Type:text/html; charset=utf-8'); $this->pagedata['link_url'] = 'index.php?ctl=passport&url=' . $url; echo $this->fetch('auth_error.html'); exit; } } ###如果不是超级管理员就查询操作权限 if (!$this->user->is_super()) { if (!$this->user->chkground($this->workground)) { header('Content-Type:text/html; charset=utf-8'); echo app::get('desktop')->_("您无权操作"); exit; } } $obj_model = app::get('desktop')->model('menus'); //检查链接是否可用 $obj_model->permissionId($_GET); //end $this->_finish_modifier = array(); foreach (kernel::servicelist(sprintf('desktop_controller_content.%s.%s.%s', $_GET['app'], $_GET['ctl'], $_GET['act'])) as $class_name => $service) { if ($service instanceof desktop_interface_controller_content) { if (method_exists($service, 'modify')) { $this->_finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } //修改tab detail 里的内容 foreach (kernel::servicelist(sprintf('desktop_controller_content_finderdetail.%s.%s.%s.%s', $_GET['app'], $_GET['ctl'], $_GET['act'], (string) (isset($_GET['finderview']) ? $_GET['finderview'] : '0'))) as $class_name => $service) { if ($service instanceof desktop_interface_controller_content) { if (method_exists($service, 'modify')) { $this->_finish_modifier[$class_name] = $service; } if (method_exists($service, 'boot')) { $service->boot($this); } } } if ($this->_finish_modifier) { ob_start(); register_shutdown_function(array(&$this, 'finish_modifier')); } $this->url = 'index.php?app=' . $this->app->app_id . '&ctl=' . $_GET['ctl']; }
/** * 登录调用的方法. * * @param array $params 认证传递的参数,包含认证类型,跳转地址等 */ public function login($params) { $params['module'] = utils::_filter_input($params['module']); //过滤xss攻击 $auth = pam_auth::instance($params['type']); $auth->set_appid($params['appid']); if (!class_exists($params['module'])) { vmc::singleton('site_router')->http_status(500); } if ($params['module']) { if (class_exists($params['module']) && ($passport_module = vmc::singleton($params['module']))) { if ($passport_module instanceof pam_interface_passport) { $module_uid = $passport_module->login($auth, $auth_data); if ($module_uid) { $auth_data['account_type'] = $params['type']; $auth->account()->update($params['module'], $module_uid, $auth_data); } $log = array('event_time' => time(), 'event_type' => $auth->type, 'event_data' => base_request::get_remote_addr() . ':' . $auth_data['log_data'] . ':' . $_SERVER['HTTP_REFERER']); app::get('pam')->model('log_desktop')->insert($log); if (!$module_uid) { $_SESSION['last_error'] = $auth_data['log_data']; } $_SESSION['type'] = $auth->type; $_SESSION['login_time'] = time(); $params['member_id'] = $_SESSION['account'][$params['type']]; $params['uname'] = $_POST['uname']; foreach (vmc::servicelist('pam_login_listener') as $service) { $service->listener_login($params); } if ($params['redirect'] && $module_uid) { $service = vmc::service('callback_infomation'); if (is_object($service)) { if (method_exists($service, 'get_callback_infomation') && $module_uid) { $data = $service->get_callback_infomation($module_uid, $params['type']); if (!$data) { $url = ''; } else { $url = '?' . utils::http_build_query($data); } } } } if ($_COOKIE['autologin'] > 0) { vmc::singleton('base_session')->set_cookie_expires($_COOKIE['autologin']); //如果自动登录,设置cookie过期时间,单位:分 } if ($_COOKIE['S']['SIGN']['AUTO'] > 0) { $minutes = 10 * 24 * 60; vmc::singleton('base_session')->set_cookie_expires($minutes); } if ($_SESSION['callback'] && !$module_uid) { $callback_url = $_SESSION['callback']; unset($_SESSION['callback']); header('Location:' . urldecode($callback_url)); exit; } else { $url = base64_decode(str_replace('%2F', '/', urldecode($params['redirect']))) . $url; if (!$url) { foreach (vmc::$url_app_map as $key => $value) { $app = current($value); if ($app == 'desktop') { $url = $key; } } } header('Location: ' . $url); exit; } } } else { } } }
/** * 联盟商登录验证 * @access public */ public function login() { $this->set_tmpl('cps_common'); //之前访问页面路径 $oldUrl = $this->_request->get_param(0); //原先访问地址存入SESSION if ($oldUrl) { $_SESSION['CPS']['LOGIN_OLD_URL'] = $oldUrl; } //实例化pam_auth $auth = pam_auth::instance('cpsuser'); $auth->set_appid($this->app->app_id); //设置回调函数地址 $auth->set_redirect_url(base64_encode($this->gen_url(array('app' => 'cps', 'ctl' => 'site_user', 'act' => 'post_login')))); foreach (kernel::servicelist('passport') as $k => $passport) { if ($auth->is_module_valid($k)) { $passport->get_login_form($auth, 'cps', 'site/user/login.html', $pagedata); } } $this->pagedata['oldUrl'] = $_SESSION['CPS']['LOGIN_OLD_URL']; $this->page('site/user/login.html'); }