2020_12_07_120247_permission_data.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. use App\Models\User;
  3. use Illuminate\Database\Migrations\Migration;
  4. use Illuminate\Database\Schema\Blueprint;
  5. use Spatie\Permission\Models\Permission;
  6. use Spatie\Permission\Models\Role;
  7. use Spatie\Permission\PermissionRegistrar;
  8. class PermissionData extends Migration
  9. {
  10. /**
  11. * Run the migrations.
  12. *
  13. * @return void
  14. */
  15. public function up()
  16. {
  17. $tableNames = config('permission.table_names');
  18. Schema::table($tableNames['permissions'], function (Blueprint $table) {
  19. $table->string('description')->after('name');
  20. });
  21. Schema::table($tableNames['roles'], function (Blueprint $table) {
  22. $table->string('description')->after('name');
  23. });
  24. Artisan::call('cache:clear');
  25. app()[PermissionRegistrar::class]->forgetCachedPermissions();
  26. $permissions = [
  27. ['name' => 'admin.aff.detail', 'description' => '【推广系统】提现申请详情', 'guard_name' => 'web'],
  28. ['name' => 'admin.aff.index', 'description' => '【推广系统】提现管理列表', 'guard_name' => 'web'],
  29. ['name' => 'admin.aff.rebate', 'description' => '【推广系统】返利流水记录', 'guard_name' => 'web'],
  30. ['name' => 'admin.aff.setStatus', 'description' => '【推广系统】设置提现状态', 'guard_name' => 'web'],
  31. ['name' => 'admin.article.create,store', 'description' => '【客服系统】新建文章', 'guard_name' => 'web'],
  32. ['name' => 'admin.article.destroy', 'description' => '【客服系统】删除文章', 'guard_name' => 'web'],
  33. ['name' => 'admin.article.edit,update', 'description' => '【客服系统】编辑文章', 'guard_name' => 'web'],
  34. ['name' => 'admin.article.index,show', 'description' => '【客服系统】文章列表', 'guard_name' => 'web'],
  35. ['name' => 'admin.config.*', 'description' => '【设置】通用配置', 'guard_name' => 'web'],
  36. ['name' => 'admin.coupon.create,store', 'description' => '【商品系统】新建卡劵', 'guard_name' => 'web'],
  37. ['name' => 'admin.coupon.destroy', 'description' => '【商品系统】删除卡劵', 'guard_name' => 'web'],
  38. ['name' => 'admin.coupon.export', 'description' => '【商品系统】导出卡劵', 'guard_name' => 'web'],
  39. ['name' => 'admin.coupon.index', 'description' => '【商品系统】卡劵列表', 'guard_name' => 'web'],
  40. ['name' => 'admin.goods.create,store', 'description' => '【商品系统】新建商品', 'guard_name' => 'web'],
  41. ['name' => 'admin.goods.destroy', 'description' => '【商品系统】删除商品', 'guard_name' => 'web'],
  42. ['name' => 'admin.goods.edit,update', 'description' => '【商品系统】编辑商品', 'guard_name' => 'web'],
  43. ['name' => 'admin.goods.index', 'description' => '【商品系统】商品列表', 'guard_name' => 'web'],
  44. ['name' => 'admin.index', 'description' => '【管理中心】首页', 'guard_name' => 'web'],
  45. ['name' => 'admin.invite.index', 'description' => '【推广系统】邀请列表', 'guard_name' => 'web'],
  46. ['name' => 'admin.invite.create', 'description' => '【推广系统】生成邀请码', 'guard_name' => 'web'],
  47. ['name' => 'admin.invite.export', 'description' => '【推广系统】导出邀请码', 'guard_name' => 'web'],
  48. ['name' => 'admin.log.ban', 'description' => '【日志系统】封禁记录', 'guard_name' => 'web'],
  49. ['name' => 'admin.log.credit', 'description' => '【日志系统】余额记录', 'guard_name' => 'web'],
  50. ['name' => 'admin.log.flow', 'description' => '【日志系统】流量变动记录', 'guard_name' => 'web'],
  51. ['name' => 'admin.log.ip', 'description' => '【日志系统】在线IP记录', 'guard_name' => 'web'],
  52. ['name' => 'admin.log.notify', 'description' => '【日志系统】通知记录', 'guard_name' => 'web'],
  53. ['name' => 'admin.log.online', 'description' => '【日志系统】在线监控', 'guard_name' => 'web'],
  54. ['name' => 'admin.log.traffic', 'description' => '【日志系统】流量日志', 'guard_name' => 'web'],
  55. ['name' => 'admin.log.viewer', 'description' => '【日志系统】运行日志', 'guard_name' => 'web'],
  56. ['name' => 'admin.marketing.add', 'description' => '【客服系统】推送消息', 'guard_name' => 'web'],
  57. ['name' => 'admin.marketing.email', 'description' => '【客服系统】邮件消息列表', 'guard_name' => 'web'],
  58. ['name' => 'admin.marketing.push', 'description' => '【客服系统】推送消息列表', 'guard_name' => 'web'],
  59. ['name' => 'admin.node.auth.destroy', 'description' => '【线路系统】删除授权', 'guard_name' => 'web'],
  60. ['name' => 'admin.node.auth.index', 'description' => '【线路系统】授权列表', 'guard_name' => 'web'],
  61. ['name' => 'admin.node.auth.store', 'description' => '【线路系统】新建授权', 'guard_name' => 'web'],
  62. ['name' => 'admin.node.auth.update', 'description' => '【线路系统】编辑授权', 'guard_name' => 'web'],
  63. ['name' => 'admin.node.cert.create,store', 'description' => '【线路系统】新建证书', 'guard_name' => 'web'],
  64. ['name' => 'admin.node.cert.destroy', 'description' => '【线路系统】删除证书', 'guard_name' => 'web'],
  65. ['name' => 'admin.node.cert.edit,update', 'description' => '【线路系统】编辑证书', 'guard_name' => 'web'],
  66. ['name' => 'admin.node.cert.index', 'description' => '【线路系统】证书列表', 'guard_name' => 'web'],
  67. ['name' => 'admin.node.check', 'description' => '【线路系统】阻断检测', 'guard_name' => 'web'],
  68. ['name' => 'admin.node.create,store', 'description' => '【线路系统】新建线路', 'guard_name' => 'web'],
  69. ['name' => 'admin.node.destroy', 'description' => '【线路系统】删除线路', 'guard_name' => 'web'],
  70. ['name' => 'admin.node.edit,update', 'description' => '【线路系统】编辑线路', 'guard_name' => 'web'],
  71. ['name' => 'admin.node.geo', 'description' => '【线路系统】更新地理', 'guard_name' => 'web'],
  72. ['name' => 'admin.node.index', 'description' => '【线路系统】线路列表', 'guard_name' => 'web'],
  73. ['name' => 'admin.node.monitor', 'description' => '【线路系统】流量监控', 'guard_name' => 'web'],
  74. ['name' => 'admin.node.ping', 'description' => '【线路系统】测速', 'guard_name' => 'web'],
  75. ['name' => 'admin.node.pingLog', 'description' => '【线路系统】测速日志', 'guard_name' => 'web'],
  76. ['name' => 'admin.node.reload', 'description' => '【线路系统】重载', 'guard_name' => 'web'],
  77. ['name' => 'admin.order', 'description' => '【商品系统】订单列表', 'guard_name' => 'web'],
  78. ['name' => 'admin.payment.callback', 'description' => '【日志系统】回调列表', 'guard_name' => 'web'],
  79. ['name' => 'admin.permission.create,store', 'description' => '【权限系统】新建权限', 'guard_name' => 'web'],
  80. ['name' => 'admin.permission.destroy', 'description' => '【权限系统】删除权限', 'guard_name' => 'web'],
  81. ['name' => 'admin.permission.edit,update', 'description' => '【权限系统】编辑权限', 'guard_name' => 'web'],
  82. ['name' => 'admin.permission.index', 'description' => '【权限系统】权限列表', 'guard_name' => 'web'],
  83. ['name' => 'admin.role.create,store', 'description' => '【权限系统】新建角色', 'guard_name' => 'web'],
  84. ['name' => 'admin.role.destroy', 'description' => '【权限系统】删除角色', 'guard_name' => 'web'],
  85. ['name' => 'admin.role.edit,update', 'description' => '【权限系统】编辑角色', 'guard_name' => 'web'],
  86. ['name' => 'admin.role.index', 'description' => '【权限系统】角色列表', 'guard_name' => 'web'],
  87. ['name' => 'admin.rule.clear', 'description' => '【审计规则】清除触发日志', 'guard_name' => 'web'],
  88. ['name' => 'admin.rule.destroy', 'description' => '【审计规则】删除规则', 'guard_name' => 'web'],
  89. ['name' => 'admin.rule.group.assign,editNode', 'description' => '【审计规则】分组关联线路', 'guard_name' => 'web'],
  90. ['name' => 'admin.rule.group.create,store', 'description' => '【审计规则】新建分组', 'guard_name' => 'web'],
  91. ['name' => 'admin.rule.group.destroy', 'description' => '【审计规则】删除分组', 'guard_name' => 'web'],
  92. ['name' => 'admin.rule.group.edit,update', 'description' => '【审计规则】编辑分组', 'guard_name' => 'web'],
  93. ['name' => 'admin.rule.group.index', 'description' => '【审计规则】分组列表', 'guard_name' => 'web'],
  94. ['name' => 'admin.rule.index', 'description' => '【审计规则】规则列表', 'guard_name' => 'web'],
  95. ['name' => 'admin.rule.log', 'description' => '【审计规则】触发日志', 'guard_name' => 'web'],
  96. ['name' => 'admin.rule.store', 'description' => '【审计规则】新建规则', 'guard_name' => 'web'],
  97. ['name' => 'admin.rule.update', 'description' => '【审计规则】编辑规则', 'guard_name' => 'web'],
  98. ['name' => 'admin.subscribe.index', 'description' => '【用户系统】订阅列表', 'guard_name' => 'web'],
  99. ['name' => 'admin.subscribe.log', 'description' => '【用户系统】订阅记录', 'guard_name' => 'web'],
  100. ['name' => 'admin.subscribe.set', 'description' => '【用户系统】编辑订阅状态', 'guard_name' => 'web'],
  101. ['name' => 'admin.system.index', 'description' => '【设置】查看系统设置', 'guard_name' => 'web'],
  102. ['name' => 'admin.system.update,extend', 'description' => '【设置】编辑系统设置', 'guard_name' => 'web'],
  103. ['name' => 'admin.test.*', 'description' => '【设置】通知,支付设置测试', 'guard_name' => 'web'],
  104. ['name' => 'admin.ticket.destroy', 'description' => '【客服系统】删除工单', 'guard_name' => 'web'],
  105. ['name' => 'admin.ticket.edit,update', 'description' => '【客服系统】回复工单', 'guard_name' => 'web'],
  106. ['name' => 'admin.ticket.index', 'description' => '【客服系统】工单列表', 'guard_name' => 'web'],
  107. ['name' => 'admin.ticket.store', 'description' => '【客服系统】新建工单', 'guard_name' => 'web'],
  108. ['name' => 'admin.tools.*', 'description' => '【工具箱】', 'guard_name' => 'web'],
  109. ['name' => 'admin.user.batch', 'description' => '【用户系统】生成用户', 'guard_name' => 'web'],
  110. ['name' => 'admin.user.create,store', 'description' => '【用户系统】新建用户', 'guard_name' => 'web'],
  111. ['name' => 'admin.user.destroy', 'description' => '【用户系统】删除用户', 'guard_name' => 'web'],
  112. ['name' => 'admin.user.edit,update', 'description' => '【用户系统】编辑用户', 'guard_name' => 'web'],
  113. ['name' => 'admin.user.export', 'description' => '【用户系统】配置信息', 'guard_name' => 'web'],
  114. ['name' => 'admin.user.exportProxy', 'description' => '【用户系统】读取配置', 'guard_name' => 'web'],
  115. ['name' => 'admin.user.group.create,store', 'description' => '【用户系统】新建分组', 'guard_name' => 'web'],
  116. ['name' => 'admin.user.group.destroy', 'description' => '【用户系统】删除分组', 'guard_name' => 'web'],
  117. ['name' => 'admin.user.group.edit,update', 'description' => '【用户系统】编辑分组', 'guard_name' => 'web'],
  118. ['name' => 'admin.user.group.index', 'description' => '【用户系统】分组列表', 'guard_name' => 'web'],
  119. ['name' => 'admin.user.index', 'description' => '【用户系统】用户列表', 'guard_name' => 'web'],
  120. ['name' => 'admin.user.monitor', 'description' => '【用户系统】流量统计', 'guard_name' => 'web'],
  121. ['name' => 'admin.user.online', 'description' => '【用户系统】在线巡查', 'guard_name' => 'web'],
  122. ['name' => 'admin.user.reset', 'description' => '【用户系统】流量重置', 'guard_name' => 'web'],
  123. ['name' => 'admin.user.switch', 'description' => '【用户系统】用户视角', 'guard_name' => 'web'],
  124. ['name' => 'admin.user.updateCredit', 'description' => '【用户系统】编辑余额', 'guard_name' => 'web'],
  125. ['name' => 'give roles', 'description' => '【用户系统】赋予角色权限', 'guard_name' => 'web'],
  126. ];
  127. Permission::insert($permissions);
  128. Role::create(['name' => 'Super Admin', 'description' => '超级管理员']);
  129. foreach (User::whereIsAdmin(1)->get() as $admin) {
  130. $admin->assignRole('Super Admin');
  131. }
  132. Schema::table('user', function (Blueprint $table) {
  133. $table->dropColumn(['is_admin']);
  134. });
  135. }
  136. /**
  137. * Reverse the migrations.
  138. *
  139. * @return void
  140. */
  141. public function down()
  142. {
  143. $tableNames = config('permission.table_names');
  144. Schema::table($tableNames['permissions'], function (Blueprint $table) {
  145. $table->dropColumn('description');
  146. });
  147. Schema::table($tableNames['roles'], function (Blueprint $table) {
  148. $table->dropColumn('description');
  149. });
  150. Artisan::call('cache:clear');
  151. app()[PermissionRegistrar::class]->forgetCachedPermissions();
  152. Schema::table('user', function (Blueprint $table) {
  153. $table->boolean('is_admin')->default(0)->comment('是否管理员:0-否、1-是')->after('group_id');
  154. });
  155. foreach (User::role('Super Admin')->get() as $admin) {
  156. $admin->is_admin = 1;
  157. $admin->save();
  158. }
  159. Role::query()->delete();
  160. Permission::query()->delete();
  161. }
  162. }