![JAR search and dependency download from the Maven repository](/logo.png)
com.generallycloud.baseio.container.authority.RoleManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of baseio-all Show documentation
Show all versions of baseio-all Show documentation
The all in one project of baseio
/*
* Copyright 2015-2017 GenerallyCloud.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.generallycloud.baseio.container.authority;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.generallycloud.baseio.container.ApplicationContext;
import com.generallycloud.baseio.container.AbstractInitializeable;
import com.generallycloud.baseio.container.configuration.ApplicationConfiguration;
import com.generallycloud.baseio.container.configuration.Configuration;
import com.generallycloud.baseio.container.configuration.PermissionConfiguration;
public class RoleManager extends AbstractInitializeable {
private Map authorityManagers = new HashMap();
private AuthorityManager guestAuthorityManager ;
@Override
public void initialize(ApplicationContext context, Configuration config) throws Exception {
ApplicationConfiguration configuration = context.getConfiguration();
PermissionConfiguration permissionConfiguration = configuration.getPermissionConfiguration();
List permissionConfigurations = permissionConfiguration.getPermissions();
List roleConfigurations = permissionConfiguration.getRoles();
if (permissionConfigurations == null || permissionConfigurations.size() == 0 || roleConfigurations == null
|| roleConfigurations.size() == 0) {
throw new Error("没有加载到角色配置");
}
Map permissions = new HashMap();
for (Configuration c : permissionConfigurations) {
Permission p = new Permission();
p.setDescription(c.getParameter("description"));
p.setFrequency(c.getIntegerParameter("frequency"));
p.setPermissionAPI(c.getParameter("permissionAPI"));
p.setPermissionID(c.getIntegerParameter("permissionID"));
permissions.put(p.getPermissionID(), p);
}
Map roles = new HashMap();
List roleList = new ArrayList();
for (Configuration c : roleConfigurations) {
Role r = new Role();
r.setDescription(c.getParameter("description"));
r.setRoleID(c.getIntegerParameter("roleID"));
r.setRoleName(c.getParameter("roleName"));
JSONArray array = c.getJSONArray("children");
if (array != null && !array.isEmpty()) {
List _children = new ArrayList();
for (int i = 0; i < array.size(); i++) {
_children.add(array.getInteger(i));
}
r.setChildren(_children);
}
array = c.getJSONArray("permissions");
if (array != null && !array.isEmpty()) {
List _permissions = new ArrayList();
for (int i = 0; i < array.size(); i++) {
_permissions.add(array.getInteger(i));
}
r.setPermissions(_permissions);
}
roles.put(r.getRoleID(), r);
roleList.add(r);
}
reflectPermission(roleList, roles, permissions);
}
private void reflectPermission(List roleList, Map roles, Map permissions) {
for (Role r : roleList) {
AuthorityManager authorityManager = new AuthorityManager();
authorityManager.setRoleID(r.getRoleID());
reflectPermission(r, roles, permissions, authorityManager);
authorityManagers.put(authorityManager.getRoleID(), authorityManager);
}
guestAuthorityManager = new AuthorityManager();
guestAuthorityManager.setRoleID(Authority.GUEST.getRoleID());
authorityManagers.put(guestAuthorityManager.getRoleID(), guestAuthorityManager);
}
private void reflectPermission(Role role, Map roles, Map permissions,
AuthorityManager authorityManager) {
List children = role.getChildren();
if (children != null) {
for (Integer rID : children) {
Role r = roles.get(rID);
if (r != null) {
reflectPermission(r, roles, permissions, authorityManager);
}
}
}
List _permissions = role.getPermissions();
if (_permissions != null) {
for (Integer pID : _permissions) {
Permission p = permissions.get(pID);
if (p != null) {
authorityManager.addPermission(p);
}
}
}
}
public AuthorityManager getAuthorityManager(Authority authority) {
Integer roleID = authority.getRoleID();
AuthorityManager authorityManager = authorityManagers.get(roleID);
if (authorityManager == null) {
authorityManager = guestAuthorityManager;
}
authorityManager = authorityManager.clone();
authorityManager.setAuthority(authority);
return authorityManager;
}
public static void main(String[] args) {
System.out.println("[");
for (int j = 0; j < 100; j++) {
System.out.println("\t{");
System.out.println("\t\t\"permissionID\": " + j + ",");
System.out.println("\t\t\"permissionAPI\": \"\"");
System.out.println("\t},");
}
System.out.println("]");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy