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

miaoxing / admin / 7322929071

25 Dec 2023 04:02PM UTC coverage: 26.645% (-2.3%) from 28.897%
7322929071

push

github

twinh
ci: add PHP 8, remove PHP 7.2, 7.3

22 of 87 branches covered (0.0%)

162 of 608 relevant lines covered (26.64%)

2.74 hits per line

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

1.2
/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\BasePlugin;
10
use Miaoxing\Plugin\Service\User;
11
use Miaoxing\Plugin\Service\UserModel;
12
use Wei\BaseController;
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')->setLabel('用户')->setSort(700);
×
31
        $menu->addChild('content')->setLabel('内容')->setSort(500);
×
32
        $menu->addChild('marketing')->setLabel('营销')->setSort(400);
×
33
        $setting = $menu->addChild('setting')->setLabel('设置')->setSort(300);
×
34
        $menu->addChild()->setLabel('修改密码')->setUrl('admin/password')->setExtra('visible', false)
×
35
            ->setExtra('permission', false);
×
36
        $menu->addChild()->setLabel('修改资料')->setUrl('admin/user')->setExtra('visible', false)
×
37
            ->setExtra('permission', false);
×
38

39
        $admins = $user->addChild()->setLabel('管理员管理')->setUrl('admin/admins');
×
40
        $admins->addChild()->setUrl('admin/admins/new')->setLabel('添加');
×
41
        $admins->addChild()->setUrl('admin/admins/[id]/edit')->setLabel('编辑');
×
42

43
        $groups = $user->addChild()->setLabel('分组管理')->setUrl('admin/groups');
×
44
        $groups->addChild()->setLabel('添加')->setUrl('admin/groups/new');
×
45
        $groups->addChild()->setLabel('编辑')->setUrl('admin/groups/[id]/edit');
×
46
        $groups->addChild()->setLabel('删除')->setUrl('admin/groups/[id]/delete');
×
47

48
        if ($this->permission->isEnabledRoleManage()) {
×
49
            $roles = $user->addChild()->setLabel('角色管理')->setUrl('admin/roles');
×
50
            $roles->addChild()->setLabel('添加')->setUrl('admin/roles/new');
×
51
            $roles->addChild()->setLabel('编辑')->setUrl('admin/roles/[id]/edit');
×
52
            $roles->addChild()->setLabel('删除')->setUrl('admin/roles/delete');
×
53
        }
54

55
        if ($this->permission->isEnabledPermissionManage()) {
×
56
            $permissions = $user->addChild()->setLabel('权限管理')->setUrl('admin/permissions');
×
57
            $permissions->addChild()->setLabel('添加')->setUrl('admin/permissions/new');
×
58
            $permissions->addChild()->setLabel('编辑')->setUrl('admin/permissions/[id]/edit');
×
59
            $permissions->addChild()->setLabel('删除')->setUrl('admin/permissions/[id]/delete');
×
60
        }
61

62
        $setting->addChild()->setLabel('后台设置')->setUrl('admin/admin-settings')->setSort(10);
×
63
    }
64

65
    public function onPermissionGetMap(PermissionMap $map)
66
    {
67
        $map->prefix('admin/admins', static function (PermissionMap $map) {
×
68
            $map->addList('', [
×
69
                'GET api/admin/groups',
×
70
            ]);
×
71
            $map->addNew('', [
×
72
                'GET api/admin/groups',
×
73
            ]);
×
74
            $map->addEdit('', [
×
75
                'GET api/admin/groups',
×
76
            ]);
×
77
        });
×
78

79
        $map->prefix('admin/groups', static function (PermissionMap $map) {
×
80
            $map->addList();
×
81
            $map->addNew('', [
×
82
                'GET api/admin/groups',
×
83
            ]);
×
84
            $map->addEdit('', [
×
85
                'GET api/admin/groups',
×
86
            ]);
×
87
            $map->addDelete();
×
88
        });
×
89

90
        $map->prefix('admin/roles', static function (PermissionMap $map) {
×
91
            $map->addList();
×
92
            $map->addNew('', [
×
93
                'GET api/admin/permissions',
×
94
            ]);
×
95
            $map->addEdit('', [
×
96
                'GET api/admin/permissions',
×
97
            ]);
×
98
            $map->addDelete();
×
99
        });
×
100

101
        $map->prefix('admin/permissions', static function (PermissionMap $map) {
×
102
            $map->addList();
×
103
            $map->addNew();
×
104
            $map->addEdit();
×
105
            $map->addDelete();
×
106
        });
×
107

108
        $map->add('admin/admin-settings', [
×
109
            'PATCH api/admin/admin-settings',
×
110
        ]);
×
111
    }
112

113
    public function onControllerInit(BaseController $controller)
114
    {
115
        if ($this->app->isAdmin() && $this->permission->isEnabledCheck()) {
×
116
            $controller->middleware(CheckPagePermission::class);
×
117
        }
118
    }
119

120
    public function onUserLogin(UserModel $user)
121
    {
122
        if ($user->isAdmin) {
20✔
123
            AdminLogModel::log('用户登陆', $user);
×
124
        }
125
    }
126

127
    public function onBeforeUserLogout(UserModel $user)
128
    {
129
        if ($user->isAdmin) {
×
130
            AdminLogModel::log('用户退出', $user);
×
131
        }
132
    }
133

134
    public function onCheckAuth()
135
    {
136
        if (!$this->app->isAdmin()) {
×
137
            return;
×
138
        }
139

140
        $ret = User::checkLogin();
×
141
        if ($ret->isErr()) {
×
142
            // 指定后台登录的地址
143
            $ret['next'] = 'admin/login';
×
144
            return $ret;
×
145
        }
146

147
        if (!User::cur()->isAdmin) {
×
148
            return $this->err([
×
149
                'message' => '很抱歉,您没有权限访问当前页面',
×
150
                'next' => 'admin/login',
×
151
            ]);
×
152
        }
153
    }
154
}
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

© 2026 Coveralls, Inc