OA项目17:分配权限

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

一 写PrivilegeService.java及实现类PrivilegeServiceImpl.java:

1 package cn.clear.oa.service;
2
3 import cn.clear.oa.base.DaoSupport;
4 import cn.clear.oa.domain.Privilege;
5
6 public interface PrivilegeService extends DaoSupport<Privilege>{
7
8 }

PrivilegeService.java

 1 package cn.clear.oa.service.impl;
 2
 3 import org.springframework.stereotype.Service;
 4 import org.springframework.transaction.annotation.Transactional;
 5
 6 import cn.clear.oa.base.DaoSupportImpl;
 7 import cn.clear.oa.domain.Privilege;
 8 import cn.clear.oa.service.PrivilegeService;
 9
10 @Service
11 @Transactional
12 public class PrivilegeServiceImpl extends DaoSupportImpl<Privilege> implements PrivilegeService{
13
14 }

PrivilegeServiceImpl.java

二 在BaseAcion.java中将Service注入,以便在Action中可以直接使用:

  @Resource

  protected PrivilegeService privilegeService;

三 在RoleAction.java中添加属性方法:

  1.增加权限id数组privilegeIds属性和get,set方法,下面要用到:

  private Long[] privilegeIds;

  public Long[] getPrivilegeIds() {

    return privilegeIds;

  }

  public void setPrivilegeIds(Long[] privilegeIds) {

    this.privilegeIds = privilegeIds;

  }

  2.新增设置权限页面和设置权限的action方法,如下:

  /**设置权限页面*/

  public String setPrivilegeUI() throws Exception {

    //准备回显数据

    Role role = roleService.findById(model.getId());

    //将对象的值放在栈顶

    ActionContext.getContext().getValueStack().push(role);

 

    if(role.getPrivileges() != null){

      privilegeIds = new Long[role.getPrivileges().size()];

      int index = 0;

      for (Privilege  privilege : role.getPrivileges()) {

        privilegeIds[index++] = privilege.getId(); 

      }

    }

 

    //准备数据privilegeList

    List<Privilege> privilegeList = privilegeService.findAll();

    ActionContext.getContext().put("privilegeList", privilegeList);

    return "setPrivilegeUI";

  }

  /**设置权限*/

  public String setPrivilege() throws Exception {

    //拿到准备好修改的对象

    Role roles = roleService.findById(model.getId());

    //设置要修改的属性

    List<Privilege> privileges = privilegeService.findByIds(privilegeIds);

 

    roles.setPrivileges(new HashSet<Privilege>(privileges));

    //将对象持久化到数据库

    roleService.update(roles);

    return "toList";

  }

  3.在struts.xml中增加的岗位action映射中增加设置权限的result属性,如下:

  <result name="setPrivilegeUI">/WEB-INF/jsp/roleAction/setPrivilegeUI.jsp</result>

  4.在roleAction的list.jsp页面中修改设置权限的按钮指向地址,如下:

  <s:a action="role_setPrivilegeUI?id=%{id}">设置权限</s:a>

  5.写setPrivilegeUI.jsp页面:  

  

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5 <head>
 6 <title>配置权限</title>
 7     <%@ include file="/WEB-INF/jsp/public/commons.jspf" %>
 8     <script language="javascript" src="${pageContext.request.contextPath}/script/jquery_treeview/jquery.treeview.js"></script>
 9     <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/style/blue/file.css" />
10     <link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/script/jquery_treeview/jquery.treeview.css" />
11
12 </head>
13 <body>
14
15 <!-- 标题显示 -->
16 <div id="Title_bar">
17     <div id="Title_bar_Head">
18         <div id="Title_Head"></div>
19         <div id="Title"><!--页面标题-->
20             <img border="0" width="13" height="13" src="${pageContext.request.contextPath}/style/images/title_arrow.gif"/> 配置权限
21         </div>
22         <div id="Title_End"></div>
23     </div>
24 </div>
25
26 <!--显示表单内容-->
27 <div id=MainArea>
28     <s:form action="role_setPrivilege">
29         <s:hidden name="id"></s:hidden>
30         <div class="ItemBlock_Title1"><!-- 信息说明 --><div class="ItemBlock_Title1">
31             <img border="0" width="4" height="7" src="${pageContext.request.contextPath}/style/blue/images/item_point.gif" /> 正在为【${name}】配置权限 </div>
32         </div>
33
34         <!-- 表单内容显示 -->
35         <div class="ItemBlockBorder">
36             <div class="ItemBlock">
37                 <table cellpadding="0" cellspacing="0" class="mainForm">
38                     <!--表头-->
39                     <thead>
40                         <tr align="LEFT" valign="MIDDLE" id="TableTitle">
41                             <td width="300px" style="padding-left: 7px;">
42                                 <!-- 如果把全选元素的id指定为selectAll,并且有函数selectAll(),就会有错。因为有一种用法:可以直接用id引用元素 -->
43                                 <input type="CHECKBOX" id="cbSelectAll" onClick="$(‘[name=privilegeIds]‘).attr(‘checked‘,this.checked)"/>
44                                 <label for="cbSelectAll">全选</label>
45                             </td>
46                         </tr>
47                     </thead>
48
49                        <!--显示数据列表-->
50                     <tbody id="TableData">
51                         <tr class="TableDetail1">
52                             <!-- 显示权限树 -->
53                             <td>
54
55                             <s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name"></s:checkboxlist>
56
57                             </td>
58                         </tr>
59                     </tbody>
60                 </table>
61             </div>
62         </div>
63
64         <!-- 表单操作 -->
65         <div id="InputDetailBar">
66             <input type="image" src="${pageContext.request.contextPath}/style/images/save.png"/>
67             <a href="javascript:history.go(-1);"><img src="${pageContext.request.contextPath}/style/images/goBack.png"/></a>
68         </div>
69     </s:form>
70 </div>
71
72 <div class="Description">
73     说明:<br />
74     1,选中一个权限时:<br />
75     &nbsp;&nbsp;&nbsp;&nbsp; a,应该选中 他的所有直系上级。<br />
76     &nbsp;&nbsp;&nbsp;&nbsp; b,应该选中他的所有直系下级。<br />
77     2,取消选择一个权限时:<br />
78     &nbsp;&nbsp;&nbsp;&nbsp; a,应该取消选择 他的所有直系下级。<br />
79     &nbsp;&nbsp;&nbsp;&nbsp; b,如果同级的权限都是未选择状态,就应该取消选中他的直接上级,并递归向上做这个操作。<br />
80
81     3,全选/取消全选。<br />
82     4,默认选中当前岗位已有的权限。<br />
83 </div>
84
85 </body>
86 </html>
87  

setPrivilegeUI.jsp

四 启动服务器,打开岗位管理页面,测试设置权限功能。

时间: 2024-08-05 18:19:36

OA项目17:分配权限的相关文章

OA项目15:权限管理实体设计及映射

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 实体设计: 1.权限实体设计: 1)属性设计: 主键:id 关联属性:Set<Role> roles,Set<Privilege> privileges,Privilege parent,Set<Privilege> children 一般属性:name,url 特殊属性:暂无 2)涉及到3个实体:User(用户),Role(

OA项目14:权限管理功能分析

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 权限管理分析: 1.权限的含义: 即控制管理功能的使用.比如登陆,需要登陆才能看到首页.用户根据自身权限显示其可管理的功能,如用户没有权限,便不会在页面显示. 2.web应用的权限: 每个功能都有相应的一个或多个URL地址,控制用户的URL就可以控制其权限. 3.权限方案: 用户通过角色授权: 用户     --->   角色    --->   权

OA项目16:初始化权限数据

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频我的文字版实践笔记,本人用此来加强巩固自己开发知识,如有网友转载,请注明.谢谢. 一 在权限类中Privilege.java中加入构造函数,以便初始化权限数据,如下: public Privilege() { } public Privilege(String name, String url, Privilege parent) { super(); this.name = name; this.url = url; this.par

OA项目之权限设计②

1.接着昨天的今天到了设计怎样成功的实现权限分配的功能,首先我们看下这些功能的过程例如以下图: 首先是从user的list页面看到设置权限的button,点击进去进入设置权限的页面 进入设置权限页面,看到的是权限的数据例如以下图: 分析这当中有几个请求:点击设置权限进入权限页面,这都是在Role的Action中做的跟他的改动感觉几乎相同,可是须要注意的是从设置权限进入到分配权限传递的是id.进入页面后我们须要回显,而且将全部的权限数据都显示在分配权限的页面中,这都是要准备的. 以下就在RoleA

12天OA项目

OA(Office Automation):办公自动化--辅助管理,提高办公效率的系统. OA的功能: 文字处理,申请审批,办公用品管理,公文管理,会议管理,资料管理,知识管理,电子邮件等... 根据用户实际需求确定实际项目的功能. BBS--论坛 CRM--客户关系管理系统 CMS--内容管理系统 1.软件开发的简单步骤: <1.需求分析 <2.分析设计 <3.编码实现 <4.测试验证(修改) <5.部署与后期维护 2.每个步骤具体要做什么,谁来做? 3.我们要做什么? 设

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

Project Server 2013新手入门 (二)为PWA用户分配权限

上一篇文章我们讲到怎么为project server 2013 的PWA网站添加用户,那么用户添加好了,我们怎么给这些用户设置相应的权限,来对应我们项目管理中不同的角色(项目经理,资源经理.员工.负责人等),以便他们在项目整个过程中行使的权利和责任体现在我们的Project Server PWA的项目管理中心. 为用户分配PWA的全局权限(关于这个全局权限,我会在以后的文章中介绍) 执行完以上步骤之后,我们将在Project Server 2013 "服务器设置"下管理用户. 1)返回

Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

linux 新建用户、用户组 以及为新用户分配权限

最近项目中使用hadoop  一开始在linux下的root用户上做试验现在转到hadoop用户下所以要新建hadoop用户了直接入主题: Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的