Fixes account creation and removal

* NpgsqlMembershipProvider.cs: Fixes the latest commit concerning
  account creation and removal

* YavscController.cs: TODO ...
main
Paul Schneider 10 years ago
parent cbb596ca04
commit c90b54d642
4 changed files with 41 additions and 13 deletions

@ -1,3 +1,8 @@
2015-11-03 Paul Schneider <paul@pschneider.fr>
* NpgsqlMembershipProvider.cs: Fixes the latest commit
concerning account creation and removal
2015-11-03 Paul Schneider <paul@pschneider.fr> 2015-11-03 Paul Schneider <paul@pschneider.fr>
* NpgsqlMembershipProvider.cs: insert a profile record before * NpgsqlMembershipProvider.cs: insert a profile record before

@ -375,16 +375,18 @@ namespace Npgsql.Web
} }
using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) { using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
conn.Open ();
NpgsqlTransaction tran = conn.BeginTransaction();
using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO profiles (username,applicationname,isanonymous)\n" + using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO profiles (username,applicationname,isanonymous)\n" +
"VALUES (:uname,:app,FALSE)")) { "VALUES (:uname,:app,FALSE)")) {
cmd.Connection = conn;
cmd.Parameters.AddWithValue ("uname", username); cmd.Parameters.AddWithValue ("uname", username);
cmd.Parameters.AddWithValue ("app", pApplicationName); cmd.Parameters.AddWithValue ("app", pApplicationName);
conn.Open ();
cmd.ExecuteNonQuery (); cmd.ExecuteNonQuery ();
} }
}
using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO Users " + using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO Users " +
" (PKID, Username, Passw, Email, PasswordQuestion, " + " (PKID, Username, Passw, Email, PasswordQuestion, " +
" PasswordAnswer, IsApproved," + " PasswordAnswer, IsApproved," +
@ -416,15 +418,15 @@ namespace Npgsql.Web
cmd.Parameters.AddWithValue ("@FailedPasswordAttemptWindowStart", createDate); cmd.Parameters.AddWithValue ("@FailedPasswordAttemptWindowStart", createDate);
cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptCount", 0); cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptCount", 0);
cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptWindowStart", createDate); cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptWindowStart", createDate);
int recAdded = cmd.ExecuteNonQuery (); int recAdded = cmd.ExecuteNonQuery ();
if (recAdded > 0) { if (recAdded > 0) {
status = MembershipCreateStatus.Success; status = MembershipCreateStatus.Success;
} else { } else {
status = MembershipCreateStatus.UserRejected; status = MembershipCreateStatus.UserRejected;
} }
conn.Close ();
} }
tran.Commit();
conn.Close ();
} }
return GetUser (username, false); return GetUser (username, false);
} else { } else {
@ -458,17 +460,33 @@ namespace Npgsql.Web
{ {
int rowsAffected = 0; int rowsAffected = 0;
using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) { using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
using (NpgsqlCommand cmd = new NpgsqlCommand ("DELETE FROM Users " + conn.Open ();
" WHERE Username = @Username AND Applicationname = @ApplicationName", conn)) { NpgsqlTransaction trans = conn.BeginTransaction ();
using (NpgsqlCommand cmd = new NpgsqlCommand ("DELETE FROM users " +
" WHERE username = @Username AND applicationname = @ApplicationName", conn)) {
cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username; cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName; cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
conn.Open ();
rowsAffected = cmd.ExecuteNonQuery (); rowsAffected = cmd.ExecuteNonQuery ();
if (deleteAllRelatedData) {
// TODO Process commands to delete all data for the user in the database.
}
conn.Close ();
} }
// TODO if (deleteAllRelatedData) { Process commands to delete all data for the user in the database. }
// OR NOT TO DO, to me, deleting an user implies delete all of its related data in db,
// as long they belong to him.
//
// So, just ignore this parameter,
// and remove the records from the profile model, that are not
// dropped in cascade by constraint,
// as long as these profiles may also be anonymous
using (NpgsqlCommand cmd = new NpgsqlCommand ("DELETE FROM profiles " +
" WHERE username = :uname AND applicationname = :appname", conn)) {
cmd.Parameters.AddWithValue ("uname", NpgsqlDbType.Varchar, 255).Value = username;
cmd.Parameters.AddWithValue ("appname", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
cmd.ExecuteNonQuery ();
}
trans.Commit ();
conn.Close ();
} }
return (rowsAffected > 0); return (rowsAffected > 0);
} }

@ -36,6 +36,7 @@ namespace Yavsc.ApiControllers
public void AllowCookies (Auth model) public void AllowCookies (Auth model)
{ {
// TODO check Auth when existing
if (model.Id != null) { if (model.Id != null) {
ProfileBase pr = ProfileBase.Create (model.Id); ProfileBase pr = ProfileBase.Create (model.Id);
pr.SetPropertyValue ("allowcookies", true); pr.SetPropertyValue ("allowcookies", true);

@ -1,3 +1,7 @@
2015-11-03 Paul Schneider <paul@pschneider.fr>
* YavscController.cs: TODO ...
2015-11-03 Paul Schneider <paul@pschneider.fr> 2015-11-03 Paul Schneider <paul@pschneider.fr>
* YavscController.cs: Fixes the cookies agreement * YavscController.cs: Fixes the cookies agreement

Loading…