123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- <?php
- namespace Factory\Admin;
- use Dever;
- use Dever\Routing\Uri;
- use Dever\Session\Oper;
- use Dever\String\Encrypt;
- class Auth
- {
- /**
- * 后台的session名
- *
- * @var string
- */
- private $name;
- /**
- * save
- *
- * @var Dever\Plad\Save
- */
- private $save;
- /**
- * __construct
- *
- * @return mixed
- */
- public function __construct()
- {
- $this->save = new Oper(false, 'session');
- $this->name = 'factory';
- }
- /**
- * 获取当前登录的管理员信息
- *
- * @return mixed
- */
- public function info()
- {
- $info = $this->save->get($this->name);
- return $info;
- }
- public function check()
- {
- $sign = Dever::input('sign');
- if ($sign) {
- $sign = Dever::checkLogin($sign);
- if ($sign && isset($sign['uid']) && $sign['uid'] > 0) {
- $user = Dever::db('factory/member')->getManage(array('factory_id' => $sign['uid'], 'role_id' => '1'));
- if ($user) {
- $this->save($user);
- Dever::location('home', 'factory');
- }
- }
- }
- $admin = $this->info();
- if (!$admin) {
- return $this->location_login();
- }
- return $admin;
- }
- /**
- * 只获取中间的内容部分
- *
- * @return mixed
- */
- public function loading()
- {
- $set = Dever::input('loading');
- if ($set) {
- Dever::config('base')->url = 'loading=' . $set;
- }
- return $set;
- }
- public function config()
- {
- $config = Dever::db('main/factory_config')->find();
- $config['refer'] = Dever::input('refer');
- $config['login_url'] = Dever::url("factory/admin/auth.login");
- $config['mcode_url'] = Dever::url("factory/admin/auth.getMcode?json=1");
- return $config;
- }
- /**
- * 获取当前登录的管理员信息
- *
- * @return mixed
- */
- public function manage()
- {
- $admin = $this->info();
- if ($admin && $admin['id'] == 1) {
- return '';
- }
- return 'display:none;';
- }
- /**
- * 获取手机随机验证码
- * @return mixed
- */
- public function getMcode_api()
- {
- $mobile = $this->checkMobile();
- $user = Dever::db('factory/member')->find(array('mobile' => $mobile));
- if (!$user) {
- Dever::alert('该手机号还未注册');
- }
- $code = Dever::load('passport/reg')->mcode($mobile);
- $msg = '验证码已发送至您的手机,请注意查收,十分钟之内有效';
- $debug = Dever::config('base', 'project')->mobileCode['debug'];
- if ($debug) {
- $msg .= '::' . $code;
- }
- return $msg;
- }
- /**
- * 退出登录
- *
- * @return mixed
- */
- public function quit_api()
- {
- if ($this->info()) {
- $this->save->un($this->name);
- }
- Dever::location('login');
- }
- /**
- * 登录
- *
- * @return mixed
- */
- public function login_api()
- {
- $where['mobile'] = $this->checkMobile();
- $this->checkMcode($where['mobile']);
- $user = Dever::db('factory/member')->find($where);
- if (!$user) {
- Dever::alert('登录失败,手机号错误,请重新输入');
- }
- if ($user) {
- $this->save($user);
- $refer = Dever::input('refer');
- if ($refer) {
- $refer = Encrypt::decode($refer);
- Dever::out($refer);
- } else {
- Dever::out(Dever::url('home'));
- }
- } else {
- Dever::alert('登录失败');
- }
- }
- /**
- * 验证手机号
- * @return mixed
- */
- private function checkMobile()
- {
- $rule = Dever::rule('mobile');
- $mobile = Dever::input('mobile');
- if (!$mobile) {
- Dever::alert('手机号不能为空');
- }
- if (!preg_match($rule, $mobile)) {
- Dever::alert('手机号码格式错误');
- }
- return $mobile;
- }
- /**
- * 验证验证码
- * @return mixed
- */
- private function checkMcode($mobile)
- {
- $code = Dever::input('mcode');
- if (!$code) {
- Dever::alert('请输入验证码');
- }
- $code = Dever::load('passport/reg')->mcode($mobile, $code);
- if (!$code) {
- Dever::alert('验证码输入错误');
- }
- }
- public function save(&$user)
- {
- $this->save->add($this->name, $user, 3600 * 24 * 7);
- }
- /**
- * cookie 处理cookie
- *
- * @return array
- */
- public function cookie()
- {
- $cookie = $_COOKIE;
- $array = array();
- # 判断手机版
- $mobile = Dever::mobile();
- if ((isset($cookie['left_menu']) && $cookie['left_menu'] == 'close') || $mobile) {
- $array['wrapper'] = 'enlarged forced';
- } else {
- $array['wrapper'] = 'forced';
- }
- return $array;
- }
- /**
- * menu 对一些固定的菜单,生成其链接
- *
- * @return array
- */
- public function link()
- {
- return array
- (
- 'project' => Dever::url('project/list?menu=manage&table=manage_project'),
- 'log' => Dever::url('log/list?menu=manage&table=manage_log'),
- 'logout' => Dever::url('admin/auth.quit'),
- 'index' => Dever::url('home'),
- 'console' => Dever::url('console'),
- );
- }
- /**
- * location_login
- *
- * @return mixed
- */
- public function location_login()
- {
- $refer = Encrypt::encode(Dever::url());
- $admin = $this->info();
- if ($admin) {
- Dever::location('home', 'factory');
- }
- return Dever::location('factory/login?refer=' . $refer);
- }
- # 编辑员工
- public function edit_api()
- {
- $admin = $this->info();
- if (!$admin) {
- Dever::alert('您没有权限修改');
- }
- $id = $admin['id'];
- $name = Dever::input('name');
- $mobile = Dever::input('mobile');
- if ($name) {
- $update['name'] = $name;
- } else {
- Dever::alert('姓名不能为空');
- }
- if ($mobile) {
- $update['mobile'] = $mobile;
- $check = Dever::db('factory/member')->find(array('mobile' => $mobile, 'factory_id' => $admin['factory_id']));
- if ($check && $id && $id != $check['id']) {
- Dever::alert('电话已存在');
- } elseif ($check && !$id) {
- Dever::alert('电话已存在');
- }
- } else {
- Dever::alert('电话不能为空');
- }
- $update['factory_id'] = $admin['factory_id'];
- if ($id) {
- $update['where_id'] = $id;
- Dever::db('factory/member')->update($update);
- } else {
- $id = Dever::db('factory/member')->insert($update);
- }
- $user = Dever::db('factory/member')->find($id);
- $this->save($user);
- return '操作成功';
- }
- public function menu()
- {
- $info = $this->info();
- $data = array
- (
- 'console' => array
- (
- 'icon' => 'home',
- 'name' => '概况',
- 'link' => Dever::url('console', 'factory'),
- ),
- 'order' => array
- (
- 'icon' => 'app',
- 'name' => '订单处理',
- 'child' => array
- (
- 'order' => array
- (
- 'name' => '门店订单发货',
- 'link' => Dever::url('order?type=1&parent_type=1', 'factory'),
- ),
- 'order_1' => array
- (
- 'name' => '平台商城订单发货',
- 'link' => Dever::url('order?type=1&parent_type=2,3', 'factory'),
- ),
- ),
- ),
- 'stat' => array
- (
- 'icon' => 'date',
- 'name' => '结算对账',
- 'child' => array
- (
- 'stat' => array
- (
- 'name' => '对账单',
- 'link' => Dever::url('stat', 'factory'),
- ),
- ),
- ),
- 'set' => array
- (
- 'icon' => 'set',
- 'name' => '基础设置',
- 'child' => array
- (
- 'set' => array
- (
- 'name' => '企业资质',
- 'link' => Dever::url('set', 'factory'),
- ),
- 'msg' => array
- (
- 'name' => '消息通知',
- 'link' => Dever::url('msg', 'factory'),
- ),
- 'user' => array
- (
- 'name' => '账号管理',
- 'link' => Dever::url('user', 'factory'),
- ),
- 'help' => array
- (
- 'name' => '帮助文档',
- 'link' => Dever::url('help', 'factory'),
- ),
- ),
- ),
- );
- $role = explode(',', $info['role_id']);
- $type = false;
- if (!in_array(1, $role)) {
- $type = array(1,2,6);
- unset($data['set']['child']['set']);
- unset($data['set']['child']['user']);
- if (!in_array(2, $role)) {
- unset($data['order']);
- unset($type[1]);
- }
- if (!in_array(4, $role)) {
- unset($data['stat']);
- unset($type[2]);
- }
- $type = implode(',', $type);
- }
- $this->msg = 0;
- /*
- if ($info && Dever::project('message')) {
- $this->msg = Dever::load('message/lib/data')->num($info['factory_id'], 4, $type);
- } else {
- $this->msg = 0;
- }
- */
- return $data;
- }
- /**
- * menu 生成左侧的菜单 此处应加上权限来显示是否管理员有该菜单的权限
- *
- * @return array
- */
- public function getMenu($state = false)
- {
- $data = $this->menu();
- $html = '';
- foreach ($data as $k => $v) {
- if (!isset($v['key'])) {
- $v['key'] = $k;
- }
- $v['icon'] = $v['icon'] ? "layui-icon layui-icon-" . $v['icon'] : "layui-icon layui-icon-home";
- $cur = 'layui-nav-itemed';
- if ($k == 'console') {
- $cur = 'layui-this';
- }
- $html .= '<li data-name="'.$v['key'].'" class="layui-nav-item menu_group '.$cur.'">';
- if (isset($v['child']) && $v['child']) {
- $link = 'href="javascript:;"';
- } else {
- $link = 'lay-href="'.$v['link'].'"';
- }
- $html .= '<a '.$link.' lay-tips="'.$v['name'].'" lay-direction="2">';
- $html .= '<i class="'.$v['icon'].'"></i><cite>'.$v['name'].'</cite></a>';
- $html .= $this->getMenuChild($v);
- $html .= '</li>';
- }
- $html .= '';
- return $html;
- }
- public function getMenuChild($v)
- {
- $html = '';
- if (isset($v['child']) && $v['child']) {
- $html .= '<dl class="layui-nav-child">';
- foreach ($v['child'] as $k1 => $v1) {
- if (!isset($v1['key'])) {
- $v1['key'] = $k1;
- }
- $html .= '<dd data-name="'.$v1['key'].'">';
- if (isset($v1['child']) && $v1['child']) {
- $html .= '<a href="javascript:;">'.$v1['name'].'</a><dl class="layui-nav-child">';
- foreach ($v1['child'] as $k2 => $v2) {
- if (!isset($v2['key'])) {
- $v2['key'] = $k2;
- }
- $html .= '<dd data-name="'.$v2['key'].'"><a lay-href="'.$v2['link'].'">'.$v2['name'].'</a></dd>';
- }
- $html .= '</dl>';
- } else {
- if ($k1 == 'msg' && $this->msg) {
- $v1['name'] .= '<span class="layui-badge">'.$this->msg.'</span>';
- }
-
- $html .= '<a lay-href="'.$v1['link'].'">'.$v1['name'].'</a>';
- }
- $html .= '</dd>';
- }
- $html .= '</dl>';
- }
- return $html;
- }
- }
|