Guest User

Untitled

a guest
Sep 1st, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. login(formGroup: FormGroup): Observable<boolean> {
  2. const headers = new Headers();
  3. headers.append('Authorization', 'Basic xxxxxxxxxxxx')
  4. headers.append('Content-Type', 'application/x-www-form-urlencoded');
  5. let user = formGroup.get('username').value;
  6. let password = formGroup.get('password').value;
  7. const body = 'username=' + user + '&password=' + password + '&grant_type=password';
  8. return this.http.post(URIConstantes.LOGIN, body, {headers: headers})
  9. .map((response: Response) => {
  10. let token = response.json()['access_token'];
  11. if (token != null) {
  12. this.token = token;
  13. this.saveTokenToLocalStorage(token);
  14. return true;
  15. } else {
  16. // return false to indicate failed login
  17. return false;
  18. }
  19. });
  20. }
  21.  
  22. obterNovoAccessToken(): Observable<any> {
  23. const headers = new Headers();
  24. headers.append('Content-Type', 'application/x-www-form-urlencoded')
  25. headers.append('Authorization', 'Basic YW5ndWxhcjpAbmd1bEByMA==')
  26.  
  27. const body = 'grant_type=refresh_token';
  28. return this.http.post(URIConstantes.LOGIN, body, { headers, withCredentials: true })
  29. .map(response => {
  30. console.log(response);
  31. this.armazenarToken(response.json()['access_token']);
  32. console.log('Novo access token criado!');
  33. }).catch(
  34. response => {
  35. console.error('Erro ao renovar token.', response.json());
  36. return Promise.resolve(null);
  37. });
  38. }
  39.  
  40. @ControllerAdvice
  41. public class RefreshTokenPostProcessor implements ResponseBodyAdvice<OAuth2AccessToken> {
  42.  
  43. @Override
  44. public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
  45. return returnType.getMethod().getName().equals("postAccessToken");
  46. }
  47.  
  48. @Override
  49. public OAuth2AccessToken beforeBodyWrite(OAuth2AccessToken body, MethodParameter returnType,
  50. MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
  51. ServerHttpRequest request, ServerHttpResponse response) {
  52.  
  53. HttpServletRequest req = ((ServletServerHttpRequest) request).getServletRequest();
  54. HttpServletResponse resp = ((ServletServerHttpResponse) response).getServletResponse();
  55.  
  56. DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) body;
  57.  
  58. String refreshToken = body.getRefreshToken().getValue();
  59. adicionarRefreshTokenNoCookie(refreshToken, req, resp);
  60. removerRefreshTokenDoBody(token);
  61.  
  62. return body;
  63. }
  64.  
  65. private void removerRefreshTokenDoBody(DefaultOAuth2AccessToken token) {
  66. token.setRefreshToken(null);
  67. }
  68.  
  69. //add token on cookie response
  70. private void adicionarRefreshTokenNoCookie(String refreshToken, HttpServletRequest req, HttpServletResponse resp) {
  71. Cookie refreshTokenCookie = new Cookie("refreshToken", refreshToken);
  72. refreshTokenCookie.setHttpOnly(true);
  73. refreshTokenCookie.setSecure(false);
  74. refreshTokenCookie.setPath(req.getContextPath() + "/oauth/token");
  75. refreshTokenCookie.setMaxAge(2592000);
  76. resp.addCookie(refreshTokenCookie);
  77. }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment