|  | @ -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 无效!");
 | 
	
		
			
				|  |  | //    }
 | 
	
		
			
				|  |  | }
 |