Fully implement unencrypted auth token operations

This commit is contained in:
Melanie
2009-09-04 07:48:09 +01:00
parent 548f508044
commit ac40c7a74c
3 changed files with 64 additions and 3 deletions

View File

@@ -39,6 +39,7 @@ namespace OpenSim.Data.MySQL
{
private string m_Realm;
private List<string> m_ColumnNames = null;
private int m_LastExpire = 0;
public MySqlAuthenticationData(string connectionString, string realm)
: base(connectionString)
@@ -153,5 +154,56 @@ namespace OpenSim.Data.MySQL
return false;
}
public bool SetToken(UUID principalID, string token, int lifetime)
{
if (System.Environment.TickCount - m_LastExpire > 30000)
DoExpire();
MySqlCommand cmd = new MySqlCommand("insert into tokens (UUID, token, validity) values (?principalID, ?token, date_add(now(), interval ?lifetime minute))");
cmd.Parameters.AddWithValue("?principalID", principalID.ToString());
cmd.Parameters.AddWithValue("?token", token);
cmd.Parameters.AddWithValue("?lifetime", lifetime.ToString());
if (ExecuteNonQuery(cmd) > 0)
{
cmd.Dispose();
return true;
}
cmd.Dispose();
return false;
}
public bool CheckToken(UUID principalID, string token, int lifetime)
{
if (System.Environment.TickCount - m_LastExpire > 30000)
DoExpire();
MySqlCommand cmd = new MySqlCommand("update tokens set validity = date_add(now(), interval ?lifetime minute) where UUID = ?principalID and token = ?token and validity > now()");
cmd.Parameters.AddWithValue("?principalID", principalID.ToString());
cmd.Parameters.AddWithValue("?token", token);
cmd.Parameters.AddWithValue("?lifetime", lifetime.ToString());
if (ExecuteNonQuery(cmd) > 0)
{
cmd.Dispose();
return true;
}
cmd.Dispose();
return false;
}
private void DoExpire()
{
MySqlCommand cmd = new MySqlCommand("delete from tokens where validity < now()");
ExecuteNonQuery(cmd);
cmd.Dispose();
m_LastExpire = System.Environment.TickCount;
}
}
}