文章目录
九 Admin 分配 Role
git checkout -b 9.0.0_admin_role
1 目标
-
保护资源, 设置角色权限
-
给用户设置角色<可以有多个角色>
-
判断当前用户的角色是否有权限
-
通过页面操作把 Admin 和 Role 之间的
关联关系
保存到数据库 -
- 中间表 - inner_admin_role
2. 思路
3 代码
3.1 给 Admin 分配 Role
-
页面
-
**Admin-page.jsp中分配按钮**
修改为**超链接**
<a href="assign/to/assign/role/page.html?adminId=${ admin.id }&pageNum=${ requestScope.pageInfo.pageNum }&keyword=${ param.keyword }"
class="btn btn-success btn-xs"><i class="glyphicon glyphicon-check"></i></a>
- 创建 AssignHandler
package com.atguigu.crowd.mvc.handler;
import com.atguigu.crowd.entity.Role;
import com.atguigu.crowd.service.api.AdminService;
import com.atguigu.crowd.service.api.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@Controller
public class AssignHandler {
@Autowired
private AdminService adminService;
@Autowired
private RoleService roleService;
@RequestMapping("/assign/to/assign/role/page.html")
public String toAssignRolePage(
@RequestParam("adminId") Integer adminId,
ModelMap modelMap
) {
// 查询已分配角色
List<Role> assignedRoleList = roleService.getAssignedRole(adminId);
// 查询未分配角色
List<Role> unAssignedRoleList = roleService.getUnAssignedRole(adminId);
// 存入模型
modelMap.addAttribute("assignedRoleList", assignedRoleList);
modelMap.addAttribute("unAssignedRoleList", unAssignedRoleList);
return "assign-role";
}
}
- RoleMapper.xml
<select id="selectAssignedRole" resultType="com.atguigu.crowd.entity.Role">
select id,name from t_tole where id in (select role_id from inner_admin_role where admin_id=#{adminId})
</select>
<select id="selectUnAssignedRole" resultType="com.atguigu.crowd.entity.Role">
select id,name from t_tole where id not in (select role_id from inner_admin_role where admin_id=#{adminId})
</select>
- 创建页面
assign-role.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zn-CN">
<%@include file="/WEB-INF/include-head.jsp" %>
<body>
<%@include file="/WEB-INF/include-nav.jsp" %>
<div class="container-fluid">
<div class="row">
<%@include file="/WEB-INF/include-sidebar.jsp" %>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<ol class="breadcrumb">
<li><a href="#">首页</a></li>
<li><a href="#">数据列表</a></li>
<li class="active">分配角色</li>
</ol>
<div class="panel panel-default">
<div class="panel-body">
<form role="form" class="form-inline">
<div class="form-group">
<label for="exampleInputPassword1">未分配角色列表</label><br>
<select class="form-control" multiple size="10" style="width:100px;overflow-y:auto;">
<option value="pm">PM</option>
<option value="sa">SA</option>
<option value="se">SE</option>
<option value="tl">TL</option>
<option value="gl">GL</option>
</select>
</div>
<div class="form-group">
<ul>
<li class="btn btn-default glyphicon glyphicon-chevron-right"></li>
<br>
<li class="btn btn-default glyphicon glyphicon-chevron-left" style="margin-top:20px;"></li>
</ul>
</div>
<div class="form-group" style="margin-left:40px;">
<label for="exampleInputPassword1">已分配角色列表</label><br>
1
1
1
1
<select class="form-control" multiple size="10" style="width:100px;overflow-y:auto;">
<option value="qa">QA</option>
<option value="qc">QC</option>
<option value="pg">PG</option>