| 
					
				 | 
			
			
				@ -0,0 +1,124 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.base.security.controller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.security.rbas.ClientServiceProvider; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.security.vo.BaseEnvelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.base.security.vo.BaseSecurityRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.authentication.AuthenticationManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.security.oauth2.provider.token.DefaultTokenServices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.PostMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RequestParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.web.bind.annotation.RestController; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletRequest; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.ParseException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by 刘文彬 on 2018/5/4. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RestController 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@RequestMapping("/tokens") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//@Api(value = "权限token模块", description = "权限token模块") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class TokenController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private DefaultTokenServices defaultTokenServices; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private AuthenticationManager authenticationManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ClientServiceProvider clientDetailsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    private EmployFeign employFeign; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @ApiOperation(value = "更新token过期时间", notes = "根据token更新token过期时间") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseEnvelop updateTokenExpiration( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            @ApiParam(name = "expiration", value = "token过期时间,格式:yyyy-mm-dd HH:mm:ss", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     @RequestParam(value = "expiration", required = true) String expiration, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue) throws ParseException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(token!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                token.setExpiration(formatter.parse(expiration)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } catch (ParseException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return BaseEnvelop.getSuccess("token 过期时间设置成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return BaseEnvelop.getError("token 无效!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @ApiOperation(value = "延长token的过期时间", notes = "根据token延长token的过期时间") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseEnvelop updateTokenExpiration( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            @ApiParam(name = "seconds", value = "延长token过期时间分钟数", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             @RequestParam(value = "seconds", required = true) int seconds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                                             @ApiParam(name = "authHeaderValue", value = "登录的token", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(token!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            token.setExpiration(new Date(System.currentTimeMillis() + (seconds * 1000L))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return BaseEnvelop.getSuccess("token 过期时间设置成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return BaseEnvelop.getError("token 无效!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @ApiOperation(value = "设置token过期", notes = "设置token过期") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public BaseEnvelop updateTokenExpiration2(HttpServletRequest request, HttpServletResponse response, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                                              @ApiParam(name = "authHeaderValue", value = "登录的token", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                              @RequestParam(value = "authHeaderValue", required = true) String authHeaderValue){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.readAccessToken(authHeaderValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(token!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            token.setExpiration(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return BaseEnvelop.getSuccess("token 过期时间设置成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return BaseEnvelop.getError("token 无效!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @PostMapping(BaseSecurityRequestMapping.BaseToken.api_update_token_expiration_second2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    @ApiOperation(value = "设置token过期", notes = "设置token过期") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    public BaseEnvelop updateTokenExpiration3(HttpServletRequest request, HttpServletResponse response, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                                              @ApiParam(name = "mobileSaas", value = "mobile和saas组合,逗号分隔", required = true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                                              @RequestParam(value = "mobileSaas", required = true) String mobileSaas){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String[] sp = mobileSaas.split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String phone = sp[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        String saasId = sp[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Envelop envelop = employFeign.getEmployeeByPhoneAndSaasId(phone,saasId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Map baseEmployDO =  (Map)envelop.getObj(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if(baseEmployDO.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            return BaseEnvelop.getError("该用户不存在!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//                mobileSaas, baseEmployDO.get("password")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        // Allow subclasses to set the "details" property 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        authRequest.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        Authentication authentication = authenticationManager.authenticate(authRequest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        ClientDetails clientDetails = clientDetailsService.loadClientByClientId(saasId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        TokenRequest tokenRequest = new TokenRequest(MapUtils.EMPTY_MAP, saasId, clientDetails.getScope(), "custom_password"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken)defaultTokenServices.getAccessToken(oAuth2Authentication); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if(token!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            token.setExpiration(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            return BaseEnvelop.getSuccess("token 过期时间设置成功!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return BaseEnvelop.getError("token 无效!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |