package org.karmaexchange.auth; import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import lombok.Data; import org.karmaexchange.dao.ImageProviderType; import org.karmaexchange.dao.User; public interface AuthProvider { CredentialVerificationResult verifyUserCredentials(AuthProviderCredentials userCredentials, HttpServletRequest req); UserInfo createUser(CredentialVerificationResult verificatonResult); @Data @AllArgsConstructor public static class UserInfo { private final User user; @Nullable private final ProfileImage profileImage; public UserInfo(User user) { this(user, null); } @Data public static class ProfileImage { private final ImageProviderType provider; private final String url; } } @Data public static class CredentialVerificationResult { private final GlobalUid globalUid; private final CredentialVerificationCtx verificationCtx; } public interface CredentialVerificationCtx { } }