/**
* The contents of this file are subject to the OpenMRS Public License
* Version 1.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://license.openmrs.org
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* Copyright (C) OpenMRS, LLC. All Rights Reserved.
*/
package org.openmrs.api.db;
import java.util.Date;
import org.openmrs.BaseOpenmrsObject;
import org.openmrs.OpenmrsObject;
import org.openmrs.User;
import org.openmrs.util.Security;
/**
* This class holds the minimal amount of data necessary to change a user's password without using a
* PreparedStatement or putting the password in the User class. This should never be used by
* anything except for UserDAO and UserService methods that change passwords.
*
* @since 1.5
*/
public class LoginCredential extends BaseOpenmrsObject implements OpenmrsObject {
private Integer userId;
private String hashedPassword;
private String salt;
private String secretQuestion;
private String secretAnswer;
private User changedBy;
private Date dateChanged;
public LoginCredential() {
}
/**
* @return the changedBy
*/
public User getChangedBy() {
return changedBy;
}
/**
* @param changedBy the changedBy to set
*/
public void setChangedBy(User changedBy) {
this.changedBy = changedBy;
}
/**
* @return the dateChanged
*/
public Date getDateChanged() {
return dateChanged;
}
/**
* @param dateChanged the dateChanged to set
*/
public void setDateChanged(Date dateChanged) {
this.dateChanged = dateChanged;
}
/**
* @return the password
*/
public String getHashedPassword() {
return hashedPassword;
}
/**
* @param password the password to set
*/
public void setHashedPassword(String password) {
this.hashedPassword = password;
}
/**
* @return the salt
*/
public String getSalt() {
return salt;
}
/**
* @param salt the salt to set
*/
public void setSalt(String salt) {
this.salt = salt;
}
/**
* @return the userId
*/
public Integer getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(Integer userId) {
this.userId = userId;
}
/**
* @return the secretAnswer
*/
public String getSecretAnswer() {
return secretAnswer;
}
/**
* @param secretAnswer the secretAnswer to set
*/
public void setSecretAnswer(String secretAnswer) {
this.secretAnswer = secretAnswer;
}
/**
* @return the secretQuestion
*/
public String getSecretQuestion() {
return secretQuestion;
}
/**
* @param secretQuestion the secretQuestion to set
*/
public void setSecretQuestion(String secretQuestion) {
this.secretQuestion = secretQuestion;
}
/**
* @param pw
* @return Whether pw is the correct cleartext password for this user
*/
public boolean checkPassword(String pw) {
return Security.hashMatches(getHashedPassword(), pw + getSalt());
}
/**
* @see org.openmrs.OpenmrsObject#getId()
*/
public Integer getId() {
return userId;
}
/**
* @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
*/
public void setId(Integer id) {
setUserId(id);
}
}