1 package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
3 import java.util.ArrayList;
4 import java.util.HashMap;
8 import lombok.extern.slf4j.Slf4j;
10 import org.apache.commons.lang3.StringUtils;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Service;
14 import com.alibaba.fastjson.JSONObject;
15 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Account;
16 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Application;
17 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
18 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.PermissionRoleSet;
19 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.ResourceRoleSet;
20 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
21 import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn.AuthnRemoteFeignClient;
25 public class AuthnService {
28 private AuthnRemoteFeignClient authnRemote;
30 public Account account(String username) {
32 JSONObject jsonObject = authnRemote.account(username);
33 if (jsonObject == null) {
37 if (jsonObject.getIntValue("code") == 0) {
38 JSONObject data = jsonObject.getJSONObject("data");
40 return data.toJavaObject(Account.class);
46 public List<Role> roles(String username) {
48 JSONObject jsonObject = authnRemote.roles(username);
49 if (jsonObject == null) {
53 if (jsonObject.getIntValue("code") == 0) {
54 JSONObject data = jsonObject.getJSONObject("data");
56 return data.getJSONArray("roles").toJavaList(Role.class);
62 public List<Permission> menus(String username, String applicationId) {
64 JSONObject jsonObject = authnRemote.menus(username, applicationId);
65 if (jsonObject == null) {
69 if (jsonObject.getIntValue("code") == 0) {
70 JSONObject data = jsonObject.getJSONObject("data");
72 return data.getJSONArray("permissions").toJavaList(Permission.class);
79 public List<Application> applications() {
82 JSONObject jsonObject = authnRemote.applications();
83 if (jsonObject == null) {
86 log.debug("{}", jsonObject.toJSONString());
88 if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
89 JSONObject data = jsonObject.getJSONObject("data");
91 return data.getJSONArray("applications").toJavaList(Application.class);
93 } catch (Exception e) {
100 public List<Role> roles() {
103 JSONObject jsonObject = authnRemote.roles();
104 if (jsonObject == null) {
107 log.debug("{}", jsonObject.toJSONString());
109 if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
110 JSONObject data = jsonObject.getJSONObject("data");
112 return data.getJSONArray("roles").toJavaList(Role.class);
114 } catch (Exception e) {
125 public static volatile Map<String, List<PermissionRoleSet>> mapPermissionRoleSets =
126 new HashMap<String, List<PermissionRoleSet>>();
128 public void putPermissionRoleSets(String applicationId, List<PermissionRoleSet> permissionRoleSets) {
129 AuthnService.mapPermissionRoleSets.put(applicationId, permissionRoleSets);
132 public List<PermissionRoleSet> getPermissionRoleSets(String applicationId) {
133 if (StringUtils.isNotEmpty(applicationId)) {
134 return AuthnService.mapPermissionRoleSets.get(applicationId);
137 List<PermissionRoleSet> allPermissionRoleSets = new ArrayList<>();
138 for (List<PermissionRoleSet> permissionRoleSets : AuthnService.mapPermissionRoleSets.values()) {
139 allPermissionRoleSets.addAll(permissionRoleSets);
142 return allPermissionRoleSets;
145 public void loadPermissionRoleSets() {
147 List<Application> applications = applications();
148 if (applications != null) {
149 for (Application application : applications) {
150 String applicationId = application.getId();
151 List<PermissionRoleSet> permissionRoleSets = this.permissionRoleSets(applicationId);
152 if (permissionRoleSets != null) {
153 this.putPermissionRoleSets(applicationId, permissionRoleSets);
160 public List<PermissionRoleSet> permissionRoleSets(String applicationId) {
163 JSONObject jsonObject = authnRemote.permissionRoleSets(applicationId);
164 if (jsonObject == null) {
167 log.debug("{}", jsonObject.toJSONString());
169 if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
170 JSONObject data = jsonObject.getJSONObject("data");
172 return data.getJSONArray("permissionRoleSets").toJavaList(PermissionRoleSet.class);
174 } catch (Exception e) {
181 public List<ResourceRoleSet> resourceRoleSets() {
184 JSONObject jsonObject = authnRemote.resourceRoleSets(null);
185 if (jsonObject == null) {
188 log.debug("{}", jsonObject.toJSONString());
190 if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
191 JSONObject data = jsonObject.getJSONObject("data");
193 return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
195 } catch (Exception e) {