| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 | <?phpnamespace store\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 = 'store';    }    /**     * 获取当前登录的管理员信息     *     * @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('store/member')->getManage(array('store_id' => $sign['uid'], 'role_id' => '1'));                if ($user) {                    $this->save($user);                    Dever::location('home', 'store');                }            }        }        $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("store/admin/auth.login");        $config['mcode_url'] = Dever::url("store/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('store/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('store/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', 'store');        }                return Dever::location('store/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('store/member')->find(array('mobile' => $mobile, 'store_id' => $admin['store_id']));            if ($check && $id && $id != $check['id']) {                Dever::alert('电话已存在');            } elseif ($check && !$id) {                Dever::alert('电话已存在');            }        } else {            Dever::alert('电话不能为空');        }        $update['store_id'] = $admin['store_id'];        if ($id) {            $update['where_id'] = $id;            Dever::db('store/member')->update($update);        } else {            $id = Dever::db('store/member')->insert($update);        }        $user = Dever::db('store/member')->find($id);        $this->save($user);        return '操作成功';    }    public function menu()    {        $info = $this->info();        $data = array        (            'console' => array            (                'icon' => 'home',                'name' => '概况',                'link' => Dever::url('console', 'store'),            ),            'order' => array            (                'icon' => 'app',                'name' => '订单处理',                'child' => array                (                    'order' => array                    (                        'name' => '门店订单发货',                        'link' => Dever::url('order?type=1&parent_type=1', 'store'),                    ),                    'order_1' => array                    (                        'name' => '平台商城订单发货',                        'link' => Dever::url('order?type=1&parent_type=2,3', 'store'),                    ),                    'order_2' => array                    (                        'name' => '库存调拨发货',                        'link' => Dever::url('order?type=2&source_type=2', 'store'),                    ),                    'factory_order' => array                    (                        'name' => '入库订单确认',                        'link' => Dever::url('factory_order', 'store'),                    ),                    'ku' => array                    (                        'name' => '库存清单',                        'link' => Dever::url('goods', 'store'),                    ),                    'out' => array                    (                        'name' => '出库单管理',                        'link' => Dever::url('out', 'store'),                    ),                ),            ),            'stat' => array            (                'icon' => 'date',                'name' => '结算对账',                'child' => array                (                    'stat' => array                    (                        'name' => '对账单',                        'link' => Dever::url('stat', 'store'),                    ),                ),            ),            'set' => array            (                'icon' => 'set',                'name' => '基础设置',                'child' => array                (                    'set' => array                    (                        'name' => '企业资质',                        'link' => Dever::url('set', 'store'),                    ),                    'msg' => array                    (                        'name' => '消息通知',                        'link' => Dever::url('msg', 'store'),                    ),                    'user' => array                    (                        'name' => '账号管理',                        'link' => Dever::url('user', 'store'),                    ),                    'help' => array                    (                        'name' => '帮助文档',                        'link' => Dever::url('help', 'store'),                    ),                ),            ),        );        $role = explode(',', $info['role_id']);        $type = false;        if (!in_array(1, $role)) {            $type = array(1,2,6,7);            unset($data['set']['child']['set']);            unset($data['set']['child']['user']);            if (!in_array(2, $role)) {                unset($data['order']['child']['order']);                unset($data['order']['child']['order_1']);                unset($data['order']['child']['order_2']);                unset($type[1]);            }            if (!in_array(4, $role)) {                unset($data['stat']);                unset($type[2]);            }            if (!in_array(3, $role)) {                unset($data['order']['child']['factory_order']);                unset($data['order']['child']['ku']);                unset($data['order']['child']['out']);                unset($type[3]);            }            $type = implode(',', $type);        }        if (!$data['order']['child']) {            unset($data['order']);        }        $this->msg = 0;        /*        if ($info && Dever::project('message')) {            $this->msg = Dever::load('message/lib/data')->num($info['store_id'], 3, $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:;"';            } elseif (isset($v['link'])) {                $link = 'lay-href="'.$v['link'].'"';            } else {                $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;    }}
 |