Commit ce0791e9 authored by Alex Segers's avatar Alex Segers

[AFP-91] 🛂 Implement 'ManagerTokenVerifier' class to handle access token validation (@asegers)

parent 5a133fe4
package com.afp.ordermanagement.service;
import com.afp.ordermanagement.model.Manager;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Collections;
public class ManagerTokenVerifier {
private static final String CLIENT_ID = "925243198137-hhe2e3ejlethf321hh7tbm7ontc19cpj.apps.googleusercontent.com";
private static final JacksonFactory jsonFactory = new JacksonFactory();
private static final HttpTransport transport = new NetHttpTransport();
private static final GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
.setAudience(Collections.singletonList(CLIENT_ID))
.build();
public static boolean isTokenValid(String idTokenString) {
try {
verifier.verify(idTokenString);
return true;
} catch (Exception ignore) { }
return false;
}
private static GoogleIdToken.Payload createPayload(String idTokenString) {
GoogleIdToken idToken = null;
try {
idToken = verifier.verify(idTokenString);
} catch (GeneralSecurityException | IOException ignore) { }
assert idToken != null;
return idToken.getPayload();
}
public static Manager createManager(String idTokenString) {
GoogleIdToken.Payload payload = ManagerTokenVerifier.createPayload(idTokenString);
Manager newManager = new Manager();
newManager.setFirstName((String) payload.get("family_name"));
newManager.setLastName((String) payload.get("given_name"));
newManager.setEmail(payload.getEmail());
newManager.setGoogleId(payload.getSubject());
newManager.setImageUrl((String) payload.get("picture"));
return newManager;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment