ACL.java
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:3k
源码类别:

OA系统

开发平台:

Java

  1. package com.bjsxt.oa.model;
  2. /**
  3.  * 访问控制列表
  4.  * @author Administrator
  5.  * @hibernate.class table="T_ACL"
  6.  */
  7. public class ACL {
  8. /**
  9.  * 主体类型:角色
  10.  */
  11. public static final String TYPE_ROLE = "Role";
  12. /**
  13.  * 主体类型:用户
  14.  */
  15. public static final String TYPE_USER = "User";
  16. /**
  17.  * 授权允许
  18.  */
  19. public static final int ACL_YES = 1;
  20. /**
  21.  * 授权不允许
  22.  */
  23. public static final int ACL_NO = 0;
  24. /**
  25.  * 授权不确定
  26.  */
  27. public static final int ACL_NEUTRAL = -1;
  28. /**
  29.  * @hibernate.id
  30.  *  generator-class="native"
  31.  */
  32. private int id;
  33. /**
  34.  * 主体类型:角色或用户
  35.  * @hibernate.property
  36.  *  not-null="true"
  37.  */
  38. private String principalType;
  39. /**
  40.  * 主体标识:角色标识或用户标识
  41.  * @hibernate.property
  42.  *  not-null="true"
  43.  */
  44. private int principalSn;
  45. /**
  46.  * 资源标识
  47.  * @hibernate.property
  48.  *  not-null="true"
  49.  */
  50. private int resourceSn;
  51. /**
  52.  * 授权状态,用其后四位(bit)来表示CRUD操作
  53.  * @hibernate.property
  54.  *  not-null="true"
  55.  */
  56. private int aclState;
  57. /**
  58.  * 表示是否继承,0表示不继承,-1表示表示继承
  59.  * @hibernate.property
  60.  *  not-null="true"
  61.  */
  62. private int aclTriState;
  63. public int getAclState() {
  64. return aclState;
  65. }
  66. public void setAclState(int aclState) {
  67. this.aclState = aclState;
  68. }
  69. public int getAclTriState() {
  70. return aclTriState;
  71. }
  72. public void setAclTriState(int aclTriState) {
  73. this.aclTriState = aclTriState;
  74. }
  75. public int getId() {
  76. return id;
  77. }
  78. public void setId(int id) {
  79. this.id = id;
  80. }
  81. public int getPrincipalSn() {
  82. return principalSn;
  83. }
  84. public void setPrincipalSn(int principalSn) {
  85. this.principalSn = principalSn;
  86. }
  87. public String getPrincipalType() {
  88. return principalType;
  89. }
  90. public void setPrincipalType(String principalType) {
  91. this.principalType = principalType;
  92. }
  93. public int getResourceSn() {
  94. return resourceSn;
  95. }
  96. public void setResourceSn(int resourceSn) {
  97. this.resourceSn = resourceSn;
  98. }
  99. /**
  100.  * acl实例跟主体和资源关联
  101.  * 针对此实例进行授权:某种操作是否允许
  102.  * @param permission 只可以取值0,1,2,3
  103.  * @param yes true表示允许,false表示不允许
  104.  */
  105. public void setPermission(int permission,boolean yes){
  106. int tmp = 1;
  107. tmp = tmp << permission;
  108. if(yes){
  109. aclState |= tmp;
  110. }else{
  111. aclState &= ~tmp;
  112. }
  113. }
  114. /**
  115.  * 获得ACL授权
  116.  * @param permission C/R/U/D权限
  117.  * @return 授权标识:允许/不允许/不确定
  118.  */
  119. public int getPermission(int permission){
  120. //如果继承,则返回未定的授权信息
  121. if(aclTriState == 0xFFFFFFFF){
  122. return ACL_NEUTRAL;
  123. }
  124. int tmp = 1;
  125. tmp = tmp << permission;
  126. tmp &= aclState;
  127. if(tmp != 0){
  128. return ACL_YES;
  129. }
  130. return ACL_NO;
  131. }
  132. /**
  133.  * 设置本授权是否是继承的
  134.  * @param yes true表示继承,false表示不继承
  135.  */
  136. public void setExtends(boolean yes){
  137. if(yes){
  138. aclTriState = 0xFFFFFFFF;
  139. }else{
  140. aclTriState = 0;
  141. }
  142. }
  143. }