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
modify  
MaxKey 已提交
24 25 26 27
import org.maxkey.authn.annotation.CurrentUser;
import org.maxkey.entity.Message;
import org.maxkey.entity.RolePrivileges;
import org.maxkey.entity.UserInfo;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
28
import org.maxkey.persistence.service.RolesService;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
29 30 31 32 33
import org.maxkey.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
M
modify  
MaxKey 已提交
34 35
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
36 37 38 39 40 41 42
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;


@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
	
	@Autowired
    @Qualifier("rolesService")
    RolesService rolesService;
	
	@ResponseBody
M
modify  
MaxKey 已提交
52 53 54 55 56
	@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
	public  ResponseEntity<?> update(
			@ModelAttribute RolePrivileges rolePrivileges,
			@CurrentUser UserInfo currentUser) {
		_logger.debug("-update  : " + rolePrivileges);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
57
		//have
M
modify  
MaxKey 已提交
58 59 60 61 62 63
		RolePrivileges queryRolePrivileges = 
				new RolePrivileges(
						rolePrivileges.getAppId(),
						rolePrivileges.getRoleId(),
						currentUser.getInstId());
		List<RolePrivileges> roleRolePrivilegesList = rolesService.queryRolePrivileges(queryRolePrivileges);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
64
		
M
modify  
MaxKey 已提交
65 66 67
		HashMap<String,String >privilegeMap =new HashMap<String,String >();
		for(RolePrivileges rolePrivilege : roleRolePrivilegesList) {
			privilegeMap.put(rolePrivilege.getUniqueId(),rolePrivilege.getId());
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
68 69
		}
		//Maybe insert
M
modify  
MaxKey 已提交
70 71 72
		ArrayList<RolePrivileges> newRolePrivilegesList =new ArrayList<RolePrivileges>();
		List<String>resourceIds = StringUtils.string2List(rolePrivileges.getResourceId(), ",");
		HashMap<String,String >newPrivilegesMap =new HashMap<String,String >();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
73
		for(String resourceId : resourceIds) {
M
modify  
MaxKey 已提交
74 75 76
		    RolePrivileges newRolePrivilege=new RolePrivileges(
		    		rolePrivileges.getAppId(),
		    		rolePrivileges.getRoleId(),
M
MaxKey 已提交
77
                    resourceId,
M
modify  
MaxKey 已提交
78 79 80
                    currentUser.getInstId());
		    newRolePrivilege.setId(newRolePrivilege.generateId());
		    newPrivilegesMap.put(newRolePrivilege.getUniqueId(), rolePrivileges.getAppId());
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
81
		    
M
modify  
MaxKey 已提交
82 83 84
		    if(!rolePrivileges.getAppId().equalsIgnoreCase(resourceId) &&
		            !privilegeMap.containsKey(newRolePrivilege.getUniqueId())) {
		    	newRolePrivilegesList.add(newRolePrivilege);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
85 86 87 88
		    }
		}
		
		//delete 
M
modify  
MaxKey 已提交
89 90 91 92 93
		ArrayList<RolePrivileges> deleteRolePrivilegesList =new ArrayList<RolePrivileges>();
		for(RolePrivileges rolePrivilege : roleRolePrivilegesList) {
           if(!newPrivilegesMap.containsKey(rolePrivilege.getUniqueId())) {
        	   rolePrivilege.setInstId(currentUser.getInstId());
        	   deleteRolePrivilegesList.add(rolePrivilege);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
94 95
           }
        }
M
modify  
MaxKey 已提交
96 97 98
		if (!deleteRolePrivilegesList.isEmpty()) {
			_logger.debug("-remove  : " + deleteRolePrivilegesList);
		    rolesService.deleteRolePrivileges(deleteRolePrivilegesList);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
99 100
		}
		
M
modify  
MaxKey 已提交
101 102 103
		if (!newRolePrivilegesList.isEmpty() && rolesService.insertRolePrivileges(newRolePrivilegesList)) {
			_logger.debug("-insert  : " + newRolePrivilegesList);
			return new Message<RolePrivileges>(Message.SUCCESS).buildResponse();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
104 105
			
		} else {
M
modify  
MaxKey 已提交
106
			return new Message<RolePrivileges>(Message.SUCCESS).buildResponse();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
107 108 109 110 111
		}
		
	}
	
	@ResponseBody
M
modify  
MaxKey 已提交
112 113 114 115 116
    @RequestMapping(value={"/get"}, produces = {MediaType.APPLICATION_JSON_VALUE})
    public  ResponseEntity<?> get(
    		@ModelAttribute RolePrivileges rolePrivileges,
    		@CurrentUser UserInfo currentUser) {
        _logger.debug("-get  :" + rolePrivileges);
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
117
        //have
M
modify  
MaxKey 已提交
118 119 120 121 122 123 124 125 126
        RolePrivileges queryRolePrivilege = 
        		new RolePrivileges(
        				rolePrivileges.getAppId(),
        				rolePrivileges.getRoleId(),
        				currentUser.getInstId());
        List<RolePrivileges> rolePrivilegeList = rolesService.queryRolePrivileges(queryRolePrivilege);
        
        return new Message<List<RolePrivileges>>(
        		rolePrivilegeList).buildResponse();
MaxKey单点登录官方's avatar
MaxKey单点登录官方 已提交
127 128 129 130
	}

	
}