package com.feth.play.module.pa.providers.oauth2.google;
import java.util.Locale;
import com.fasterxml.jackson.databind.JsonNode;
import com.feth.play.module.pa.providers.oauth2.BasicOAuth2AuthUser;
import com.feth.play.module.pa.user.AuthUser;
import com.feth.play.module.pa.user.ExtendedIdentity;
import com.feth.play.module.pa.user.LocaleIdentity;
import com.feth.play.module.pa.user.PicturedIdentity;
import com.feth.play.module.pa.user.ProfiledIdentity;
public class GoogleAuthUser extends BasicOAuth2AuthUser implements
ExtendedIdentity, PicturedIdentity, ProfiledIdentity, LocaleIdentity {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* From https://developers.google.com/accounts/docs/OAuth2Login#userinfocall
*/
private static class Constants {
public static final String ID = "id"; // "00000000000000",
public static final String EMAIL = "email"; // "fred.example@gmail.com",
public static final String EMAIL_IS_VERIFIED = "verified_email"; // true,
public static final String NAME = "name"; // "Fred Example",
public static final String FIRST_NAME = "given_name"; // "Fred",
public static final String LAST_NAME = "family_name"; // "Example",
public static final String PICTURE = "picture"; // "https://lh5.googleusercontent.com/-2Sv-4bBMLLA/AAAAAAAAAAI/AAAAAAAAABo/bEG4kI2mG0I/photo.jpg",
public static final String GENDER = "gender"; // "male",
public static final String LOCALE = "locale"; // "en-US"
public static final String LINK = "link"; // "https://plus.google.com/107424373956322297554"
}
private String email;
private boolean emailIsVerified = false;
private String name;
private String firstName;
private String lastName;
private String picture;
private String gender;
private String locale;
private String link;
public GoogleAuthUser(final JsonNode n, final GoogleAuthInfo info,
final String state) {
super(n.get(Constants.ID).asText(), info, state);
if (n.has(Constants.EMAIL)) {
this.email = n.get(Constants.EMAIL).asText();
}
if (n.has(Constants.EMAIL_IS_VERIFIED)) {
this.emailIsVerified = n.get(Constants.EMAIL_IS_VERIFIED)
.asBoolean();
}
if (n.has(Constants.NAME)) {
this.name = n.get(Constants.NAME).asText();
}
if (n.has(Constants.FIRST_NAME)) {
this.firstName = n.get(Constants.FIRST_NAME).asText();
}
if (n.has(Constants.LAST_NAME)) {
this.lastName = n.get(Constants.LAST_NAME).asText();
}
if (n.has(Constants.PICTURE)) {
this.picture = n.get(Constants.PICTURE).asText();
}
if (n.has(Constants.GENDER)) {
this.gender = n.get(Constants.GENDER).asText();
}
if (n.has(Constants.LOCALE)) {
this.locale = n.get(Constants.LOCALE).asText();
}
if (n.has(Constants.LINK)) {
this.link = n.get(Constants.LINK).asText();
}
}
@Override
public String getProvider() {
return GoogleAuthProvider.PROVIDER_KEY;
}
public String getEmail() {
return email;
}
public boolean isEmailVerified() {
return emailIsVerified;
}
public String getName() {
return name;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String getPicture() {
return picture;
}
public String getGender() {
return gender;
}
public String getProfileLink() {
return link;
}
public Locale getLocale() {
return AuthUser.getLocaleFromString(locale);
}
}