PasswordsHistoryBean.java
package sk.iway.iwcm.users;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import sk.iway.iwcm.database.ActiveRecord;
/**
* #23471 - Password security - pri zmene hesla sa musi kontrolovat, ci heslo nie je v historii pouzitych hesiel usera.
*
*@Title webjet7
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2010
*@author $Author: prau $
*@version $Revision: 1.3 $
*@created Date: 10.01.2018 14:52:01
*@modified $Date: 2004/08/16 06:26:11 $
*/
@Entity
@Table(name="passwords_history")
public class PasswordsHistoryBean extends ActiveRecord implements Serializable
{
private static final long serialVersionUID = -1L;
@Id
@GeneratedValue(generator="WJGen_passwords_history")
@TableGenerator(name="WJGen_passwords_history",pkColumnValue="passwords_history")
@Column(name="passwords_history_id")
private int passwordsHistoryId;
@Column(name="user_id")
int userId;
@Column(name="password")
String password;
@Column(name="salt")
String salt;
@Column(name="save_date")
@Temporal(TemporalType.TIMESTAMP)
Date saveDate;
public PasswordsHistoryBean(){
super();
}
public PasswordsHistoryBean(int userId, String password, String salt) {
this.userId = userId;
this.password = password;
this.salt = salt;
}
/**Ak taky zaznam neexistuje, tak ho ulozi
*
*/
public static PasswordsHistoryBean insertAndSaveNew(int userId, String hash, String salt)
{
PasswordsHistoryBean passwordsHistoryBean = new PasswordsHistoryBean();
passwordsHistoryBean.setUserId(userId);
passwordsHistoryBean.setPassword(hash);
passwordsHistoryBean.setSalt(salt);
passwordsHistoryBean.saveIfNotExistsAndDeleteOld();
return passwordsHistoryBean;
}
public int getPasswordsHistoryId()
{
return passwordsHistoryId;
}
public void setPasswordsHistoryId(int passwordsHistoryId)
{
this.passwordsHistoryId = passwordsHistoryId;
}
@Override
public void setId(int id)
{
setPasswordsHistoryId(id);
}
@Override
public int getId()
{
return getPasswordsHistoryId();
}
public int getUserId()
{
return userId;
}
public void setUserId(int userId)
{
this.userId = userId;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getSalt()
{
return salt;
}
public void setSalt(String salt)
{
this.salt = salt;
}
public Date getSaveDate()
{
return saveDate;
}
public void setSaveDate(Date saveDate)
{
this.saveDate = saveDate;
}
/** Ulozi a nastavi datum ulozenia (ak nebol nastaveny)
*
*/
public boolean save()
{
if(getSaveDate() == null)
setSaveDate(new Date());
return super.save();
}
/** Ulozi ho iba ak uz neexistuje taky password v historii
*
* @return
*/
public boolean saveIfNotExists()
{
if(PasswordsHistoryDB.existsPassword(getUserId(), getPassword()))
return false;
return save();
}
/** Ak neexistuje taky zaznam, tak ho ulozi a zmaze najstarsi
*
* @return
*/
public boolean saveIfNotExistsAndDeleteOld()
{
boolean isSaved = saveIfNotExists();
if(isSaved)
PasswordsHistoryDB.getInstance().deleteOld(getUserId());
return isSaved;
}
}
/*
mysql
java.sql.SQLSyntaxErrorException: ORA-00900: neplatný príkaz SQL
CREATE TABLE passwords_history (
passwords_history_id INT NOT NULL PRIMARY KEY,
user_id INT,
password VARCHAR(128),
salt VARCHAR(64),
save_date DATETIME);
INSERT INTO pkey_generator VALUES('passwords_history', 1 , 'passwords_history', 'passwords_history_id');
mssql
java.sql.SQLSyntaxErrorException: ORA-00900: neplatný príkaz SQL
CREATE TABLE passwords_history (
[passwords_history_id] [INT] NOT NULL PRIMARY KEY,
user_id [INT],
password [NVARCHAR](128),
salt [NVARCHAR](64),
save_date [DATETIME]);
INSERT INTO pkey_generator VALUES('passwords_history', 1 , 'passwords_history', 'passwords_history_id');
oracle
java.sql.SQLSyntaxErrorException: ORA-00900: neplatný príkaz SQL
CREATE TABLE passwords_history (
passwords_history_id INT NOT NULL PRIMARY KEY,
user_id INTEGER,
password NVARCHAR2(128),
salt NVARCHAR2(64),
save_date DATE);
INSERT INTO pkey_generator VALUES('passwords_history', 1 , 'passwords_history', 'passwords_history_id');
PKEY:
INSERT INTO pkey_generator VALUES('passwords_history', 1 , 'passwords_history', 'passwords_history_id');
*/