urpm 是一套基于Laravel封装的后台用户管理权限系统,能够让开发者不用再关心权限问题,实现后台功能的快速开发。
U(User)用户管理;
R(Role)角色管理;
P(Permission)权限管理;
M(Menu)菜单管理。
框架Demo
地址:Demo
Demo
账号:admin
密码:123456
如果你喜欢这个开源项目,记得在右上角点个 star 哦,谢谢:)
- 用户管理:
- 用户可以配置权限
- 角色管理
- 角色可以配置用户
- 角色可以配置权限
- 权限管理:
- 不需要在代码上进行权限控制;
- 在权限管理里可以控制controller类的访问;
- 权限控制可以控制get/post请求,也可以控制某个方法请求;
- 权限控制的控制也可以上边两种请求的多种结合,可精确某个一请求的控制。
- 菜单管理:
- 菜单可以对应url前缀、controller类;
- 可以控制哪些角色可以看到;
- 菜单的位置可以直接通过拖拽排序。
- Laravel 5.3+
- php 5.6.4
- composer
git clone https://github.com/jachohx/urpm.git
或
git clone https://git.oschina.net/jacho/urpm.git
//在项目代码根目录执行
composer install
//在项目代码根目录执行,如果已经有的就不需要生成了
php artisan key:generate
php artisan config:clear
//修改数据库配置,以DB_开头的配置
//修改APP_URL
//在项目代码根目录执行
//增加表
php artisan migrate
//增加默认数据
composer dump-autoload
php artisan db:seed
访问APP_URL
比如我的首页:http://108.61.186.199:8088/
登录用户:admin
登录密码:123456
- 说明:
根据laravel路由restful规则,数据更新Cotroller有两个方法,分别是store,update;store是新数据存储,update是数据修改;在请求参数里的_method=POST对应Controller的store方法,PUT对应Controller的update方法。
- 提交方式:
表单以.post方式提交,默认增加参数_method=POST,如果提交的表单有id参数,且id值>0,_method=PUT。
- 参数说明:
class : _submit_,有此class,则使用表单提交插件
data-form-id :必填,指定要提交的form ID
data-url:选填,以post提交form的URL,如果不填,使用form的action,url遵循store方法的restful规则,如果是数据修改,自动会在url上加上id参数,不需要自己增加;
data-refresh-url:选填,提交成功后跳转的url,如果不填,则当前页面刷新
- 插件使用:
//提交#form /menu/1的请求,且_method=PUT,提交成功后跳转到/
<form id="form" action='/menu'>
<input type="hidden" name="id" value="1" />
<button type="submit" class="_submit_" data-form-id="form" data-refresh-url="/">提交</button>
- 说明:
根据laravel路由restful规则,数据删除使用的是Controller里的destroy方法,请求参数里有_method=DELETE则会使用到Controller的destroy方法。
- 参数说明:
class : _delete_,有此class,则使用列表数据删除插件
data-url:必填,以post提交此URL,url规则遵循restful
- 插件使用:
//提交/menu/1请求,且_method=DELETE,提交成功后刷新当前页
<a href="#" class="_delete_" data-url="/menu/1">删除</a>
以下是项目对配置文件做的修改,不用在代码修改,仅供大家参考
//修改数据库配置,以DB_开头的配置
//修改APP_URL
//增加以下配置
//SQL语句是否打印,不需要的话,可以改成false
DB_LOG=true
//权限配置不能编辑的ID
//用户不能删除的ID
DB_USER_CANNOT_MANAGE_IDS=1
//角色不能删除的ID
DB_ROLE_CANNOT_MANAGE_IDS=1
//权限不能删除的ID
DB_PERMISSION_CANNOT_MANAGE_IDS=1,2,3,4,5,6,7,8,9,10
//菜单不能删除的ID
DB_MENU_CANNOT_MANAGE_IDS=1,2,3,4,5,6,7,8
$routeMiddleware => [
'permission' => \App\Http\Middleware\AdminPermission::class,
]
'aliases' => [
'Admin' => App\Facedes\AdminFacedes::class,
]
//auth
Route::group(['prefix' => '/auth', 'namespace' => "Auth", 'middleware' => ['csrf']], function () {
Route::get('login', 'LoginController@showLoginForm')->name('login');
Route::post('login', 'LoginController@login');
Route::get('logout', 'LoginController@logout')->name('logout');
Route::post('logout', 'LoginController@logout')->name('logout');
});
//
Route::group(['prefix' => '/', 'middleware' => ['auth', 'permission']], function () {
Route::resource('/menu/tree', 'MenuController@tree');
Route::resource('/menu', 'MenuController');
Route::get('/role/{id}/permission', 'RoleController@permissionEdit');
Route::post('/role/{id}/permission', 'RoleController@permissionStore');
Route::resource('/role', 'RoleController');
Route::resource('/user', 'UserController');
Route::resource('/permission', 'PermissionController');
Route::resource('/info', 'InfoController');
Route::resource('/log', 'LogController');
Route::resource('/loginLog', 'LoginLogController');
Route::resource('/', 'HomeController');
});
//如果DB_LOG=true,要把这个listen加上,当然,如果不需要打印SQL日志,不需要加上这个配置
protected $listen = [
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\DatabaseEventListener'
]
];
如果你喜欢这个开源项目,记得在右上角点个 star 哦,谢谢:)