Fixed the issue where we were not validting the correct token when resetting the password #865

Removed the old user (Well commented it out for now)
This commit is contained in:
Jamie.Rees 2017-07-19 08:22:15 +01:00
commit 6c3523b21e
20 changed files with 182 additions and 370 deletions

View file

@ -17,17 +17,16 @@ namespace Ombi.Store.Context
DbSet<PlexContent> PlexContent { get; set; }
DbSet<RadarrCache> RadarrCache { get; set; }
DatabaseFacade Database { get; }
DbSet<User> OldUsers { get; set; }
EntityEntry<T> Entry<T>(T entry) where T : class;
EntityEntry<TEntity> Attach<TEntity>(TEntity entity) where TEntity : class;
DbSet<TEntity> Set<TEntity>() where TEntity : class;
DbSet<NotificationTemplates> NotificationTemplates { get; set; }
void Seed();
DbSet<MovieRequests> MovieRequests { get; set; }
DbSet<TvRequests> TvRequests { get; set; }
DbSet<ChildRequests> ChildRequests { get; set; }
DbSet<MovieIssues> MovieIssues { get; set; }
DbSet<TvIssues> TvIssues { get; set; }
DbSet<EmailTokens> EmailTokens { get; set; }
}
}

View file

@ -19,28 +19,20 @@ namespace Ombi.Store.Context
Database.Migrate();
// Add the notifcation templates
AddAllTemplates();
}
public DbSet<NotificationTemplates> NotificationTemplates { get; set; }
public DbSet<GlobalSettings> Settings { get; set; }
public DbSet<User> OldUsers { get; set; }
public DbSet<PlexContent> PlexContent { get; set; }
public DbSet<RadarrCache> RadarrCache { get; set; }
public DbSet<NotificationTemplates> NotificationTemplates { get; set; }
public DbSet<MovieRequests> MovieRequests { get; set; }
public DbSet<TvRequests> TvRequests { get; set; }
public DbSet<ChildRequests> ChildRequests { get; set; }
public DbSet<MovieIssues> MovieIssues { get; set; }
public DbSet<TvIssues> TvIssues { get; set; }
public DbSet<EmailTokens> EmailTokens { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
@ -48,7 +40,7 @@ namespace Ombi.Store.Context
}
private void AddAllTemplates()
public void Seed()
{
// Check if templates exist
var templates = NotificationTemplates.ToList();

View file

@ -1,18 +0,0 @@
using System;
using System.ComponentModel.DataAnnotations.Schema;
namespace Ombi.Store.Entities
{
[Table("EmailTokens")]
public class EmailTokens : Entity
{
public Guid Token { get; set; }
public int UserId { get; set; }
public DateTime ValidUntil { get; set; }
public bool Used { get; set; }
public DateTime DateUsed { get; set; }
[ForeignKey(nameof(UserId))]
public User User { get; set; }
}
}

View file

@ -10,13 +10,13 @@ namespace Ombi.Store.Entities.Requests
public bool Approved { get; set; }
public DateTime RequestedDate { get; set; }
public bool Available { get; set; }
public int RequestedUserId { get; set; }
public string RequestedUserId { get; set; }
public bool? Denied { get; set; }
public string DeniedReason { get; set; }
public RequestType RequestType { get; set; }
[ForeignKey(nameof(RequestedUserId))]
public User RequestedUser { get; set; }
public OmbiUser RequestedUser { get; set; }
[NotMapped]

View file

@ -34,25 +34,25 @@ using Ombi.Helpers;
namespace Ombi.Store.Entities
{
public class User : Entity
{
public string Username { get; set; }
public string Alias { get; set; }
public string ClaimsSerialized { get; set; }
public string EmailAddress { get; set; }
public string Password { get; set; }
public byte[] Salt { get; set; }
public UserType UserType { get; set; }
//public class User : Entity
//{
// public string Username { get; set; }
// public string Alias { get; set; }
// public string ClaimsSerialized { get; set; }
// public string EmailAddress { get; set; }
// public string Password { get; set; }
// public byte[] Salt { get; set; }
// public UserType UserType { get; set; }
[NotMapped]
public string UserAlias => string.IsNullOrEmpty(Alias) ? Username : Alias;
// [NotMapped]
// public string UserAlias => string.IsNullOrEmpty(Alias) ? Username : Alias;
[NotMapped]
public List<Claim> Claims {
get => JsonConvert.DeserializeObject<List<Claim>>(ClaimsSerialized, new ClaimConverter());
set => ClaimsSerialized = JsonConvert.SerializeObject(value, new ClaimConverter());
}
}
// [NotMapped]
// public List<Claim> Claims {
// get => JsonConvert.DeserializeObject<List<Claim>>(ClaimsSerialized, new ClaimConverter());
// set => ClaimsSerialized = JsonConvert.SerializeObject(value, new ClaimConverter());
// }
//}
public enum UserType
{

View file

@ -10,7 +10,7 @@ using Ombi.Store.Entities;
namespace Ombi.Store.Migrations
{
[DbContext(typeof(OmbiContext))]
[Migration("20170712080109_Initial")]
[Migration("20170719072204_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -125,28 +125,6 @@ namespace Ombi.Store.Migrations
b.ToTable("AspNetUserTokens");
});
modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<DateTime>("DateUsed");
b.Property<Guid>("Token");
b.Property<bool>("Used");
b.Property<int>("UserId");
b.Property<DateTime>("ValidUntil");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("EmailTokens");
});
modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b =>
{
b.Property<int>("Id")
@ -312,7 +290,7 @@ namespace Ombi.Store.Migrations
b.Property<DateTime>("RequestedDate");
b.Property<int>("RequestedUserId");
b.Property<string>("RequestedUserId");
b.Property<string>("Title");
@ -374,7 +352,7 @@ namespace Ombi.Store.Migrations
b.Property<DateTime>("RequestedDate");
b.Property<int>("RequestedUserId");
b.Property<string>("RequestedUserId");
b.Property<string>("Status");
@ -437,30 +415,6 @@ namespace Ombi.Store.Migrations
b.ToTable("TvRequests");
});
modelBuilder.Entity("Ombi.Store.Entities.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("Alias");
b.Property<string>("ClaimsSerialized");
b.Property<string>("EmailAddress");
b.Property<string>("Password");
b.Property<byte[]>("Salt");
b.Property<int>("UserType");
b.Property<string>("Username");
b.HasKey("Id");
b.ToTable("OldUsers");
});
modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b =>
{
b.Property<int>("Id")
@ -542,14 +496,6 @@ namespace Ombi.Store.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b =>
{
b.HasOne("Ombi.Store.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b =>
{
b.HasOne("Ombi.Store.Entities.PlexContent")
@ -565,10 +511,9 @@ namespace Ombi.Store.Migrations
.HasForeignKey("ParentRequestId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Ombi.Store.Entities.User", "RequestedUser")
b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser")
.WithMany()
.HasForeignKey("RequestedUserId")
.OnDelete(DeleteBehavior.Cascade);
.HasForeignKey("RequestedUserId");
});
modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b =>
@ -585,10 +530,9 @@ namespace Ombi.Store.Migrations
modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b =>
{
b.HasOne("Ombi.Store.Entities.User", "RequestedUser")
b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser")
.WithMany()
.HasForeignKey("RequestedUserId")
.OnDelete(DeleteBehavior.Cascade);
.HasForeignKey("RequestedUserId");
});
modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b =>

View file

@ -146,25 +146,6 @@ namespace Ombi.Store.Migrations
table.PrimaryKey("PK_TvRequests", x => x.Id);
});
migrationBuilder.CreateTable(
name: "OldUsers",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Alias = table.Column<string>(nullable: true),
ClaimsSerialized = table.Column<string>(nullable: true),
EmailAddress = table.Column<string>(nullable: true),
Password = table.Column<string>(nullable: true),
Salt = table.Column<byte[]>(nullable: true),
UserType = table.Column<int>(nullable: false),
Username = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_OldUsers", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AspNetRoleClaims",
columns: table => new
@ -251,6 +232,39 @@ namespace Ombi.Store.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "MovieRequests",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Approved = table.Column<bool>(nullable: false),
Available = table.Column<bool>(nullable: false),
Denied = table.Column<bool>(nullable: true),
DeniedReason = table.Column<string>(nullable: true),
ImdbId = table.Column<string>(nullable: true),
IssueId = table.Column<int>(nullable: true),
Overview = table.Column<string>(nullable: true),
PosterPath = table.Column<string>(nullable: true),
ReleaseDate = table.Column<DateTime>(nullable: false),
RequestType = table.Column<int>(nullable: false),
RequestedDate = table.Column<DateTime>(nullable: false),
RequestedUserId = table.Column<string>(nullable: true),
Status = table.Column<string>(nullable: true),
TheMovieDbId = table.Column<int>(nullable: false),
Title = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_MovieRequests", x => x.Id);
table.ForeignKey(
name: "FK_MovieRequests_AspNetUsers_RequestedUserId",
column: x => x.RequestedUserId,
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "PlexSeasonsContent",
columns: table => new
@ -273,29 +287,6 @@ namespace Ombi.Store.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "EmailTokens",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
DateUsed = table.Column<DateTime>(nullable: false),
Token = table.Column<Guid>(nullable: false),
Used = table.Column<bool>(nullable: false),
UserId = table.Column<int>(nullable: false),
ValidUntil = table.Column<DateTime>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_EmailTokens", x => x.Id);
table.ForeignKey(
name: "FK_EmailTokens_OldUsers_UserId",
column: x => x.UserId,
principalTable: "OldUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ChildRequests",
columns: table => new
@ -310,7 +301,7 @@ namespace Ombi.Store.Migrations
ParentRequestId = table.Column<int>(nullable: false),
RequestType = table.Column<int>(nullable: false),
RequestedDate = table.Column<DateTime>(nullable: false),
RequestedUserId = table.Column<int>(nullable: false),
RequestedUserId = table.Column<string>(nullable: true),
Title = table.Column<string>(nullable: true)
},
constraints: table =>
@ -323,42 +314,37 @@ namespace Ombi.Store.Migrations
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ChildRequests_OldUsers_RequestedUserId",
name: "FK_ChildRequests_AspNetUsers_RequestedUserId",
column: x => x.RequestedUserId,
principalTable: "OldUsers",
principalTable: "AspNetUsers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "MovieRequests",
name: "MovieIssues",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Approved = table.Column<bool>(nullable: false),
Available = table.Column<bool>(nullable: false),
Denied = table.Column<bool>(nullable: true),
DeniedReason = table.Column<string>(nullable: true),
ImdbId = table.Column<string>(nullable: true),
Description = table.Column<string>(nullable: true),
IssueId = table.Column<int>(nullable: true),
Overview = table.Column<string>(nullable: true),
PosterPath = table.Column<string>(nullable: true),
ReleaseDate = table.Column<DateTime>(nullable: false),
RequestType = table.Column<int>(nullable: false),
RequestedDate = table.Column<DateTime>(nullable: false),
RequestedUserId = table.Column<int>(nullable: false),
Status = table.Column<string>(nullable: true),
TheMovieDbId = table.Column<int>(nullable: false),
Title = table.Column<string>(nullable: true)
MovieId = table.Column<int>(nullable: false),
Subect = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_MovieRequests", x => x.Id);
table.PrimaryKey("PK_MovieIssues", x => x.Id);
table.ForeignKey(
name: "FK_MovieRequests_OldUsers_RequestedUserId",
column: x => x.RequestedUserId,
principalTable: "OldUsers",
name: "FK_MovieIssues_MovieRequests_IssueId",
column: x => x.IssueId,
principalTable: "MovieRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_MovieIssues_MovieRequests_MovieId",
column: x => x.MovieId,
principalTable: "MovieRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
@ -411,34 +397,6 @@ namespace Ombi.Store.Migrations
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "MovieIssues",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Description = table.Column<string>(nullable: true),
IssueId = table.Column<int>(nullable: true),
MovieId = table.Column<int>(nullable: false),
Subect = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_MovieIssues", x => x.Id);
table.ForeignKey(
name: "FK_MovieIssues_MovieRequests_IssueId",
column: x => x.IssueId,
principalTable: "MovieRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
name: "FK_MovieIssues_MovieRequests_MovieId",
column: x => x.MovieId,
principalTable: "MovieRequests",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "EpisodeRequests",
columns: table => new
@ -491,11 +449,6 @@ namespace Ombi.Store.Migrations
table: "AspNetUserRoles",
column: "RoleId");
migrationBuilder.CreateIndex(
name: "IX_EmailTokens_UserId",
table: "EmailTokens",
column: "UserId");
migrationBuilder.CreateIndex(
name: "EmailIndex",
table: "AspNetUsers",
@ -575,9 +528,6 @@ namespace Ombi.Store.Migrations
migrationBuilder.DropTable(
name: "AspNetUserTokens");
migrationBuilder.DropTable(
name: "EmailTokens");
migrationBuilder.DropTable(
name: "GlobalSettings");
@ -602,9 +552,6 @@ namespace Ombi.Store.Migrations
migrationBuilder.DropTable(
name: "AspNetRoles");
migrationBuilder.DropTable(
name: "AspNetUsers");
migrationBuilder.DropTable(
name: "PlexContent");
@ -621,7 +568,7 @@ namespace Ombi.Store.Migrations
name: "TvRequests");
migrationBuilder.DropTable(
name: "OldUsers");
name: "AspNetUsers");
}
}
}

View file

@ -124,28 +124,6 @@ namespace Ombi.Store.Migrations
b.ToTable("AspNetUserTokens");
});
modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<DateTime>("DateUsed");
b.Property<Guid>("Token");
b.Property<bool>("Used");
b.Property<int>("UserId");
b.Property<DateTime>("ValidUntil");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("EmailTokens");
});
modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b =>
{
b.Property<int>("Id")
@ -311,7 +289,7 @@ namespace Ombi.Store.Migrations
b.Property<DateTime>("RequestedDate");
b.Property<int>("RequestedUserId");
b.Property<string>("RequestedUserId");
b.Property<string>("Title");
@ -373,7 +351,7 @@ namespace Ombi.Store.Migrations
b.Property<DateTime>("RequestedDate");
b.Property<int>("RequestedUserId");
b.Property<string>("RequestedUserId");
b.Property<string>("Status");
@ -436,30 +414,6 @@ namespace Ombi.Store.Migrations
b.ToTable("TvRequests");
});
modelBuilder.Entity("Ombi.Store.Entities.User", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("Alias");
b.Property<string>("ClaimsSerialized");
b.Property<string>("EmailAddress");
b.Property<string>("Password");
b.Property<byte[]>("Salt");
b.Property<int>("UserType");
b.Property<string>("Username");
b.HasKey("Id");
b.ToTable("OldUsers");
});
modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b =>
{
b.Property<int>("Id")
@ -541,14 +495,6 @@ namespace Ombi.Store.Migrations
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b =>
{
b.HasOne("Ombi.Store.Entities.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade);
});
modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b =>
{
b.HasOne("Ombi.Store.Entities.PlexContent")
@ -564,10 +510,9 @@ namespace Ombi.Store.Migrations
.HasForeignKey("ParentRequestId")
.OnDelete(DeleteBehavior.Cascade);
b.HasOne("Ombi.Store.Entities.User", "RequestedUser")
b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser")
.WithMany()
.HasForeignKey("RequestedUserId")
.OnDelete(DeleteBehavior.Cascade);
.HasForeignKey("RequestedUserId");
});
modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b =>
@ -584,10 +529,9 @@ namespace Ombi.Store.Migrations
modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b =>
{
b.HasOne("Ombi.Store.Entities.User", "RequestedUser")
b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser")
.WithMany()
.HasForeignKey("RequestedUserId")
.OnDelete(DeleteBehavior.Cascade);
.HasForeignKey("RequestedUserId");
});
modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b =>

View file

@ -4,9 +4,9 @@ using Ombi.Store.Entities;
namespace Ombi.Store.Repository
{
public interface ITokenRepository
{
Task CreateToken(EmailTokens token);
Task<EmailTokens> GetToken(Guid tokenId);
}
//public interface ITokenRepository
//{
// Task CreateToken(EmailTokens token);
// Task<EmailTokens> GetToken(Guid tokenId);
//}
}

View file

@ -4,13 +4,13 @@ using Ombi.Store.Entities;
namespace Ombi.Store.Repository
{
public interface IUserRepository
{
Task CreateUser(User user);
Task<User> GetUser(string username);
Task<IEnumerable<User>> GetUsers();
Task DeleteUser(User user);
Task<User> UpdateUser(User user);
Task<User> GetUser(int userId);
}
//public interface IUserRepository
//{
// Task CreateUser(User user);
// Task<User> GetUser(string username);
// Task<IEnumerable<User>> GetUsers();
// Task DeleteUser(User user);
// Task<User> UpdateUser(User user);
// Task<User> GetUser(int userId);
//}
}

View file

@ -6,25 +6,25 @@ using System.Threading.Tasks;
namespace Ombi.Store.Repository
{
public class TokenRepository : ITokenRepository
{
public TokenRepository(IOmbiContext db)
{
Db = db;
}
//public class TokenRepository : ITokenRepository
//{
// public TokenRepository(IOmbiContext db)
// {
// Db = db;
// }
private IOmbiContext Db { get; }
// private IOmbiContext Db { get; }
public async Task CreateToken(EmailTokens token)
{
token.Token = Guid.NewGuid();
await Db.EmailTokens.AddAsync(token);
await Db.SaveChangesAsync();
}
// public async Task CreateToken(EmailTokens token)
// {
// token.Token = Guid.NewGuid();
// await Db.EmailTokens.AddAsync(token);
// await Db.SaveChangesAsync();
// }
public async Task<EmailTokens> GetToken(Guid tokenId)
{
return await Db.EmailTokens.FirstOrDefaultAsync(x => x.Token == tokenId);
}
}
// public async Task<EmailTokens> GetToken(Guid tokenId)
// {
// return await Db.EmailTokens.FirstOrDefaultAsync(x => x.Token == tokenId);
// }
//}
}

View file

@ -34,53 +34,53 @@ using Ombi.Store.Entities;
namespace Ombi.Store.Repository
{
public class UserRepository : IUserRepository
{
public UserRepository(IOmbiContext ctx)
{
Db = ctx;
}
//public class UserRepository : IUserRepository
//{
// public UserRepository(IOmbiContext ctx)
// {
// Db = ctx;
// }
private IOmbiContext Db { get; }
// private IOmbiContext Db { get; }
public async Task<User> GetUser(string username)
{
var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Username.ToLower() == username.ToLower());
Db.Entry(user).Reload();
return user;
}
// public async Task<User> GetUser(string username)
// {
// var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Username.ToLower() == username.ToLower());
// Db.Entry(user).Reload();
// return user;
// }
public async Task<User> GetUser(int userId)
{
var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Id == userId);
Db.Entry(user).Reload();
return user;
}
// public async Task<User> GetUser(int userId)
// {
// var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Id == userId);
// Db.Entry(user).Reload();
// return user;
// }
public async Task CreateUser(User user)
{
Db.OldUsers.Add(user);
await Db.SaveChangesAsync();
}
// public async Task CreateUser(User user)
// {
// Db.OldUsers.Add(user);
// await Db.SaveChangesAsync();
// }
public async Task<IEnumerable<User>> GetUsers()
{
return await Db.OldUsers.ToListAsync();
}
// public async Task<IEnumerable<User>> GetUsers()
// {
// return await Db.OldUsers.ToListAsync();
// }
public async Task DeleteUser(User user)
{
Db.OldUsers.Remove(user);
await Db.SaveChangesAsync();
}
// public async Task DeleteUser(User user)
// {
// Db.OldUsers.Remove(user);
// await Db.SaveChangesAsync();
// }
public async Task<User> UpdateUser(User user)
{
Db.Entry(user).State = EntityState.Modified;
Db.Entry(user).Property(x => x.Salt).IsModified = false;
Db.Entry(user).Property(x => x.Password).IsModified = false;
await Db.SaveChangesAsync();
return user;
}
}
// public async Task<User> UpdateUser(User user)
// {
// Db.Entry(user).State = EntityState.Modified;
// Db.Entry(user).Property(x => x.Salt).IsModified = false;
// Db.Entry(user).Property(x => x.Password).IsModified = false;
// await Db.SaveChangesAsync();
// return user;
// }
//}
}