string passwordStrengthRegularExpression;
TimeSpan userIsOnlineTimeWindow;
ConnectionStringSettings connectionString;
+ bool schemaChecked = false;
+ DerbyUnloadManager.DerbyShutDownPolicy shutDownPolicy = DerbyUnloadManager.DerbyShutDownPolicy.Default;
string applicationName;
DbConnection CreateConnection ()
{\r
+ if (!schemaChecked) {\r
+ DerbyDBSchema.CheckSchema (connectionString.ConnectionString);\r
+ schemaChecked = true;\r
+\r
+ DerbyUnloadManager.RegisterUnloadHandler (connectionString.ConnectionString, shutDownPolicy);\r
+ }\r
+\r
OleDbConnection connection = new OleDbConnection (connectionString.ConnectionString);
connection.Open ();
return connection;
EmitValidatingPassword (username, newPwd, false);\r
string db_password = EncodePassword (newPwd, pi.PasswordFormat, pi.PasswordSalt);\r
\r
- int st = DerbyMembershipHelper.Membership_SetPassword (connection, ApplicationName, username, newPwd, (int) pi.PasswordFormat, pi.PasswordSalt, DateTime.UtcNow);\r
+ int st = DerbyMembershipHelper.Membership_SetPassword (connection, ApplicationName, username, db_password, (int) pi.PasswordFormat, pi.PasswordSalt, DateTime.UtcNow);\r
\r
if (st == 0)\r
return true;\r
if (pi != null) {
string db_passwordAnswer = EncodePassword (newPwdAnswer, pi.PasswordFormat, pi.PasswordSalt);\r
\r
- int st = DerbyMembershipHelper.Membership_ChangePasswordQuestionAndAnswer (connection, ApplicationName, username, newPwdQuestion, newPwdAnswer);
+ int st = DerbyMembershipHelper.Membership_ChangePasswordQuestionAndAnswer (connection, ApplicationName, username, newPwdQuestion, db_passwordAnswer);
if (st == 0)
return true;
status = MembershipCreateStatus.InvalidAnswer;
return null;
}
- if (providerUserKey != null && !(providerUserKey is string)) {
+ if (providerUserKey != null && !(providerUserKey is Guid)) {
status = MembershipCreateStatus.InvalidProviderUserKey;
return null;
}\r
using (DbConnection connection = CreateConnection ()) {
try {\r
- \r
\r
+ object helperUserKey = providerUserKey != null ? providerUserKey.ToString () : null;\r
DateTime Now = DateTime.UtcNow;\r
int st = DerbyMembershipHelper.Membership_CreateUser (connection, ApplicationName, username, password, passwordSalt, email,\r
- pwdQuestion, pwdAnswer, isApproved, Now, Now, RequiresUniqueEmail, (int)PasswordFormat, ref providerUserKey);\r
+ pwdQuestion, pwdAnswer, isApproved, Now, Now, RequiresUniqueEmail, (int) PasswordFormat, ref helperUserKey);\r
\r
+ providerUserKey = new Guid ((string) helperUserKey);\r
if (st == 0)\r
return GetUser (providerUserKey, false);
else if (st == 2)
string password = null;
using (DbConnection connection = CreateConnection ()) {\r
- int st = DerbyMembershipHelper.Membership_GetPassword (connection, ApplicationName, username, answer, MaxInvalidPasswordAttempts, PasswordAttemptWindow, DateTime.UtcNow, out password);\r
+ int st = DerbyMembershipHelper.Membership_GetPassword (connection, ApplicationName, username, user_answer, MaxInvalidPasswordAttempts, PasswordAttemptWindow, DateTime.UtcNow, out password);\r
\r
if (st == 1)\r
throw new ProviderException ("User specified by username is not found in the membership database");\r
return DecodePassword (password, pi.PasswordFormat);
}
- }
-
- MembershipUser GetUserFromReader (DbDataReader reader)
- {
- return new MembershipUser (
+ }\r
+\r
+ MembershipUser GetUserFromReader (DbDataReader reader)\r
+ {\r
+ return new MembershipUser (\r
this.Name, /* XXX is this right? */\r
reader.GetString (0), /* name */\r
- reader.GetString (1), /* providerUserKey */
+ new Guid (reader.GetString (1)), /* providerUserKey */\r
reader.IsDBNull (2) ? null : reader.GetString (2), /* email */\r
reader.IsDBNull (3) ? null : reader.GetString (3), /* passwordQuestion */\r
- reader.IsDBNull (4) ? null : reader.GetString (4), /* comment */
+ reader.IsDBNull (4) ? null : reader.GetString (4), /* comment */\r
reader.GetInt32 (5) > 0, /* isApproved */\r
- reader.GetInt32 (6) > 0, /* isLockedOut */
+ reader.GetInt32 (6) > 0, /* isLockedOut */\r
reader.GetDateTime (7).ToLocalTime (), /* creationDate */\r
reader.GetDateTime (8).ToLocalTime (), /* lastLoginDate */\r
reader.GetDateTime (9).ToLocalTime (), /* lastActivityDate */\r
reader.GetDateTime (10).ToLocalTime (), /* lastPasswordChangedDate */\r
- reader.GetDateTime (11).ToLocalTime () /* lastLockoutDate */);
+ reader.GetDateTime (11).ToLocalTime () /* lastLockoutDate */);\r
}
public override MembershipUser GetUser (string username, bool userIsOnline)
if (providerUserKey == null)\r
throw new ArgumentNullException ("providerUserKey");\r
\r
- if (!(providerUserKey is string))\r
- throw new ArgumentException ("providerUserKey is not of type string");\r
+ if (!(providerUserKey is Guid))\r
+ throw new ArgumentException ("providerUserKey is not of type Guid", "providerUserKey");\r
\r
using (DbConnection connection = CreateConnection ()) {\r
DbDataReader reader = null;\r
- int st = DerbyMembershipHelper.Membership_GetUserByUserId (connection, providerUserKey, userIsOnline, DateTime.UtcNow, out reader);\r
+ int st = DerbyMembershipHelper.Membership_GetUserByUserId (connection, providerUserKey.ToString (), userIsOnline, DateTime.UtcNow, out reader);\r
using (reader) {\r
if (st == 0 && reader != null) {\r
MembershipUser u = GetUserFromReader (reader);\r
throw new ProviderException ("The ConnectionStringName attribute must be present and non-zero length.");
connectionString = WebConfigurationManager.ConnectionStrings [connectionStringName];\r
+ if (connectionString == null)\r
+ throw new ProviderException (String.Format ("The connection name '{0}' was not found in the applications configuration or the connection string is empty.", connectionStringName));\r
+\r
+ if (connectionString == null)\r
+ throw new ProviderException (String.Format ("The connection name '{0}' was not found in the applications configuration or the connection string is empty.", connectionStringName));\r
\r
- DerbyDBSchema.InitializeSchema (connectionString.ConnectionString);\r
+ string shutdown = config ["shutdown"];\r
+ if (!String.IsNullOrEmpty (shutdown))\r
+ shutDownPolicy = (DerbyUnloadManager.DerbyShutDownPolicy) Enum.Parse (typeof (DerbyUnloadManager.DerbyShutDownPolicy), shutdown, true);\r
}
public override string ResetPassword (string username, string answer)