RolePrivilegesController.java 4.9 KB
Newer Older
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/*
 * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
 * 
 * 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.
 */
 

M
authn  
MaxKey 已提交
18
package org.maxkey.web.permissions.contorller;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
19 20 21 22 23

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

M
v 3.3.0  
MaxKey 已提交
24
import org.maxkey.constants.ConstsOperateMessage;
M
MaxKey 已提交
25
import org.maxkey.entity.RolePermissions;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
26
import org.maxkey.persistence.service.RolesService;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
import org.maxkey.util.StringUtils;
import org.maxkey.web.WebContext;
import org.maxkey.web.message.Message;
import org.maxkey.web.message.MessageType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;


@Controller
M
change  
MaxKey 已提交
43 44 45
@RequestMapping(value={"/permissions/privileges"})
public class RolePrivilegesController {
	final static Logger _logger = LoggerFactory.getLogger(RolePrivilegesController.class);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
	
	@Autowired
    @Qualifier("rolesService")
    RolesService rolesService;

	
	
	@RequestMapping(value={"/list"})
	public ModelAndView resourcesList(){
		return new ModelAndView("permissions/permissionsList");
	}

	
	@ResponseBody
	@RequestMapping(value={"/savepermissions"})
	public Message insert(@ModelAttribute("rolePermissions") RolePermissions rolePermissions) {
		_logger.debug("-save  :" + rolePermissions);
		//have
M
MaxKey 已提交
64
		String instId = WebContext.getUserInfo().getInstId();
M
v 3.2.0  
MaxKey 已提交
65 66 67 68
		RolePermissions queryRolePermissions = 
				new RolePermissions(
						rolePermissions.getAppId(),
						rolePermissions.getRoleId(),
M
MaxKey 已提交
69
						instId);
M
MaxKey 已提交
70
		List<RolePermissions> rolePermissionsedList = rolesService.queryRolePermissions(queryRolePermissions);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84
		
		HashMap<String,String >permedMap =new HashMap<String,String >();
		for(RolePermissions rolePerms : rolePermissionsedList) {
		    permedMap.put(rolePerms.getUniqueId(),rolePerms.getId());
		}
		//Maybe insert
		ArrayList<RolePermissions> rolePermissionsList =new ArrayList<RolePermissions>();
		List<String>resourceIds = StringUtils.string2List(rolePermissions.getResourceId(), ",");
		HashMap<String,String >newPermsMap =new HashMap<String,String >();
		for(String resourceId : resourceIds) {
		    
		    RolePermissions newRolePermissions=new RolePermissions(
                    rolePermissions.getAppId(),
                    rolePermissions.getRoleId(),
M
MaxKey 已提交
85 86 87
                    resourceId,
                    instId);
		    newRolePermissions.setId(newRolePermissions.generateId());
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
88 89 90 91 92 93 94 95 96 97 98 99
		    newPermsMap.put(newRolePermissions.getUniqueId(), rolePermissions.getAppId());
		    
		    if(!rolePermissions.getAppId().equalsIgnoreCase(resourceId) &&
		            !permedMap.containsKey(newRolePermissions.getUniqueId())) {
    		    rolePermissionsList.add(newRolePermissions);
		    }
		}
		
		//delete 
		ArrayList<RolePermissions> deleteRolePermissionsList =new ArrayList<RolePermissions>();
		for(RolePermissions rolePerms : rolePermissionsedList) {
           if(!newPermsMap.containsKey(rolePerms.getUniqueId())) {
M
MaxKey 已提交
100
        	   rolePerms.setInstId(instId);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
101 102 103 104 105 106 107 108
               deleteRolePermissionsList.add(rolePerms);
           }
        }
		if (!deleteRolePermissionsList.isEmpty()) {
		    rolesService.logisticDeleteRolePermissions(deleteRolePermissionsList);
		}
		
		if (!rolePermissionsList.isEmpty() && rolesService.insertRolePermissions(rolePermissionsList)) {
M
v 3.3.0  
MaxKey 已提交
109
			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.success);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
110 111
			
		} else {
M
v 3.3.0  
MaxKey 已提交
112
			return  new Message(WebContext.getI18nValue(ConstsOperateMessage.INSERT_SUCCESS),MessageType.error);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
113 114 115 116 117 118 119 120 121
		}
		
	}
	
	@ResponseBody
    @RequestMapping(value={"/querypermissions"})
    public List<RolePermissions> querypermissions(@ModelAttribute("rolePermissions") RolePermissions rolePermissions) {
        _logger.debug("-querypermissions  :" + rolePermissions);
        //have
M
v 3.2.0  
MaxKey 已提交
122 123 124 125 126
        RolePermissions queryRolePermissions = 
        		new RolePermissions(
        				rolePermissions.getAppId(),
        				rolePermissions.getRoleId(),
        				WebContext.getUserInfo().getInstId());
M
MaxKey 已提交
127
        List<RolePermissions> rolePermissionsedList = rolesService.queryRolePermissions(queryRolePermissions);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
128 129 130 131 132
        return rolePermissionsedList;
	}

	
}