Skip to content

Commit 60238c1

Browse files
committed
Intorduce authentication request
1 parent 5ff1af7 commit 60238c1

7 files changed

Lines changed: 235 additions & 45 deletions

File tree

lib/src/main/java/com/auth0/authentication/AuthenticationAPIClient.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.auth0.authentication.result.Delegation;
3131
import com.auth0.authentication.result.UserProfile;
3232
import com.auth0.internal.RequestFactory;
33+
import com.auth0.request.AuthenticationRequest;
3334
import com.auth0.request.ParameterizableRequest;
3435
import com.auth0.request.Request;
3536
import com.auth0.util.Metrics;
@@ -39,7 +40,6 @@
3940

4041
import java.util.Map;
4142

42-
import static com.auth0.authentication.ParameterBuilder.GRANT_TYPE_JWT;
4343
import static com.auth0.authentication.ParameterBuilder.GRANT_TYPE_PASSWORD;
4444

4545
/**
@@ -142,7 +142,7 @@ public void setDefaultDbConnection(String defaultDbConnection) {
142142
* @param password of the user
143143
* @return a request to configure and start that will yield {@link Credentials}
144144
*/
145-
public ParameterizableRequest<Credentials> login(String usernameOrEmail, String password) {
145+
public AuthenticationRequest login(String usernameOrEmail, String password) {
146146
Map<String, Object> requestParameters = ParameterBuilder.newAuthenticationBuilder()
147147
.set(USERNAME_KEY, usernameOrEmail)
148148
.set(PASSWORD_KEY, password)
@@ -158,7 +158,7 @@ public ParameterizableRequest<Credentials> login(String usernameOrEmail, String
158158
* @param connection that will be used to authenticate the user, e.g. 'facebook'
159159
* @return a request to configure and start that will yield {@link Credentials}
160160
*/
161-
public ParameterizableRequest<Credentials> loginWithOAuthAccessToken(String token, String connection) {
161+
public AuthenticationRequest loginWithOAuthAccessToken(String token, String connection) {
162162
HttpUrl url = HttpUrl.parse(auth0.getDomainUrl()).newBuilder()
163163
.addPathSegment(OAUTH_PATH)
164164
.addPathSegment(ACCESS_TOKEN_PATH)
@@ -170,8 +170,8 @@ public ParameterizableRequest<Credentials> loginWithOAuthAccessToken(String toke
170170
.setAccessToken(token)
171171
.asDictionary();
172172

173-
return factory.POST(url, client, mapper, Credentials.class)
174-
.addParameters(parameters);
173+
return factory.authenticationPOST(url, client, mapper)
174+
.addAuthenticationParameters(parameters);
175175
}
176176

177177
/**
@@ -181,7 +181,7 @@ public ParameterizableRequest<Credentials> loginWithOAuthAccessToken(String toke
181181
* @param verificationCode sent by Auth0 via SMS
182182
* @return a request to configure and start that will yield {@link Credentials}
183183
*/
184-
public ParameterizableRequest<Credentials> loginWithPhoneNumber(String phoneNumber, String verificationCode) {
184+
public AuthenticationRequest loginWithPhoneNumber(String phoneNumber, String verificationCode) {
185185
Map<String, Object> parameters = ParameterBuilder.newAuthenticationBuilder()
186186
.set(USERNAME_KEY, phoneNumber)
187187
.set(PASSWORD_KEY, verificationCode)
@@ -199,7 +199,7 @@ public ParameterizableRequest<Credentials> loginWithPhoneNumber(String phoneNumb
199199
* @param verificationCode sent by Auth0 via Email
200200
* @return a request to configure and start that will yield {@link Credentials}
201201
*/
202-
public ParameterizableRequest<Credentials> loginWithEmail(String email, String verificationCode) {
202+
public AuthenticationRequest loginWithEmail(String email, String verificationCode) {
203203
Map<String, Object> parameters = ParameterBuilder.newAuthenticationBuilder()
204204
.set(USERNAME_KEY, email)
205205
.set(PASSWORD_KEY, verificationCode)
@@ -268,7 +268,7 @@ public ParameterizableRequest<DatabaseUser> createUser(String email, String pass
268268
*/
269269
public SignUpRequest signUp(String email, String password, String username) {
270270
final ParameterizableRequest<DatabaseUser> createUserRequest = createUser(email, password, username);
271-
final ParameterizableRequest<Credentials> authenticationRequest = login(email, password);
271+
final AuthenticationRequest authenticationRequest = login(email, password);
272272
return new SignUpRequest(createUserRequest, authenticationRequest);
273273
}
274274

@@ -282,7 +282,7 @@ public SignUpRequest signUp(String email, String password, String username) {
282282
*/
283283
public SignUpRequest signUp(String email, String password) {
284284
ParameterizableRequest<DatabaseUser> createUserRequest = createUser(email, password);
285-
final ParameterizableRequest<Credentials> authenticationRequest = login(email, password);
285+
final AuthenticationRequest authenticationRequest = login(email, password);
286286
return new SignUpRequest(createUserRequest, authenticationRequest);
287287
}
288288

@@ -478,15 +478,15 @@ public ParameterizableRequest<Void> passwordless() {
478478
/**
479479
* Fetch the user's profile after it's authenticated by a login request.
480480
* If the login request fails, the returned request will fail
481-
* @param loginRequest that will authenticate a user with Auth0 and return a {@see Credentials}
482-
* @return a {@see AuthenticationRequest} that first logins and the fetches the profile
481+
* @param authenticationRequest that will authenticate a user with Auth0 and return a {@see Credentials}
482+
* @return a {@see ProfileRequest} that first logins and the fetches the profile
483483
*/
484-
public AuthenticationRequest getProfileAfter(ParameterizableRequest<Credentials> loginRequest) {
484+
public ProfileRequest getProfileAfter(AuthenticationRequest authenticationRequest) {
485485
final ParameterizableRequest<UserProfile> profileRequest = profileRequest();
486-
return new AuthenticationRequest(loginRequest, profileRequest);
486+
return new ProfileRequest(authenticationRequest, profileRequest);
487487
}
488488

489-
protected ParameterizableRequest<Credentials> loginWithResourceOwner(Map<String, Object> parameters) {
489+
protected AuthenticationRequest loginWithResourceOwner(Map<String, Object> parameters) {
490490
HttpUrl url = HttpUrl.parse(auth0.getDomainUrl()).newBuilder()
491491
.addPathSegment(OAUTH_PATH)
492492
.addPathSegment(RESOURCE_OWNER_PATH)
@@ -497,8 +497,8 @@ protected ParameterizableRequest<Credentials> loginWithResourceOwner(Map<String,
497497
.setConnection(defaultDbConnection)
498498
.addAll(parameters)
499499
.asDictionary();
500-
return factory.POST(url, client, mapper, Credentials.class)
501-
.addParameters(requestParameters);
500+
return factory.authenticationPOST(url, client, mapper)
501+
.addAuthenticationParameters(requestParameters);
502502
}
503503

504504
private ParameterizableRequest<UserProfile> profileRequest() {

lib/src/main/java/com/auth0/authentication/ParameterBuilder.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,11 @@ public class ParameterBuilder {
4343
public static final String SCOPE_KEY = "scope";
4444
public static final String REFRESH_TOKEN_KEY = "refresh_token";
4545
public static final String CONNECTION_KEY = "connection";
46-
47-
private static final String ACCESS_TOKEN_KEY = "access_token";
48-
private static final String SEND_KEY = "send";
49-
private static final String CLIENT_ID_KEY = "client_id";
50-
private static final String GRANT_TYPE_KEY = "grant_type";
51-
private static final String DEVICE_KEY = "device";
46+
public static final String ACCESS_TOKEN_KEY = "access_token";
47+
public static final String SEND_KEY = "send";
48+
public static final String CLIENT_ID_KEY = "client_id";
49+
public static final String GRANT_TYPE_KEY = "grant_type";
50+
public static final String DEVICE_KEY = "device";
5251

5352
private Map<String, Object> parameters;
5453

lib/src/main/java/com/auth0/authentication/AuthenticationRequest.java renamed to lib/src/main/java/com/auth0/authentication/ProfileRequest.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,27 @@
2525
package com.auth0.authentication;
2626

2727
import com.auth0.Auth0Exception;
28+
import com.auth0.authentication.result.Authentication;
2829
import com.auth0.authentication.result.Credentials;
30+
import com.auth0.authentication.result.UserProfile;
31+
import com.auth0.callback.BaseCallback;
32+
import com.auth0.request.AuthenticationRequest;
2933
import com.auth0.request.ParameterizableRequest;
3034
import com.auth0.request.Request;
31-
import com.auth0.callback.BaseCallback;
32-
import com.auth0.authentication.result.UserProfile;
33-
import com.auth0.authentication.result.Authentication;
3435

3536
import java.util.Map;
3637

3738
/**
38-
* Represent a Authentication request that consist of a log in and a fetch profile requests
39+
* Request to fetch a profile after a successful authentication with Auth0 Authentication API
3940
*/
40-
public class AuthenticationRequest implements Request<Authentication> {
41+
public class ProfileRequest implements Request<Authentication> {
4142

4243
private static final String ID_TOKEN_KEY = "id_token";
4344

44-
private final ParameterizableRequest<Credentials> credentialsRequest;
45+
private final AuthenticationRequest credentialsRequest;
4546
private final ParameterizableRequest<UserProfile> tokenInfoRequest;
4647

47-
AuthenticationRequest(ParameterizableRequest<Credentials> credentialsRequest, ParameterizableRequest<UserProfile> tokenInfoRequest) {
48+
ProfileRequest(AuthenticationRequest credentialsRequest, ParameterizableRequest<UserProfile> tokenInfoRequest) {
4849
this.credentialsRequest = credentialsRequest;
4950
this.tokenInfoRequest = tokenInfoRequest;
5051
}
@@ -55,8 +56,8 @@ public class AuthenticationRequest implements Request<Authentication> {
5556
* @param parameters as a non-null dictionary
5657
* @return itself
5758
*/
58-
public AuthenticationRequest addParameters(Map<String, Object> parameters) {
59-
credentialsRequest.addParameters(parameters);
59+
public ProfileRequest addParameters(Map<String, Object> parameters) {
60+
credentialsRequest.addAuthenticationParameters(parameters);
6061
return this;
6162
}
6263

@@ -66,8 +67,8 @@ public AuthenticationRequest addParameters(Map<String, Object> parameters) {
6667
* @param scope value
6768
* @return itself
6869
*/
69-
public AuthenticationRequest setScope(String scope) {
70-
credentialsRequest.addParameter(ParameterBuilder.SCOPE_KEY, scope);
70+
public ProfileRequest setScope(String scope) {
71+
credentialsRequest.setScope(scope);
7172
return this;
7273
}
7374

@@ -77,8 +78,8 @@ public AuthenticationRequest setScope(String scope) {
7778
* @param connection name
7879
* @return itself
7980
*/
80-
public AuthenticationRequest setConnection(String connection) {
81-
credentialsRequest.addParameter(ParameterBuilder.CONNECTION_KEY, connection);
81+
public ProfileRequest setConnection(String connection) {
82+
credentialsRequest.setConnection(connection);
8283
return this;
8384
}
8485

lib/src/main/java/com/auth0/authentication/SignUpRequest.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@
2626

2727
import com.auth0.Auth0Exception;
2828
import com.auth0.authentication.result.Credentials;
29+
import com.auth0.authentication.result.DatabaseUser;
30+
import com.auth0.callback.BaseCallback;
31+
import com.auth0.request.AuthenticationRequest;
2932
import com.auth0.request.ParameterizableRequest;
3033
import com.auth0.request.Request;
31-
import com.auth0.callback.BaseCallback;
32-
import com.auth0.authentication.result.DatabaseUser;
33-
34-
import org.omg.Dynamic.Parameter;
3534

3635
import java.util.Map;
3736

@@ -41,9 +40,9 @@
4140
public class SignUpRequest implements Request<Credentials> {
4241

4342
private final ParameterizableRequest<DatabaseUser> signUpRequest;
44-
private final ParameterizableRequest<Credentials> authenticationRequest;
43+
private final AuthenticationRequest authenticationRequest;
4544

46-
SignUpRequest(ParameterizableRequest<DatabaseUser> signUpRequest, ParameterizableRequest<Credentials> authenticationRequest) {
45+
SignUpRequest(ParameterizableRequest<DatabaseUser> signUpRequest, AuthenticationRequest authenticationRequest) {
4746
this.signUpRequest = signUpRequest;
4847
this.authenticationRequest = authenticationRequest;
4948
}
@@ -64,7 +63,7 @@ public SignUpRequest addSignUpParameters(Map<String, Object> parameters) {
6463
* @return itself
6564
*/
6665
public SignUpRequest addAuthenticationParameters(Map<String, Object> parameters) {
67-
authenticationRequest.addParameters(parameters);
66+
authenticationRequest.addAuthenticationParameters(parameters);
6867
return this;
6968
}
7069

@@ -74,7 +73,7 @@ public SignUpRequest addAuthenticationParameters(Map<String, Object> parameters)
7473
* @return itself
7574
*/
7675
public SignUpRequest setScope(String scope) {
77-
authenticationRequest.addParameter(ParameterBuilder.SCOPE_KEY, scope);
76+
authenticationRequest.setScope(scope);
7877
return this;
7978
}
8079

@@ -84,7 +83,7 @@ public SignUpRequest setScope(String scope) {
8483
* @return itself
8584
*/
8685
public SignUpRequest setConnection(String connection) {
87-
authenticationRequest.addParameter(ParameterBuilder.CONNECTION_KEY, connection);
86+
authenticationRequest.setConnection(connection);
8887
return this;
8988
}
9089

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package com.auth0.internal;
2+
3+
import com.auth0.authentication.result.Credentials;
4+
import com.auth0.request.AuthenticationRequest;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.squareup.okhttp.HttpUrl;
7+
import com.squareup.okhttp.OkHttpClient;
8+
9+
import java.util.Map;
10+
11+
import static com.auth0.authentication.ParameterBuilder.ACCESS_TOKEN_KEY;
12+
import static com.auth0.authentication.ParameterBuilder.CLIENT_ID_KEY;
13+
import static com.auth0.authentication.ParameterBuilder.CONNECTION_KEY;
14+
import static com.auth0.authentication.ParameterBuilder.DEVICE_KEY;
15+
import static com.auth0.authentication.ParameterBuilder.GRANT_TYPE_KEY;
16+
import static com.auth0.authentication.ParameterBuilder.SCOPE_KEY;
17+
18+
/**
19+
* Created by hernan on 3/16/16.
20+
*/
21+
public class BaseAuthenticationRequest extends SimpleRequest<Credentials> implements AuthenticationRequest {
22+
23+
public BaseAuthenticationRequest(HttpUrl url, OkHttpClient client, ObjectMapper mapper, String httpMethod, Class clazz) {
24+
super(url, client, mapper, httpMethod, clazz);
25+
}
26+
27+
public BaseAuthenticationRequest(HttpUrl url, OkHttpClient client, ObjectMapper mapper, String httpMethod) {
28+
super(url, client, mapper, httpMethod);
29+
}
30+
31+
/**
32+
* Sets the 'client_id' parameter
33+
*
34+
* @param clientId clientID
35+
* @return itself
36+
*/
37+
@Override
38+
public AuthenticationRequest setClientId(String clientId) {
39+
addParameter(CLIENT_ID_KEY, clientId);
40+
return this;
41+
}
42+
43+
/**
44+
* Sets the 'grant_type' parameter
45+
*
46+
* @param grantType grant type
47+
* @return itself
48+
*/
49+
@Override
50+
public AuthenticationRequest setGrantType(String grantType) {
51+
addParameter(GRANT_TYPE_KEY, grantType);
52+
return this;
53+
}
54+
55+
/**
56+
* Sets the 'connection' parameter
57+
*
58+
* @param connection name of the connection
59+
* @return itself
60+
*/
61+
@Override
62+
public AuthenticationRequest setConnection(String connection) {
63+
addParameter(CONNECTION_KEY, connection);
64+
return this;
65+
}
66+
67+
/**
68+
* Sets the 'scope' parameter.
69+
*
70+
* @param scope a scope value
71+
* @return itself
72+
*/
73+
public AuthenticationRequest setScope(String scope) {
74+
addParameter(SCOPE_KEY, scope);
75+
return this;
76+
}
77+
78+
/**
79+
* Sets the 'device' parameter
80+
*
81+
* @param device a device name
82+
* @return itself
83+
*/
84+
public AuthenticationRequest setDevice(String device) {
85+
addParameter(DEVICE_KEY, device);
86+
return this;
87+
}
88+
89+
/**
90+
* Sets the 'access_token' parameter
91+
*
92+
* @param accessToken a access token
93+
* @return itself
94+
*/
95+
public AuthenticationRequest setAccessToken(String accessToken) {
96+
addParameter(ACCESS_TOKEN_KEY, accessToken);
97+
return this;
98+
}
99+
100+
@Override
101+
public AuthenticationRequest addAuthenticationParameters(Map<String, Object> parameters) {
102+
addParameters(parameters);
103+
return this;
104+
}
105+
}

lib/src/main/java/com/auth0/internal/RequestFactory.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
package com.auth0.internal;
2626

27+
import com.auth0.authentication.result.Credentials;
28+
import com.auth0.request.AuthenticationRequest;
2729
import com.auth0.request.AuthorizableRequest;
2830
import com.auth0.request.ParameterizableRequest;
2931
import com.auth0.util.Metrics;
@@ -47,7 +49,15 @@ public void setUserAgent(String userAgent) {
4749
}
4850

4951
public <T> ParameterizableRequest<T> GET(HttpUrl url, OkHttpClient client, ObjectMapper mapper, Class<T> clazz) {
50-
return addMetricHeader(new SimpleRequest<>(url, client, mapper, "GET", clazz));
52+
final SimpleRequest<T> request = new SimpleRequest<>(url, client, mapper, "GET", clazz);
53+
addMetrics(request);
54+
return request;
55+
}
56+
57+
public AuthenticationRequest authenticationPOST(HttpUrl url, OkHttpClient client, ObjectMapper mapper) {
58+
final BaseAuthenticationRequest request = new BaseAuthenticationRequest(url, client, mapper, "POST", Credentials.class);
59+
addMetrics(request);
60+
return request;
5161
}
5262

5363
public <T> ParameterizableRequest<T> POST(HttpUrl url, OkHttpClient client, ObjectMapper mapper, Class<T> clazz) {
@@ -91,4 +101,13 @@ private <T> ParameterizableRequest<T> addMetricHeader(ParameterizableRequest<T>
91101
}
92102
return request;
93103
}
104+
105+
private <T> void addMetrics(AuthorizableRequest<T> request) {
106+
if (this.clientInfo != null) {
107+
request.addHeader(Metrics.HEADER_NAME, this.clientInfo);
108+
}
109+
if (this.userAgent!= null) {
110+
request.addHeader("User-Agent", this.userAgent);
111+
}
112+
}
94113
}

0 commit comments

Comments
 (0)