8f6d9df54fb2c1f3a948e0fc0e2d091009017fbc
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import lombok.extern.slf4j.Slf4j;
9
10 import org.apache.commons.lang3.StringUtils;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.stereotype.Service;
13
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;
22
23 @Slf4j
24 @Service
25 public class AuthnService {
26   
27   @Autowired
28   private AuthnRemoteFeignClient authnRemote;
29   
30   public Account account(String username) {
31     
32     JSONObject jsonObject = authnRemote.account(username);
33     if (jsonObject == null) {
34       return null;
35     }
36     
37     if (jsonObject.getIntValue("code") == 0) {
38       JSONObject data = jsonObject.getJSONObject("data");
39       
40       return data.toJavaObject(Account.class);
41     }
42     
43     return null;
44   }
45
46   public List<Role> roles(String username) {
47     
48     JSONObject jsonObject = authnRemote.roles(username);
49     if (jsonObject == null) {
50       return null;
51     }
52     
53     if (jsonObject.getIntValue("code") == 0) {
54       JSONObject data = jsonObject.getJSONObject("data");
55       
56       return data.getJSONArray("roles").toJavaList(Role.class);
57     }
58     
59     return null;
60   }
61
62   public List<Permission> menus(String username, String applicationId) {
63     
64     JSONObject jsonObject = authnRemote.menus(username, applicationId);
65     if (jsonObject == null) {
66       return null;
67     }
68     
69     if (jsonObject.getIntValue("code") == 0) {
70       JSONObject data = jsonObject.getJSONObject("data");
71       
72       return data.getJSONArray("permissions").toJavaList(Permission.class);
73     }
74     
75     return null;
76   }
77
78   
79   public List<Application> applications() {
80     
81     try {
82       JSONObject jsonObject = authnRemote.applications();
83       if (jsonObject == null) {
84         return null;
85       }
86       log.debug("{}", jsonObject.toJSONString());
87       
88       if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
89         JSONObject data = jsonObject.getJSONObject("data");
90         
91         return data.getJSONArray("applications").toJavaList(Application.class);
92       }
93     } catch (Exception e) {
94       e.printStackTrace();
95     }
96     
97     return null;
98   }
99   
100   public List<Role> roles() {
101     
102     try {
103       JSONObject jsonObject = authnRemote.roles();
104       if (jsonObject == null) {
105         return null;
106       }
107       log.debug("{}", jsonObject.toJSONString());
108       
109       if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
110         JSONObject data = jsonObject.getJSONObject("data");
111         
112         return data.getJSONArray("roles").toJavaList(Role.class);
113       }
114     } catch (Exception e) {
115       e.printStackTrace();
116     }
117     
118     return null;
119   }
120
121   
122   
123   
124
125   public static volatile Map<String, List<PermissionRoleSet>> mapPermissionRoleSets = 
126       new HashMap<String, List<PermissionRoleSet>>();
127   
128   public void putPermissionRoleSets(String applicationId, List<PermissionRoleSet> permissionRoleSets) {
129     AuthnService.mapPermissionRoleSets.put(applicationId, permissionRoleSets);
130   }
131   
132   public List<PermissionRoleSet> getPermissionRoleSets(String applicationId) {
133     if (StringUtils.isNotEmpty(applicationId)) {
134       return AuthnService.mapPermissionRoleSets.get(applicationId);
135     }
136     
137     List<PermissionRoleSet> allPermissionRoleSets = new ArrayList<>();
138     for (List<PermissionRoleSet> permissionRoleSets : AuthnService.mapPermissionRoleSets.values()) {
139       allPermissionRoleSets.addAll(permissionRoleSets);
140     }
141     
142     return allPermissionRoleSets;
143   }
144
145   public void loadPermissionRoleSets() {
146     
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);
154         }
155       }
156     }
157   }
158   
159   
160   public List<PermissionRoleSet> permissionRoleSets(String applicationId) {
161     
162     try {
163       JSONObject jsonObject = authnRemote.permissionRoleSets(applicationId);
164       if (jsonObject == null) {
165         return null;
166       }
167       log.debug("{}", jsonObject.toJSONString());
168       
169       if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
170         JSONObject data = jsonObject.getJSONObject("data");
171         
172         return data.getJSONArray("permissionRoleSets").toJavaList(PermissionRoleSet.class);
173       }
174     } catch (Exception e) {
175       e.printStackTrace();
176     }
177     
178     return null;
179   }
180
181   public List<ResourceRoleSet> resourceRoleSets() {
182     
183     try {
184       JSONObject jsonObject = authnRemote.resourceRoleSets(null);
185       if (jsonObject == null) {
186         return null;
187       }
188       log.debug("{}", jsonObject.toJSONString());
189       
190       if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
191         JSONObject data = jsonObject.getJSONObject("data");
192         
193         return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
194       }
195     } catch (Exception e) {
196       e.printStackTrace();
197     }
198     
199     return null;
200   }
201
202 }