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

	
}