mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-07 01:18:27 +08:00
dynamic Groups and Roles
This commit is contained in:
parent
6523b2b12e
commit
b1b021e63f
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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>
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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" })
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user