Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- login(formGroup: FormGroup): Observable<boolean> {
- const headers = new Headers();
- headers.append('Authorization', 'Basic xxxxxxxxxxxx')
- headers.append('Content-Type', 'application/x-www-form-urlencoded');
- let user = formGroup.get('username').value;
- let password = formGroup.get('password').value;
- const body = 'username=' + user + '&password=' + password + '&grant_type=password';
- return this.http.post(URIConstantes.LOGIN, body, {headers: headers})
- .map((response: Response) => {
- let token = response.json()['access_token'];
- if (token != null) {
- this.token = token;
- this.saveTokenToLocalStorage(token);
- return true;
- } else {
- // return false to indicate failed login
- return false;
- }
- });
- }
- obterNovoAccessToken(): Observable<any> {
- const headers = new Headers();
- headers.append('Content-Type', 'application/x-www-form-urlencoded')
- headers.append('Authorization', 'Basic YW5ndWxhcjpAbmd1bEByMA==')
- const body = 'grant_type=refresh_token';
- return this.http.post(URIConstantes.LOGIN, body, { headers, withCredentials: true })
- .map(response => {
- console.log(response);
- this.armazenarToken(response.json()['access_token']);
- console.log('Novo access token criado!');
- }).catch(
- response => {
- console.error('Erro ao renovar token.', response.json());
- return Promise.resolve(null);
- });
- }
- @ControllerAdvice
- public class RefreshTokenPostProcessor implements ResponseBodyAdvice<OAuth2AccessToken> {
- @Override
- public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
- return returnType.getMethod().getName().equals("postAccessToken");
- }
- @Override
- public OAuth2AccessToken beforeBodyWrite(OAuth2AccessToken body, MethodParameter returnType,
- MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
- ServerHttpRequest request, ServerHttpResponse response) {
- HttpServletRequest req = ((ServletServerHttpRequest) request).getServletRequest();
- HttpServletResponse resp = ((ServletServerHttpResponse) response).getServletResponse();
- DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) body;
- String refreshToken = body.getRefreshToken().getValue();
- adicionarRefreshTokenNoCookie(refreshToken, req, resp);
- removerRefreshTokenDoBody(token);
- return body;
- }
- private void removerRefreshTokenDoBody(DefaultOAuth2AccessToken token) {
- token.setRefreshToken(null);
- }
- //add token on cookie response
- private void adicionarRefreshTokenNoCookie(String refreshToken, HttpServletRequest req, HttpServletResponse resp) {
- Cookie refreshTokenCookie = new Cookie("refreshToken", refreshToken);
- refreshTokenCookie.setHttpOnly(true);
- refreshTokenCookie.setSecure(false);
- refreshTokenCookie.setPath(req.getContextPath() + "/oauth/token");
- refreshTokenCookie.setMaxAge(2592000);
- resp.addCookie(refreshTokenCookie);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement