blob: 35ab3af72f006f4a2320aacd2539353b9bc3413d [file] [log] [blame]
// Copyright (C) 2009 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.account;
import static com.google.gerrit.reviewdb.client.AccountExternalId.SCHEME_GERRIT;
import static com.google.gerrit.reviewdb.client.AccountExternalId.SCHEME_MAILTO;
import com.google.gerrit.reviewdb.client.AccountExternalId;
/**
* Information for {@link AccountManager#authenticate(AuthRequest)}.
* <p>
* Callers should populate this object with as much information as possible
* about the user account. For example, OpenID authentication might return
* registration information including a display name for the user, and an email
* address for them. These fields however are optional, as not all OpenID
* providers return them, and not all non-OpenID systems can use them.
*/
public class AuthRequest {
/** Create a request for a local username, such as from LDAP. */
public static AuthRequest forUser(final String username) {
final AccountExternalId.Key i =
new AccountExternalId.Key(SCHEME_GERRIT, username);
final AuthRequest r = new AuthRequest(i.get());
r.setUserName(username);
return r;
}
/**
* Create a request for an email address registration.
* <p>
* This type of request should be used only to attach a new email address to
* an existing user account.
*/
public static AuthRequest forEmail(final String email) {
final AccountExternalId.Key i =
new AccountExternalId.Key(SCHEME_MAILTO, email);
final AuthRequest r = new AuthRequest(i.get());
r.setEmailAddress(email);
return r;
}
private String externalId;
private String password;
private String displayName;
private String emailAddress;
private String userName;
private boolean skipAuthentication;
public AuthRequest(final String externalId) {
this.externalId = externalId;
}
public String getExternalId() {
return externalId;
}
public boolean isScheme(final String scheme) {
return getExternalId().startsWith(scheme);
}
public String getLocalUser() {
if (isScheme(SCHEME_GERRIT)) {
return getExternalId().substring(SCHEME_GERRIT.length());
}
return null;
}
public void setLocalUser(final String localUser) {
if (isScheme(SCHEME_GERRIT)) {
final AccountExternalId.Key key =
new AccountExternalId.Key(SCHEME_GERRIT, localUser);
externalId = key.get();
}
}
public String getPassword() {
return password;
}
public void setPassword(final String pass) {
password = pass;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(final String name) {
displayName = name != null && name.length() > 0 ? name : null;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(final String email) {
emailAddress = email != null && email.length() > 0 ? email : null;
}
public String getUserName() {
return userName;
}
public void setUserName(final String user) {
userName = user;
}
public boolean isSkipAuthentication() {
return skipAuthentication;
}
public void setSkipAuthentication(boolean skip) {
skipAuthentication = skip;
}
}