🔓 Ultimate Webshell - Penetration Testing Tool

📖 File Reader

<?php
namespace app\admin\controller;
use adminCreate\form\Form;
use app\admin\common\Common_menus;
use app\admin\model\ModelAdmin;
use think\facade\Db;
use think\facade\View;
use FormBuilder\Factory\Elm;
use FormBuilder\Form\IviewForm;
use FormBuilder\Response;

class Admin extends Base
{
    /*管理员列表*/
    public function admin_list()
    {
        $role_list = db::name("admin_role")->order("id asc")->select();
        View::assign([
            'role_list'=>$role_list,
        ]);
        return View::fetch();
    }

    /*管理员列表数据*/
    public function admin_list_ajax()
    {
        $keyword = input("param.keyword");
        $role_id = input("param.role_id");
        $where = 1;
        if (!empty($keyword)){
            $where .= " and (a.nickname like '%".$keyword."%' or a.user_name like '%".$keyword."%')";
        }
        if (!empty($role_id)){
            $where .= " and role_id = $role_id";
        }
        $list = db::name("admin")->alias("a")
            ->join("admin_role b","a.role_id = b.id","LEFT")
            ->field("a.*,b.name as role_name,b.type as role_type")
            ->where($where)
            ->order("a.admin_id desc")
            ->page($this->page,$this->limit)
            ->select()
            ->toArray();
        foreach ($list as $k => $v){
            $role_type = '';
            if ($v["role_type"] == 1){
                $role_type = "平台管理员";
            }elseif ($v["role_type"] == 2){
                $role_type = "店铺管理员";
            }
            $list[$k]["role_type"] = $role_type;
            $list[$k]["head"] = str_replace('\\',"/",$v["head"]);
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        $count = db::name("admin")->alias("a")
            ->join("admin_role b","a.role_id = b.id","LEFT")
            ->where($where)
            ->count();
        return $this->layui_json($count,$list);

    }

    /*管理员基本资料*/
    public function admin_basic()
    {
        $admin_id = $this->admin_id;
        if (input("post.")){
            $info = [];
            if (!empty($_POST["password"])){
                if (input("param.password") != input("param.password2")){
                    return $this->error_json("两次密码不一致");
                }
                $info["password"] = base64_encode($_POST["password2"]);
            }
            db::name("admin")->where("admin_id = $admin_id")->data($info)->update();
            return $this->succeed_json("操作成功");
        }else{
            $admin_info = db::name("admin")->alias("a")->where("admin_id = $admin_id")->find();
            $role_list = db::name("admin_role")->order("id asc")->select();
            View::assign([
                'admin_info'=>$admin_info,
                'role_list'=>$role_list,
            ]);
            return View::fetch();
        }
    }

    /*管理员创建*/
    public function admin_update()
    {
        $admin_id = input("param.admin_id");
        $admin_role_shop = db::name("admin_role")->where("type = 2")->field("id,type,name")->select()->toarray();
        $role_shop_id = [];//店铺角色id
        foreach ($admin_role_shop as $v){
            $role_shop_id[] = $v["id"];
        }
        if ($_POST){
            $user_name = input("param.user_name");
            $password = input("param.password");
            $password2 = input("param.password2");
            if (!empty($password)){
                if ($password != $password2){
                    return $this->error_json("密码不一致");
                }
            }
            $where = 1;
            if (!empty($admin_id)){
                $where .= " and admin_id != $admin_id";
            }
            $admin_info = db::name("admin")->where("user_name = '$user_name' and $where")->find();
            if (!empty($admin_info)){
                return $this->error_json("该账号已存在");
            }
            $info = [
                'shop_id'=>input("param.shop_id"),
                'nickname'=>input("param.nickname"),
                'head'=>input("param.head") != ''?implode(",",input("param.head")):'',
                'role_id'=>input("param.role_id"),
                'user_name'=>input("param.user_name"),
            ];
            if (!empty($password)){
                $info["password"] = base64_encode(input("param.password"));
            }
            if (!in_array($info['role_id'],$role_shop_id)){ //非店铺管理员,无需绑定店铺id
                $info["shop_id"] = 0;
            }
            if (empty($admin_id)){
                $info["add_time"] = time();
                db::name("admin")->insertGetId($info);
            }else{
                db::name("admin")->where("admin_id = $admin_id")->data($info)->update();
            }
            return $this->succeed_json("操作成功");
        }else{
            $info = ['nickname'=>'','role_id'=>'','head'=>[],'user_name'=>'','shop_id'=>''];
            if (!empty($admin_id)){
                $info = db::name("admin")->where("admin_id = $admin_id")->find();
                $info["shop_id"] = $info["shop_id"] == 0?'':$info["shop_id"];
            }
            $form = new Form();
            $form->tabs('tabs1', '基本信息');
            $form->selectOne('role_id', '角色',$info["role_id"])->setOptions(function(){
                $admin_role = db::name("admin_role")->order("id desc")->select()->toArray();
                $menus = [];
                foreach ($admin_role as $k => $v){
                    $menus[] = ['label'=>$v["name"],'value'=>$v["id"]];
                }
                return $menus;
            })->multiple(false)->filterable(false)->required()->tabs('tabs1');
            /*店铺管理员绑定店铺*/
            $shop_show = [];//需绑定店铺账号的角色
            foreach ($admin_role_shop as $v){
                $shop_show[] = 'role_id'.$v["id"];
            }
            $form->selectone('shop_id', '绑定店铺', $info["shop_id"])->setOptions(function () {
                $shop_list = db::name("shop")->where("state in (1)")->field("id,name,name_person,mobile_person")->order("id asc")->select()->toArray();
                $menus = [];
                foreach ($shop_list as $v){
                    $menus[] = ['label' => $v['name'], 'value' => $v['id']];
                }
                return $menus;
            })->tabs('tabs1')->multiple(false)->filterable(true)->required()->show($shop_show);

            if (!empty($admin_id)){
                $form->input('user_name', '账号',$info["user_name"])->col(7)->disabled(true)->tabs('tabs1');
                $form->input('password', '新密码','')->type('password')->col(7)->tabs('tabs1');
                $form->input('password2', '确认密码','')->type('password')->col(7)->tabs('tabs1');
            }else{
                $form->input('user_name', '账号',$info["user_name"])->col(7)->required()->tabs('tabs1');
                $form->input('password', '新密码','')->type('password')->col(7)->tabs('tabs1')->required();
                $form->input('password2', '确认密码','')->type('password')->col(7)->tabs('tabs1')->required();
            }
            $form->input('nickname', '昵称',$info["nickname"])->required()->tabs('tabs1');
            $form->upload('head', '头像', '/admin/ad/uploads', [$info['head']])->nultiple(false)->required('',"array")->tabs('tabs1');


            $form->hidden('admin_id',$admin_id);
            $form->button('/admin/Admin/admin_update');
            return $form;
        }
    }

    /*管理员删除*/
    public function admin_del()
    {
        $admin_id = input("param.admin_id");
        if ($admin_id == $this->admin_id){
            return $this->error_json("不可删除本账号");
        }
        db::name("admin")->where("admin_id = $admin_id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*角色管理*/
    public function role_list()
    {
        return View::fetch();
    }

    /*角色数据*/
    public function role_list_ajax()
    {
        $name = input("param.name");
        $where = 1;
        if (!empty($name)){
            $where .= " and (`name` like '%".$name."%' or `describe` like '%".$name."%')";
        }
        $list = db::name("admin_role")->where($where)->order("id desc")->page($this->page,$this->limit)->select()->toArray();
        foreach ($list as $k => $v){
            $type = '';
            if ($v["type"] == 1){
                $type = "平台管理员";
            }else if ($v["type"] == 2){
                $type = "店铺管理员";
            }
            $list[$k]["type"] = $type;
            $list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
        }
        $count = db::name("admin_role")->where($where)->count();
        return $this->layui_json($count,$list);
    }

    /*角色创建*/
    public function role_add()
    {
        $jurisdiction_list = Common_menus::jurisdiction();
        View::assign([
            'jurisdiction_list'=> $jurisdiction_list,
        ]);
        return View::fetch();
    }

    /*角色编辑*/
    public function role_edit()
    {
        $role_id = input("param.role_id");
        $role_info = db::name("admin_role")->where("id = $role_id")->find();
        $jurisdiction_list = Common_menus::jurisdiction($role_id);
        View::assign([
            'jurisdiction_list'=> $jurisdiction_list,
            'role_id'=> $role_id,
            'role_info'=> $role_info,
        ]);
        return View::fetch();
    }

    /*角色数据处理*/
    public function role_upload()
    {
        $id = input("param.id");
        $jurisdiction = '';
        if (!empty($_POST["jurisdiction_id"])){
            $jurisdiction = implode(",", $_POST["jurisdiction_id"]);
        }
        $info = [
            'type'=>$_POST["type"],
            'name'=>$_POST["name"],
            'describe'=>$_POST["describe"],
            'jurisdiction'=>$jurisdiction,
            'add_time'=>time(),
        ];
        if (empty($id)){
            db::name("admin_role")->insertGetId($info);
            return $this->succeed_json("创建成功");
        }else{
            db::name("admin_role")->where("id = $id")->data($info)->update();
            return $this->succeed_json("修改成功");
        }
    }

    /*角色删除*/
    public function role_del()
    {
        $role_id = input("param.id");
        $count = db::name("admin")->where("role_id = $role_id")->count();
        if (!empty($count)){
            return $this->error_json("已存在该角色不可删除");
        }
        db::name("admin_role")->where("id = $role_id")->delete();
        return $this->succeed_json("删除成功");
    }

    /*模型测试方法*/
    public function ceshi(ModelAdmin $modelAdmin)
    {
        //查询
        $list = ModelAdmin::where("admin_id = 1")->find()->toArray();
        //创建
//        $info = [
//            'role_id'=>1,
//            'head'=>'http://www.baidu.com',
//            'nickname'=>'测试昵称',
//            'add_time'=>time(),
//        ];
//        $admin = ModelAdmin::create($info)->toArray();
        //编辑
//        $info = [
//            'role_id'=>1,
//            'head'=>'http://www.baidu.com',
//            'nickname'=>'测试昵称222',
//            'add_time'=>time(),
//        ];
//        $admin = ModelAdmin::where("admin_id = 18")->update($info);
         $data = $modelAdmin->list();
    }

    /*表单生成测试*/
    public function from_upload()
    {
        $action = 'from_upload_update';
        $method = 'POST';
        $color = Elm::color('field', '颜色选择器', '#FF7271');
        $input = Elm::input('goods_name', '商品名称')->required();
        $textarea = Elm::textarea('goods_info', '商品简介');
        $switch = Elm::switches('is_open', '是否开启')->activeText('开启')->inactiveText('关闭');
        //创建表单
        $form = (new IviewForm($action))->setMethod($method);
        //添加组件
        $form->setRule([$input, $textarea,$color]);
        $form->append($switch);
        $form->formData([
            'goods_name'=>'',
        ]);
        //生成表单页面
        $formHtml = $form->view();
        print_r($formHtml);

        exit();
    }

    /*表单生成上传处理*/
    public function from_upload_update()
    {
        //return $this->error_json("测试失败");
        return $this->succeed_json("");
    }
}