• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

miaoxing / admin / 12066808351

28 Nov 2024 10:10AM UTC coverage: 20.768%. First build
12066808351

push

github

twinh
feat(admin): 系统菜单增加 `system` 标识

19 of 80 branches covered (23.75%)

0 of 4 new or added lines in 1 file covered. (0.0%)

146 of 703 relevant lines covered (20.77%)

2.52 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.88
/src/AdminPlugin.php
1
<?php
2

3
namespace Miaoxing\Admin;
4

5
use Miaoxing\Admin\Service\AdminLogModel;
6
use Miaoxing\Admin\Service\AdminMenu;
7
use Miaoxing\App\Middleware\CheckPagePermission;
8
use Miaoxing\App\Service\PermissionMap;
9
use Miaoxing\Plugin\BasePage;
10
use Miaoxing\Plugin\BasePlugin;
11
use Miaoxing\Plugin\Service\User;
12
use Miaoxing\Plugin\Service\UserModel;
13
use Wei\RetTrait;
14

15
/**
16
 * @mixin \PermissionPropMixin
17
 */
18
class AdminPlugin extends BasePlugin
19
{
20
    use RetTrait;
21

22
    protected $name = '后台';
23

24
    protected $description = '提供后台布局,头部菜单,侧边栏菜单等功能';
25

26
    protected $code = 203;
27

28
    public function onAdminMenuGetMenus(AdminMenu $menu)
29
    {
30
        $user = $menu->addChild('user')
×
31
            ->setLabel('用户')
×
32
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/user.svg')
×
33
            ->setSort(700);
×
34

35
        $menu->addChild('content')
×
36
            ->setLabel('内容')
×
37
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/book.svg')
×
38
            ->setSort(500);
×
39

40
        $menu->addChild('marketing')
×
41
            ->setLabel('营销')
×
42
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/gift.svg')
×
43
            ->setSort(400);
×
44

45
        $setting = $menu->addChild('setting')
×
46
            ->setLabel('设置')
×
47
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/setting.svg')
×
48
            ->setSort(300);
×
49

NEW
50
        $system = $menu->addChild('system')
×
NEW
51
            ->setLabel('系统')
×
NEW
52
            ->setSort(200)
×
NEW
53
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/control.svg');
×
54

55
        $mine = $menu->addChild('mine')->setLabel('我的')->setIsShow(false);
×
56
        $mine->addChild()->setLabel('修改密码')->setUrl('admin/password')
×
57
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/lock.svg');
×
58
        $mine->addChild()->setLabel('修改资料')->setUrl('admin/user')
×
59
            ->setIcon('https://cdnjs.cloudflare.com/ajax/libs/ant-design-icons-svg/4.3.1/outlined/user.svg');
×
60

61
        $admins = $user->addChild()->setLabel('管理员管理')->setUrl('admin/admins');
×
62
        $admins->addChild()->setUrl('admin/admins/new')->setLabel('添加');
×
63
        $admins->addChild()->setUrl('admin/admins/[id]/edit')->setLabel('编辑');
×
64

65
        $groups = $user->addChild()->setLabel('分组管理')->setUrl('admin/groups');
×
66
        $groups->addChild()->setLabel('添加')->setUrl('admin/groups/new');
×
67
        $groups->addChild()->setLabel('编辑')->setUrl('admin/groups/[id]/edit');
×
68
        $groups->addChild()->setLabel('删除')->setUrl('admin/groups/[id]/delete');
×
69

70
        if ($this->permission->isEnabledRoleManage()) {
×
71
            $roles = $user->addChild()->setLabel('角色管理')->setUrl('admin/roles');
×
72
            $roles->addChild()->setLabel('添加')->setUrl('admin/roles/new');
×
73
            $roles->addChild()->setLabel('编辑')->setUrl('admin/roles/[id]/edit');
×
74
            $roles->addChild()->setLabel('删除')->setUrl('admin/roles/delete');
×
75
        }
76

77
        if ($this->permission->isEnabledPermissionManage()) {
×
78
            $permissions = $user->addChild()->setLabel('权限管理')->setUrl('admin/permissions');
×
79
            $permissions->addChild()->setLabel('添加')->setUrl('admin/permissions/new');
×
80
            $permissions->addChild()->setLabel('编辑')->setUrl('admin/permissions/[id]/edit');
×
81
            $permissions->addChild()->setLabel('删除')->setUrl('admin/permissions/[id]/delete');
×
82
        }
83

84
        $setting->addChild()->setLabel('系统设置')->setUrl('admin/global/settings')->setSort(10);
×
85

86
        $menus = $system->addChild()->setLabel('菜单管理')->setUrl('admin/admin-menus');
×
87
        $menus->addChild()->setLabel('添加')->setUrl('admin/admin-menus/new');
×
88
        $menus->addChild()->setLabel('编辑')->setUrl('admin/admin-menus/[id]/edit');
×
89
        $menus->addChild()->setLabel('删除')->setUrl('admin/admin-menus/[id]/delete');
×
90
        $menus->addChild()->setLabel('重置')->setUrl('admin/admin-menus#reset');
×
91
    }
92

93
    public function onPermissionGetMap(PermissionMap $map)
94
    {
95
        $map->prefix('admin/admins', static function (PermissionMap $map) {
×
96
            $map->addList('', [
×
97
                'GET api/admin/groups',
×
98
            ]);
×
99
            $map->addNew('', [
×
100
                'GET api/admin/groups',
×
101
            ]);
×
102
            $map->addEdit('', [
×
103
                'GET api/admin/groups',
×
104
            ]);
×
105
        });
×
106

107
        $map->prefix('admin/groups', static function (PermissionMap $map) {
×
108
            $map->addList();
×
109
            $map->addNew('', [
×
110
                'GET api/admin/groups',
×
111
            ]);
×
112
            $map->addEdit('', [
×
113
                'GET api/admin/groups',
×
114
            ]);
×
115
            $map->addDelete();
×
116
        });
×
117

118
        $map->prefix('admin/roles', static function (PermissionMap $map) {
×
119
            $map->addList();
×
120
            $map->addNew('', [
×
121
                'GET api/admin/permissions',
×
122
            ]);
×
123
            $map->addEdit('', [
×
124
                'GET api/admin/permissions',
×
125
            ]);
×
126
            $map->addDelete();
×
127
        });
×
128

129
        $map->prefix('admin/permissions', static function (PermissionMap $map) {
×
130
            $map->addList();
×
131
            $map->addNew();
×
132
            $map->addEdit();
×
133
            $map->addDelete();
×
134
        });
×
135

136
        $map->prefix('admin/admin-menus', static function (PermissionMap $map) {
×
137
            $map->addList();
×
138
            $map->addNew();
×
139
            $map->addEdit();
×
140
            $map->addDelete();
×
141
            $map->add('#reset', [
×
142
                'POST api/admin/admin-menus/reset',
×
143
            ]);
×
144
        });
×
145

146
        $map->add('admin/global/settings', [
×
147
            'PATCH api/admin/global/settings',
×
148
        ]);
×
149
    }
150

151
    public function onPageInit(BasePage $page)
152
    {
153
        if ($this->app->isAdmin() && $this->permission->isEnabledCheck()) {
×
154
            $page->middleware(CheckPagePermission::class);
×
155
        }
156
    }
157

158
    public function onUserLogin(UserModel $user)
159
    {
160
        if ($user->isAdmin) {
20✔
161
            AdminLogModel::log('用户登陆', $user);
×
162
        }
163
    }
164

165
    public function onBeforeUserLogout(UserModel $user)
166
    {
167
        if ($user->isAdmin) {
×
168
            AdminLogModel::log('用户退出', $user);
×
169
        }
170
    }
171

172
    public function onCheckAuth()
173
    {
174
        if (!$this->app->isAdmin()) {
×
175
            return;
×
176
        }
177

178
        $ret = User::checkLogin();
×
179
        if ($ret->isErr()) {
×
180
            // 指定后台登录的地址
181
            $ret['next'] = 'admin/login';
×
182
            return $ret;
×
183
        }
184

185
        if (!User::cur()->isAdmin) {
×
186
            return $this->err([
×
187
                'message' => '很抱歉,您没有权限访问当前页面',
×
188
                'next' => 'admin/login',
×
189
            ]);
×
190
        }
191
    }
192
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc