Explorar el Código

dynamic Groups and Roles

MaxKey hace 3 años
padre
commit
b1b021e63f

+ 8 - 1
maxkey-core/src/main/java/org/maxkey/entity/GroupMember.java

@@ -48,6 +48,7 @@ public class GroupMember extends UserInfo implements Serializable{
 	@Column
 	private String groupId;
 	private String groupName;
+	private String dynamic;
 	@Column
 	private String memberId;
 	private String memberName;
@@ -163,11 +164,17 @@ public class GroupMember extends UserInfo implements Serializable{
 		return memberName;
 	}
 
-
 	public void setMemberName(String memberName) {
 		this.memberName = memberName;
 	}
 
+	public String getDynamic() {
+		return dynamic;
+	}
+
+	public void setDynamic(String dynamic) {
+		this.dynamic = dynamic;
+	}
 
 	public String getInstId() {
 		return instId;

+ 10 - 1
maxkey-core/src/main/java/org/maxkey/entity/RoleMember.java

@@ -42,6 +42,7 @@ public class RoleMember extends UserInfo implements Serializable {
     @Column
     private String roleId;
     private String roleName;
+    private String dynamic;
     @Column
     private String memberId;
     private String memberName;
@@ -80,7 +81,15 @@ public class RoleMember extends UserInfo implements Serializable {
         this.roleName = roleName;
     }
 
-    public String getMemberId() {
+    public String getDynamic() {
+		return dynamic;
+	}
+
+	public void setDynamic(String dynamic) {
+		this.dynamic = dynamic;
+	}
+
+	public String getMemberId() {
         return memberId;
     }
 

+ 0 - 1
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/GroupMemberMapper.java

@@ -34,7 +34,6 @@ import org.maxkey.entity.UserInfo;
 
 public  interface GroupMemberMapper extends IJpaBaseMapper<GroupMember> {
 	
-	public List<GroupMember> allMemberInGroup(GroupMember entity);
 	public List<GroupMember> memberInGroup(GroupMember entity);
 	public List<GroupMember> memberNotInGroup(GroupMember entity);
 	public List<GroupMember> groupMemberInGroup(GroupMember entity);

+ 0 - 1
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/RoleMemberMapper.java

@@ -33,7 +33,6 @@ import org.maxkey.entity.Roles;
 
 public  interface RoleMemberMapper extends IJpaBaseMapper<RoleMember> {
 	
-	public List<RoleMember> allMemberInRole(RoleMember entity);
 	public List<RoleMember> memberInRole(RoleMember entity);
 	public List<RoleMember> memberNotInRole(RoleMember entity);
 	public List<RoleMember> roleMemberInRole(RoleMember entity);

+ 8 - 45
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/GroupMemberMapper.xml

@@ -11,51 +11,12 @@
 		</if>
     </sql>
     
-
-    <!-- GROUP_MEMBER  User Member-->
-    <select id="allMemberInGroup" parameterType="GroupMember" resultType="GroupMember">
-		    select	distinct
-					u.id,
-					u.username,
-					u.usertype,
-					u.windowsaccount,
-					
-					u.displayname ,
-					u.nickname ,
-					u.namezhspell,
-					u.namezhshortspell,
-					u.givenname ,
-					u.middlename ,
-					u.familyname ,
-					
-					u.gender,
-		
-					u.authntype,
-					u.mobile,
-					u.email,
-					u.workemail,
-					u.workphonenumber,
-		
-					u.employeenumber,
-					u.division,
-					u.costcenter,
-					u.organization,
-					u.departmentid,
-					u.department,
-					u.jobtitle,
-					u.joblevel,
-					
-					u.createddate,
-					
-					u.status
-				from
-					mxk_userinfo u
-			where	instid  =   #{instId} 
-	</select>
-	
     <select id="memberInGroup" parameterType="GroupMember" resultType="GroupMember">
 			select	distinct
-				gm.id,
+				gm.id as id,
+				g.id as groupid,
+				g.name as groupname,
+				g.dynamic dynamic,
 				u.username,
 				u.usertype,
 				u.windowsaccount,
@@ -210,7 +171,7 @@
     		instid
     	)
     	select 
-    		concat('${id}',u.id) id,
+    		concat('${id}_',u.id) id,
     		'${id}' groupid,
     		u.id memberid,
     		'USER-DYNAMIC' type,
@@ -250,6 +211,8 @@
     
     <select id="queryMemberByGroupId" parameterType="string"  resultType="UserInfo">
             select  distinct
+                g.groupId,
+                g.groupName,
                 u.id,
                 u.username,
                 u.usertype,
@@ -296,7 +259,7 @@
     
     <delete id="deleteByGroupId" parameterType="string" >
     	delete from mxk_group_member gm
-    	where  gm.groupid=#{value}
+    	where  gm.groupid = #{value} and groupId != 'ROLE_ALL_USER'
     </delete>
 	
 </mapper>

+ 6 - 45
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/RoleMemberMapper.xml

@@ -10,52 +10,13 @@
 			and name = #{name}
 		</if>
     </sql>
-    
-
-    <!-- ROLE_MEMBER  User Member-->
-    <select id="allMemberInRole" parameterType="RoleMember" resultType="RoleMember">
-		    select	distinct
-					u.id,
-					u.username,
-					u.usertype,
-					u.windowsaccount,
-					
-					u.displayname ,
-					u.nickname ,
-					u.namezhspell,
-					u.namezhshortspell,
-					u.givenname ,
-					u.middlename ,
-					u.familyname ,
-					
-					u.gender,
-		
-					u.authntype,
-					u.mobile,
-					u.email,
-					u.workemail,
-					u.workphonenumber,
-		
-					u.employeenumber,
-					u.division,
-					u.costcenter,
-					u.organization,
-					u.departmentid,
-					u.department,
-					u.jobtitle,
-					u.joblevel,
-					
-					u.createddate,
-					
-					u.status
-				from
-					mxk_userinfo u
-			where	instid   =   #{instId} 
-	</select>
-	
+   
     <select id="memberInRole" parameterType="RoleMember" resultType="RoleMember">
 			select	distinct
-				rm.id,
+			    r.id as roleid,
+			    r.name as rolename,
+			    r.dynamic dynamic,
+				rm.id as id,
 				u.username,
 				u.usertype,
 				u.windowsaccount,
@@ -211,7 +172,7 @@
     		type
     	)
     	select 
-    		concat('${id}',u.id) id,
+    		concat('${id}_',u.id) id,
     		'${id}' ROLEID,
     		u.id memberid,
     		'USER-DYNAMIC' type

+ 11 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/group-members/group-members.component.html

@@ -76,6 +76,7 @@
         <thead>
           <tr>
             <th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
+            <th nzAlign="center">{{ 'mxk.groups.name' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
@@ -94,6 +95,7 @@
               [nzDisabled]="data.disabled"
               (nzCheckedChange)="onTableItemChecked(data.id, $event)"
             ></td>
+            <td nzAlign="center"> {{ data.groupName }}</td>
             <td nzAlign="center"> {{ data.username }}</td>
             <td nzAlign="center"> {{ data.displayName }}</td>
             <td nzAlign="center"> {{ data.employeeNumber }}</td>
@@ -102,9 +104,15 @@
             <td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
             <td nzAlign="left" nzBreakWord="false"
               ><div nz-col>
-                <button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
-                  'mxk.text.delete' | i18n
-                }}</button></div
+                <button
+                  *ngIf="data.dynamic == '0'"
+                  nz-button
+                  type="button"
+                  (click)="onDelete($event, data.id)"
+                  [nzType]="'primary'"
+                  nzDanger
+                  >{{ 'mxk.text.delete' | i18n }}</button
+                ></div
               ></td
             >
           </tr>

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/access/groups/group-editer/group-editer.component.html

@@ -27,7 +27,7 @@
         <ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="resumeTime">{{ 'mxk.groups.resumeTime' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid port!">
         <nz-time-picker
@@ -39,7 +39,7 @@
         ></nz-time-picker>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="suspendTime">{{ 'mxk.groups.suspendTime' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid suspendTime!">
         <nz-time-picker
@@ -51,13 +51,13 @@
         ></nz-time-picker>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="orgIdsList">{{ 'mxk.groups.orgIdsList' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
         <input [(ngModel)]="form.model.orgIdsList" [ngModelOptions]="{ standalone: true }" nz-input name="orgIdsList" id="orgIdsList" />
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="filters">{{ 'mxk.groups.filters' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid filters!">
         <textarea

+ 11 - 3
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/role-members/role-members.component.html

@@ -76,6 +76,7 @@
         <thead>
           <tr>
             <th [nzChecked]="query.checked" [nzIndeterminate]="query.indeterminate" (nzCheckedChange)="onTableAllChecked($event)"></th>
+            <th nzAlign="center">{{ 'mxk.roles.name' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.username' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.displayName' | i18n }}</th>
             <th nzAlign="center">{{ 'mxk.users.employeeNumber' | i18n }}</th>
@@ -94,6 +95,7 @@
               [nzDisabled]="data.disabled"
               (nzCheckedChange)="onTableItemChecked(data.id, $event)"
             ></td>
+            <td nzAlign="center"> {{ data.roleName }}</td>
             <td nzAlign="center"> {{ data.username }}</td>
             <td nzAlign="center"> {{ data.displayName }}</td>
             <td nzAlign="center"> {{ data.employeeNumber }}</td>
@@ -102,9 +104,15 @@
             <td nzAlign="center"> {{ data.gender == 1 ? ('mxk.users.gender.female' | i18n) : ('mxk.users.gender.male' | i18n) }}</td>
             <td nzAlign="left" nzBreakWord="false"
               ><div nz-col>
-                <button nz-button type="button" (click)="onDelete($event, data.id)" [nzType]="'primary'" nzDanger>{{
-                  'mxk.text.delete' | i18n
-                }}</button></div
+                <button
+                  *ngIf="data.dynamic == '0'"
+                  nz-button
+                  type="button"
+                  (click)="onDelete($event, data.id)"
+                  [nzType]="'primary'"
+                  nzDanger
+                  >{{ 'mxk.text.delete' | i18n }}</button
+                ></div
               ></td
             >
           </tr>

+ 4 - 4
maxkey-web-frontend/maxkey-web-mgt-app/src/app/routes/permissions/roles/role-editer/role-editer.component.html

@@ -27,7 +27,7 @@
         <ng-template #unCheckedTemplate><i nz-icon nzType="close"></i></ng-template>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="resumeTime">{{ 'mxk.roles.resumeTime' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid port!">
         <nz-time-picker
@@ -39,7 +39,7 @@
         ></nz-time-picker>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="suspendTime">{{ 'mxk.roles.suspendTime' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid suspendTime!">
         <nz-time-picker
@@ -51,13 +51,13 @@
         ></nz-time-picker>
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="orgIdsList">{{ 'mxk.roles.orgIdsList' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid upperCase!">
         <input [(ngModel)]="form.model.orgIdsList" [ngModelOptions]="{ standalone: true }" nz-input name="orgIdsList" id="orgIdsList" />
       </nz-form-control>
     </nz-form-item>
-    <nz-form-item>
+    <nz-form-item *ngIf="form.model.switch_dynamic">
       <nz-form-label [nzSm]="6" [nzXs]="24" nzFor="filters">{{ 'mxk.roles.filters' | i18n }}</nz-form-label>
       <nz-form-control [nzSm]="18" [nzXs]="24" nzErrorTip="The input is not valid filters!">
         <textarea

+ 3 - 7
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupMemberController.java

@@ -68,13 +68,9 @@ public class GroupMemberController {
 	public ResponseEntity<?> memberInGroup(@ModelAttribute GroupMember groupMember,@CurrentUser UserInfo currentUser) {
 		_logger.debug("groupMember : "+groupMember);
 		groupMember.setInstId(currentUser.getInstId());
-		if(groupMember.getGroupId()==null||groupMember.getGroupId().equals("")||groupMember.getGroupId().equals("ROLE_ALL_USER")){
-			return new Message<JpaPageResults<GroupMember>>(
-					groupMemberService.queryPageResults("allMemberInGroup",groupMember)).buildResponse();
-		}else{
-			return new Message<JpaPageResults<GroupMember>>(
-					groupMemberService.queryPageResults("memberInGroup",groupMember)).buildResponse();
-		}
+		return new Message<JpaPageResults<GroupMember>>(
+				groupMemberService.queryPageResults("memberInGroup",groupMember)).buildResponse();
+
 	}
 
 	

+ 1 - 1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/GroupsController.java

@@ -105,7 +105,7 @@ public class GroupsController {
 	@RequestMapping(value={"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
 	public ResponseEntity<?> delete(@RequestParam("ids") String ids,@CurrentUser UserInfo currentUser) {
 		_logger.debug("-delete ids : {}" , ids);
-		
+		ids = ids.replaceAll("ROLE_ALL_USER", "-1").replaceAll("ROLE_ADMINISTRATORS", "-1");
 		if (groupsService.deleteBatch(ids)) {
 			 return new Message<Groups>(Message.SUCCESS).buildResponse();
 		} else {

+ 2 - 7
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/permissions/contorller/RoleMemberController.java

@@ -67,13 +67,8 @@ public class RoleMemberController {
 	public  ResponseEntity<?> memberInRole(@ModelAttribute  RoleMember roleMember,@CurrentUser UserInfo currentUser) {
 		_logger.debug("roleMember : "+roleMember);
 		roleMember.setInstId(currentUser.getInstId());
-		if(roleMember.getRoleId()==null||roleMember.getRoleId().equals("")||roleMember.getRoleId().equals("ALL_USER_ROLE")){
-			return new Message<JpaPageResults<RoleMember>>(
-					roleMemberService.queryPageResults("allMemberInRole",roleMember)).buildResponse();
-		}else{
-			return new Message<JpaPageResults<RoleMember>>(
-					roleMemberService.queryPageResults("memberInRole",roleMember)).buildResponse();
-		}
+		return new Message<JpaPageResults<RoleMember>>(
+				roleMemberService.queryPageResults("memberInRole",roleMember)).buildResponse();
 	}
 
 	@RequestMapping(value = { "/memberNotInRole" })