diff --git a/NpgsqlMRPProviders/ChangeLog b/NpgsqlMRPProviders/ChangeLog index 86a656dd..7fd72292 100644 --- a/NpgsqlMRPProviders/ChangeLog +++ b/NpgsqlMRPProviders/ChangeLog @@ -1,3 +1,8 @@ +2015-06-18 Paul Schneider + + * NpgsqlMembershipProvider.cs: should fix a bug at resetting + the password + 2015-06-10 Paul Schneider * NpgsqlMembershipProvider.cs: Fixes the Google registration diff --git a/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs b/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs index d970a56b..86d885dc 100644 --- a/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs +++ b/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs @@ -729,7 +729,6 @@ namespace Npgsql.Web // and hydrates a MembershiUser from the values. Called by the // MembershipUser.GetUser implementation. // - private MembershipUser GetUserFromReader (NpgsqlDataReader reader) { object providerUserKey = reader.GetValue (0); @@ -870,10 +869,10 @@ namespace Npgsql.Web using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) { using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PasswordAnswer, IsLockedOut FROM Users " + - " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) { + " WHERE Username = :uname AND ApplicationName = :app", conn)) { - cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username; - cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName; + cmd.Parameters.AddWithValue ("uname", username ); + cmd.Parameters.AddWithValue ("app", pApplicationName); string passwordAnswer = ""; @@ -891,7 +890,7 @@ namespace Npgsql.Web } else { throw new MembershipPasswordException ("The supplied user name is not found."); } - + reader.Close (); if (RequiresQuestionAndAnswer && !CheckPassword (answer, passwordAnswer)) { UpdateFailureCount (username, "passwordAnswer"); @@ -909,7 +908,6 @@ namespace Npgsql.Web rowsAffected = updateCmd.ExecuteNonQuery (); - reader.Close (); } conn.Close (); } diff --git a/web/ApiControllers/AccountController.cs b/web/ApiControllers/AccountController.cs index 8eee577e..277ce717 100644 --- a/web/ApiControllers/AccountController.cs +++ b/web/ApiControllers/AccountController.cs @@ -54,8 +54,8 @@ namespace Yavsc.ApiControllers model.UserName, model.Password, model.Email, - null, - null, + model.Question, + model.Answer, model.IsApprouved, out mcs); switch (mcs) { diff --git a/web/ChangeLog b/web/ChangeLog index 8772fcec..5b4df1f7 100644 --- a/web/ChangeLog +++ b/web/ChangeLog @@ -1,3 +1,11 @@ +2015-06-18 Paul Schneider + + * instdbws.sql: Creates a new table to store one time usage + passwords + + * AccountController.cs: Allows the questions and answer to be + specified for passw recovery + 2015-06-18 Paul Schneider * AccountController.cs: Register and reset passord from Web diff --git a/web/instdbws.sql b/web/instdbws.sql index ebda9e82..97fd2e1b 100644 --- a/web/instdbws.sql +++ b/web/instdbws.sql @@ -690,3 +690,24 @@ WITH ( ); +-- Table: passwrecovery + +-- DROP TABLE passwrecovery; + +CREATE TABLE passwrecovery +( + pkid character varying NOT NULL, + one_time_pass character varying(512) NOT NULL, + creation timestamp with time zone NOT NULL, + CONSTRAINT passwrecovery_pkey PRIMARY KEY (pkid), + CONSTRAINT passwrecovery_pkid_fkey FOREIGN KEY (pkid) + REFERENCES users (pkid) MATCH SIMPLE + ON UPDATE CASCADE ON DELETE CASCADE +) +WITH ( + OIDS=FALSE +); + + + + diff --git a/yavscModel/ChangeLog b/yavscModel/ChangeLog index 569d518d..ce8755c3 100644 --- a/yavscModel/ChangeLog +++ b/yavscModel/ChangeLog @@ -1,3 +1,8 @@ +2015-06-18 Paul Schneider + + * RegisterClientModel.cs: Implements the Question and answer + in the registration model + 2015-06-18 Paul Schneider * YavscModel.csproj: diff --git a/yavscModel/RolesAndMembers/RegisterClientModel.cs b/yavscModel/RolesAndMembers/RegisterClientModel.cs index 3ce4fe1a..5a41fa39 100644 --- a/yavscModel/RolesAndMembers/RegisterClientModel.cs +++ b/yavscModel/RolesAndMembers/RegisterClientModel.cs @@ -67,5 +67,9 @@ namespace Yavsc.Model.RolesAndMembers /// The mobile. [DisplayName("Téléphone mobile")] public string Mobile { get; set; } + + public string Question { get; set; } + + public string Answer { get; set; } } }