fix: /app/bizuser/group-members

This commit is contained in:
RB 2025-08-15 11:35:47 +08:00
parent 5fe8365e64
commit 6e028b7009
5 changed files with 77 additions and 69 deletions

View file

@ -7,16 +7,29 @@ See LICENSE and COMMERCIAL in the project root for license information.
package com.rebuild.web.admin.bizz;
import cn.devezhao.bizz.security.member.MemberGroup;
import cn.devezhao.bizz.security.member.Role;
import cn.devezhao.persist4j.engine.ID;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.rebuild.core.Application;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.privileges.UserService;
import com.rebuild.core.privileges.bizz.CombinedRole;
import com.rebuild.core.privileges.bizz.User;
import com.rebuild.core.support.integration.SMSender;
import com.rebuild.utils.JSONUtils;
import com.rebuild.web.EntityController;
import org.springframework.stereotype.Controller;
import com.rebuild.web.IdParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
/**
* Bizz entity URL-Rewrite
@ -24,7 +37,8 @@ import javax.servlet.http.HttpServletRequest;
* @author devezhao
* @since 11/01/2018
*/
@Controller
@Slf4j
@RestController
@RequestMapping("/app/")
public class BizzPageView extends EntityController {
@ -80,4 +94,62 @@ public class BizzPageView extends EntityController {
public String teamList() {
return "redirect:/admin/bizuser/teams";
}
// -- GROUP
@GetMapping("/bizuser/group-members")
public JSON getMembers(@IdParam ID groupId) {
JSONArray res = new JSONArray();
if (groupId.getEntityCode() == EntityHelper.Role) {
for (User user : Application.getUserStore().getAllUsers()) {
if (user.getId().equals(UserService.SYSTEM_USER)) continue;
Role role = user.getOwningRole();
if (role == null) continue;
if (role.getIdentity().equals(groupId)) {
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive(),
});
} else if (role instanceof CombinedRole) {
if (((CombinedRole) role).getRoleAppends().contains(groupId)) {
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive(),
true
});
}
}
}
return res;
}
MemberGroup group;
if (groupId.getEntityCode() == EntityHelper.Department) {
group = Application.getUserStore().getDepartment(groupId);
} else if (groupId.getEntityCode() == EntityHelper.Team) {
group = Application.getUserStore().getTeam(groupId);
} else {
log.warn("No group defined : {}", groupId);
return JSONUtils.EMPTY_ARRAY;
}
for (Principal p : group.getMembers()) {
User user = (User) p;
if (user.getId().equals(UserService.SYSTEM_USER)) continue;
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive()
});
}
return res;
}
}

View file

@ -7,8 +7,6 @@ See LICENSE and COMMERCIAL in the project root for license information.
package com.rebuild.web.admin.bizz;
import cn.devezhao.bizz.security.member.MemberGroup;
import cn.devezhao.bizz.security.member.Role;
import cn.devezhao.commons.web.ServletUtils;
import cn.devezhao.persist4j.engine.ID;
import com.alibaba.fastjson.JSON;
@ -16,13 +14,8 @@ import com.alibaba.fastjson.JSONArray;
import com.rebuild.api.RespBody;
import com.rebuild.core.Application;
import com.rebuild.core.configuration.general.DataListManager;
import com.rebuild.core.metadata.EntityHelper;
import com.rebuild.core.privileges.TeamService;
import com.rebuild.core.privileges.UserHelper;
import com.rebuild.core.privileges.UserService;
import com.rebuild.core.privileges.bizz.CombinedRole;
import com.rebuild.core.privileges.bizz.User;
import com.rebuild.utils.JSONUtils;
import com.rebuild.web.EntityController;
import com.rebuild.web.IdParam;
import lombok.extern.slf4j.Slf4j;
@ -33,7 +26,6 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
import java.util.Collections;
import java.util.Set;
@ -72,60 +64,4 @@ public class TeamController extends EntityController {
Application.getBean(TeamService.class).deleteMembers(teamId, Collections.singletonList(userId));
return RespBody.ok();
}
@GetMapping("group-members")
public JSON getMembers(@IdParam ID groupId) {
JSONArray res = new JSONArray();
if (groupId.getEntityCode() == EntityHelper.Role) {
for (User user : Application.getUserStore().getAllUsers()) {
if (user.getId().equals(UserService.SYSTEM_USER)) continue;
Role role = user.getOwningRole();
if (role == null) continue;
if (role.getIdentity().equals(groupId)) {
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive(),
});
} else if (role instanceof CombinedRole) {
if (((CombinedRole) role).getRoleAppends().contains(groupId)) {
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive(),
true
});
}
}
}
return res;
}
MemberGroup group;
if (groupId.getEntityCode() == EntityHelper.Department) {
group = Application.getUserStore().getDepartment(groupId);
} else if (groupId.getEntityCode() == EntityHelper.Team) {
group = Application.getUserStore().getTeam(groupId);
} else {
log.warn("No group defined : {}", groupId);
return JSONUtils.EMPTY_ARRAY;
}
for (Principal p : group.getMembers()) {
User user = (User) p;
if (user.getId().equals(UserService.SYSTEM_USER)) continue;
res.add(new Object[] {
user.getId(),
user.getFullName(),
user.getOwningDept() != null ? user.getOwningDept().getName() : null,
user.isActive()
});
}
return res;
}
}

View file

@ -87,7 +87,7 @@ class MemberList extends React.Component {
componentDidMount = () => this.loadMembers()
loadMembers() {
$.get(`/admin/bizuser/group-members?id=${this.props.id}`, (res) => {
$.get(`/app/bizuser/group-members?id=${this.props.id}`, (res) => {
const data = res.data || []
this.setState({ members: data })

View file

@ -452,7 +452,7 @@ class MemberList extends React.Component {
componentDidMount = () => this.loadMembers()
loadMembers() {
$.get(`/admin/bizuser/group-members?id=${this.props.id}`, (res) => {
$.get(`/app/bizuser/group-members?id=${this.props.id}`, (res) => {
const data = res.data || []
this.setState({ members: data })

View file

@ -134,7 +134,7 @@ class MemberList extends React.Component {
componentDidMount = () => this.loadMembers()
loadMembers() {
$.get(`/admin/bizuser/group-members?id=${this.props.id}`, (res) => {
$.get(`/app/bizuser/group-members?id=${this.props.id}`, (res) => {
const data = res.data || []
this.setState({ members: data })